C程序设计第七章课后练习答案

合集下载

C语言程序设计教程 第七章 课后习题参考答案

C语言程序设计教程 第七章 课后习题参考答案
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
printf("%4d",a[i][j]);
}
printf("\n");
}
for(i=0;i<M;iபைடு நூலகம்+)
{
for(j=0;j<N;j++)
{
if(i==j)
m+=a[i][j];
}
}
printf("主对角线元素之和为:%d\n",m);
批注本地保存成功开通会员云端永久保存去开通
P198 3求主、副对角线元素之和
#include<stdio.h>
#define M 4
#define N 4
int main()
{
int a[M][N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
int i,j,m=0,n=0;
{
if(a[j]>a[j+1])
{
tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
}
}
}
printf("\n");
printf("排序后的数组为:\n");
for(i=0;i<N;i++)
{
printf("%4d",a[i]);
}
}
P76 3成绩
#include<stdio.h>
void input(int cla[50][3],int n);

c语言《程序设计基础》课后习题参考答案与解析

c语言《程序设计基础》课后习题参考答案与解析

c语言《程序设计基础》课后习题参考答案与解析《程序设计基础》习题参考答案与部分解析第1章 C 语言概述一、填空a) C源程序的基本单位是函数。

b) 一个C程序中至少应包括一个 main函数。

c) 在C语言中,输出操作是有库函数 printf( )函数完成。

二、单选题1、A2、C3、B解析:第1题答案:A 。

因为一个C程序总是从main函数开始执行的,而不论main函数在程序中的位置。

且到main函数结束。

第2题答案:C 。

因为 main函数没有限制必须位于程序的最前面。

C程序书写自由,一行内可写几个语句。

在对一个C 程序进行编译的过程中,无法检查注释当中的拼写错误。

不过C语言本身并没有输入输出语句,输入输出是由函数完成的。

第3题答案:B。

因为一个C语言程序是由若干个函数组成的。

但至少包含一个main 函数,且main函数的位置不限。

三、编程题1、编写一个输出“Welcome to C!”信息的小程序。

解:程序如下#include “stdio.h”main( ){1printf(“Welcome to C!”) ;}2、已知三角形的三边长分别为3,4,5,试用海轮公式编程求其面积。

海伦公式为:S?= ,其中s= (a+b+s)/2 ;解:程序如下#include “math.h”#include “stdio.h”main( ){int a , b , c ; /* a ,b,c 3个整型变量表示三角形的3条边。

*/float s ,s1 ; /* s1作为面积变量,s 作为中间变量是都应该是实形*/a=3 ; b= 4; c=5 ;s= (a+b+c)/2.0 ;s1= sqrt(s*(s-a)*(s-b)*(s-c)); /* sqrt函数完成开平方根功能。

*/printf(“area=%f\n”,s1);}2第2章程序设计基础知识一、单选题1、C2、A3、C4、A5、C6、C7、D8、C9、D 10、A 11、D 12、A 13、C 14、C 15、B A 16、B 17 D解析:1. 答案:C。

《C语言程序设计教程》第三版课后习题参考答案

《C语言程序设计教程》第三版课后习题参考答案

《C语言程序设计教程》第三版课后习题参考答案C语言程序设计教程第三版课后习题参考答案第一章:C语言概述1.1 C语言的特点答案:C语言是一种通用的、面向过程的程序设计语言,具有高效、简洁、灵活等特点。

它提供了丰富的程序设计元素和功能,适用于各种不同的应用领域。

1.2 C语言程序的基本结构答案:C语言程序由预处理指令、函数声明、函数定义、变量声明和语句组成。

其中,预处理指令用来引入头文件或定义宏,函数声明用来声明函数的名称和参数,函数定义用来实现函数的功能,变量声明用来声明变量的类型和名称,语句用来表达具体的计算过程。

1.3 C语言的数据类型答案:C语言提供了多种数据类型,包括基本类型(整型、浮点型、字符型等)和派生类型(数组、指针、结构体等)。

每种数据类型在内存中占据一定的存储空间,并具有特定的取值范围和操作规则。

1.4 C语言的运算符和表达式答案:C语言支持各种运算符和表达式,例如算术运算符(+、-、*、/等)、关系运算符(>、<、==等)、逻辑运算符(&&、||、!等)等。

通过运算符和表达式可以进行各种数值计算和逻辑判断。

第二章:基本数据类型与运算2.1 整型数据类型答案:C语言提供了不同长度的整型数据类型,包括有符号整型(int、long等)和无符号整型(unsigned int、unsigned long等)。

整型数据类型可以表示整数值,并具有不同的取值范围。

2.2 浮点型数据类型答案:C语言提供了浮点型数据类型(float、double等),用来表示带小数部分的实数值。

浮点型数据可以表示较大或较小的数值,并具有一定的精度。

2.3 字符型数据类型答案:C语言提供了字符型数据类型(char),用来表示单个字符。

字符型数据可以用于表示各种字符(包括字母、数字、符号等)。

2.4 布尔型数据类型答案:C语言不直接支持布尔型数据类型,但可以使用整型数据类型来表示布尔值(0表示假、非零表示真)。

C程序设计(第2版)第七章习题解答.doc

C程序设计(第2版)第七章习题解答.doc

C程序设计(第2版)第七章习题解答第七章动态内存分配习题一、基本概念与基础知识自测题7.1 填空题7.1.1 C/C++定义了4个内存区间:(1)、(2)、(3)和(4)。

答案:(1)代码区,存放程序代码;(2)全局变量与静态变量区,存放全局变量或对象(包括静态);(3)局部变量区即栈(stack)区,存放局部变量;(4)自由存储区(free store),即动态存储区或堆(heap)区。

7.1.2 静态定义的变量和对象用标识符命名,称为(1);而动态建立的称为(2),动态建立对象的初始化是通过(3)实现(4)。

答案:(1)命名对象(2)无名对象(3)初始化式(initializer)(4)显式初始化7.1.3 在用new运算符建立一个三维数组15*30*10时,使用了(1)个下标运算符,对应的用delete运算符注销这个三维数组时使用了(2)个下标运算符。

new返回的指针是指向(3)的指针。

答案:(1)3个(2)1个(3)30行10列的2位数组7.1.4 当动态分配失败,系统采用(1)来表示发生了异常。

如果new返回的指针丢失,则所分配的自由存储区空间无法收回,称为(2)。

这部分空间必须在(3)才能找回,这是因为无名对象的生命期(4)。

答案:(1)返回一个空指针(NULL)(2)内存泄漏(3)重新启动计算机后(4)并不依赖于建立它的作用域7.1.5 按语义的默认复制构造函数和默认复制赋值操作符实现的复制称为(1),假设类对象obj中有一个数据成员为指针,并为这个指针动态分配一个堆对象,如用obj1按成员语义拷贝了一个对象obj2,则obj2对应指针指向(2)。

答案:(1)浅拷贝(2)同一个堆对象7.1.6 单链表的结点包含两个域:(1)和(2)。

使用链表的最大的优点是(3),即使是动态数组也做不到这一点。

答案:(1)数据域(2)指针域(3)用多少空间,开多少空间7.1.7 进入单链表必须通过单链表的(1),如果它丢失则(2),内存也(3),在单链表中进行的查找只能是(4)。

c程序设计(谭浩强)第七章习题答案

c程序设计(谭浩强)第七章习题答案
{
int i;
float ave=0;
for(i=0;i<10;i++)
ave=ave+a[i][n]/10;
return ave;
}
void max(float a[][5]) //最高分的学生和课程
{
int i,j,row,colum;
float max=a[0][0];
for(i=0;i<10;i++)
# include <stdio.h>
# include<math.h>
# include<string.h>
/*int yue(int a,int b) //求最大公约数
{
int i,min;
min=a>b?b:a;
for(i=min;i>0;i--)
{
if(a%i==0&&b%i==0)
{
return i;
if((mid%2)!=1) //因职工号序号为奇数,故强制把序号转为奇数
mid-=1;
if(strcmp(b,a[mid])>0) //不能写b>a[mid]
{min=mid+2;}
else if(strcmp(b,a[mid])<0) //不能写b<a[mid]
{max=mid-2;}
else
{printf("职工姓名为:%s\n",a[mid-1]);break;}
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
printf("%-2d",b[i][j]);

C语言程序设计 (何钦铭 颜晖 著) 高等教育出版社第七章 课后答案

C语言程序设计 (何钦铭 颜晖 著) 高等教育出版社第七章 课后答案
/*找第max列中最小值所在行下标min*/
min=0;
for(j=0;j<n;j++)
if(a[j][max]<a[min][max])min=j;
if(min==i){flag=1;break;}
}
/*根据flag值输出结果*/
if(flag==1)printf("鞍点是a[%d][%d]=%d\n",min,max,a[min][max]);
{
int i,j,n,a[6][6],max,min,flag;
printf("Enter n :"); /*输入一个正整数n */
scanf("%d",&n);
printf("Enter %d integers :\n",n); /*输入一个n阶方阵,存储在数组a中*/
for(i=0;i<n;i++)
{
int i,j,n,a[6][6],flag;
printf("Enter n :"); /*输入一个正整数n */
scanf("%d",&n);
printf("Enter %d integers :\n",n); /*输入一个n阶方阵,存储在数组a中*/
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
if(a[i]>a[index1])index1=i;
if(a[i]<a[index2])index2=i;
}
/*交换位置:最大值与最后一个数交换,最小值与第一个数交换*/

C语言程序设计第四版第七章答案谭浩强

C语言程序设计第四版第七章答案谭浩强

C语言程序设计第四版第七章答案谭浩强第七章用函数实现模块化程序设计第七章函数7.1写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果两个整数由键盘输入。

ma某yuehu(m,n)intm,n;{inti=1,t;for(;i<=m&&i<=n;i++){if(m%i==0&&n%i==0)t=i;}return(t);}minbeihu(m,n)intm,n;{intj;if(m>=n)j=m;elej=n;for(;!(j%m==0&&j%n==0);j++);returnj;}main(){inta,b,ma某,min;printf("entertwonumberi:");canf("%d,%d",&a,&b);ma某=ma某yuehu(a,b);min=minbeihu(a,b);printf("ma某=%d,min=%d\n",ma某,min);}7.2求方程的根,用三个函数分别求当b2-4ac大于0、等于0、和小于0时的根,并输出结果。

从主函数输入a、b、c的值。

#include"math.h"floatyihigen(m,n,k)floatm,n,k;{float某1,某2;某1=(-n+qrt(k))/(2某m);某2=(-n-qrt(k))/(2某m);printf("twohigeni某1=%.3fand某2=%.3f\n",某1,某2);}floatdenggen(m,n)floatm,n;{float某;某=-n/(2某m);printf("denggeni某=%.3f\n",某);}第七章用函数实现模块化程序设计float某ugen(m,n,k)floatm,n,k;{float某,y;某=-n/(2某m);y=qrt(-k)/(2某m);printf("two某ugeni某1=%.3f+%.3fiand某2=%.3f-%.3fi\n",某,y,某,y);}main(){floata,b,c,q;printf("inputabci");canf("%f,%f,%f",&a,&b,&c);printf("\n");q=b某b-4某a某c;if(q>0)yihigen(a,b,q);eleif(q==0)denggen(a,b);ele某ugen(a,b,q);}7.3写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的消息。

程序设计基础课后答案 第七章

程序设计基础课后答案 第七章
if(array[i].bIsTeacher)//如果是老师,则输入工资和职称
{
cout<<"Input wage:";
cin>>array[i].fWage;
{
if(time==1)
total+=high;
else
{
high=high/2;
total=total+2*high;
}
}
cout<<"total="<<total<<"m,high="<<high/2<<"m./n";
}
8、有四个学生,上地理课时提出我国四大淡水湖的排序如下:
甲:洞庭湖最大,洪泽湖最小,鄱阳湖第三;
乙:洪泽湖最大,洞庭湖最小,鄱阳湖第二;太湖第三;
丙:洪泽湖最小,洞庭湖第三;
丁:鄱阳湖最大,太湖最小,洪泽湖第二;洞庭湖第三;
对于各个湖泊的地位,每个人只说对了一个。根据以上情况,编一个程序,让计算机判断各个湖泊应处在第几位。
【问题分析】用变量A,B,C,D分别表示洞庭湖,洪泽湖,鄱阳湖和太湖,变量的值表示第几大。让A,B,C,D分别从1到4变化,找出满足条件的解。由于4个变量的值各不相同,所以4个变量的和为10,积为24,为减少循环次数,用3个变量的值,即可确定第四个变量的值。根据题目中甲、乙、丙、丁4个学生所说的话,可以总结出下列关系式:
{
int A[40];
int pos=0;
int key=0; //数组初始化
for(int i=0;i<40;i++)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C程序设计(第三版)谭浩强著课后习题答案第7章
2009-05-16 10:56
7.7 打印“魔方阵”。

所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之
和均相等。

例如,三阶魔方阵为
8 1 6
3 5 7
4 9 2
要求打印出由1 到n2 的自然数构成的魔方阵。

/******************************************************************** **算法思路:魔方阵中各数的排列规律如下:
**(1)将1放在第一行中间一列
**(2)从2开始直到n×n止各数依次按下列规则存放:每一个数存放的行比前一个数的** 行数减1,列数加1
**(3)如果上一个数的行数为1,则下一个数的行数为n(指最下一行)
**(4)当上一个数的列数为n时,下一个数的列数应为1,行数减1
**(5)如果按上面的规则确定的位置数已有数,或者上一个数是第1行第n列时,则把
** 下一个数放在上一个数的下面
********************************************************************/ #include <stdio.h>
void main(){
int a[16][16],i,j,k,p,m,n;
/*初始化*/
p=1;
while(p==1){
printf("input n.(0<n<=15,n是奇数.)\n");
scanf("%d",&n);
if((n != 0) && (n<=15) && (n%2 != 0))
{
printf("矩阵阶数是%d\n",n);
p=0;
}
}
for(i=1;i<=n;i++)
for(j=1;j<=n;j++) a[i][j]=0;
/*建立魔方*/
j=n/2+1;
a[1][j]=1;
for(k=2;k<=n*n;k++)
{
i=i-1;
j=j+1;
if((i<1)&&(j>n)){
i=i+2;
j=j-1;
}
else{
if(i<1) i=n;
if(j>n) j=1;
}
if(a[i][j]==0) a[i][j]=k;
else{
i=i+2;
j=j-1;
a[i][j]=k;
}
}
/*输出*/
for(i=1;i<=n;i++){
for(j=1;j<=n;j++)
printf("%5d",a[i][j]);
printf("\n");
}
}
7.8 找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。

也可能没有鞍点。

#include <stdio.h>
#define N 10
#define M 10
void main(){
int i,j,k,m,n,flag1,flag2,a[N][M],max,maxi,maxj;
printf("\ninput row n:");
scanf("%d",&n);
printf("\ninput column m:");
scanf("%d",&m);
for(i=0;i<n;i++){
printf("第%d行?\n",i);
for(j=0;j<m;j++)
scanf("%d",&a[i][j]);
}
for(i=0;i<n;i++){
for(j=0;j<m;j++)
printf("%5d",a[i][j]);
printf("\n");
}
flag2=0;
for(i=0;i<n;i++){
max=a[i][0];
for(j=0;j<m;j++)
if(a[i][j]>max)
{
max=a[i][j];
maxj=j;
}
for(k=0,flag1=1;k<n && flag1;k++)
if(max>a[k][maxj]) flag1=0;
if(flag1){
printf("\n第%d行,第%d列的%d是鞍点\n",i,maxj,max);
flag2=1;
}
}
if(!flag2)
printf("\n矩阵中无鞍点!\n");
}
7.9 有15 个数按由大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。

如果该数不在数组中,则打印出“无此数”。

#include <stdio.h>
#define N 15
void main()
{
int x,top,bot,middle,succ;
int a[N]={1,3,5,7,9,11,12,35,46,57,68,79,80,91,102};
printf("Enter x:");
scanf("%d",&x);
succ=0;
top=0;bot=N-1;
if((x<a[0])||(x>a[N-1])) succ=-1;
while((succ==0)&&(top<=bot))
{
middle=(bot+top)/2;
if(x==a[middle])
{
succ=middle;
printf("%d location:%d\n",x,succ+1);
}
else if(x<a[middle]) bot=middle-1;
else top=middle+1;
}
if(succ==0||succ==-1)
printf("%d not in array.\n",x);
}
7.10 有一篇文章,共有3 行文字,每行有80 个字符。

要求分别统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数。

#include <stdio.h>
void main()
{ int i,j,upper,lower,digit,space,other;
char article[3][80];
i=j=upper=lower=digit=space=other=0;
for(i=0;i<3;i++)
{ printf("Input %d row:\n",i);
gets(article[i]);
for(j=0;j<80&&article[i][j]!='\0';j++)
{ if(article[i][j]>='A'&&article[i][j]<='Z')
upper++;
else if(article[i][j]>='a'&&article[i][j]<='z')
lower++;
else if(article[i][j]>='0'&&article[i][j]<='9')
digit++;
else if(article[i][j]==' ') space++;
else other++;
}
}
for(i=0;i<3;i++) puts(article[i]);
printf("upper=%d\n",upper);
printf("lower=%d\n",lower);
printf("digit=%d\n",digit);
printf("space=%d\n",space);
printf("other=%d\n",other);
}
7.11 打印以下图案:
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
#include <stdio.h>(可不写)
void main()
{
char a[6]="*****";
char space=' ';
int i,j,k;
for(i=0;i<5;i++)
{
for(j=0;j<i;j++)
printf("%c",space);
for(k=0;k<5;k++)
printf("%c",a[k]);
printf("\n");
}
}。

相关文档
最新文档