大学C语言课本课后习题相应答案及详细解答_大学课本课后习题答案
大学C语言课本课后习题相应答案及详细解答由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“大学课本课后习题答案”。
5-1
#include“stdio.h” void main(){ char c1,c2;printf(“c1:”);c1=getchar();if(c1>='a'&&c1='A'&&c1%cn“,c2);}
5-2 #include”stdio.h“ void main(){ char c;printf(”c:“);c=getchar();if(c>='A'&&c
if(c=='A')printf(”没有前面的字母!“);
else if(c=='Z')printf(”没有后面的字母!“);
else printf(”前面的字母=%c,后面的字母=%c“,c-1,c+1);printf(”n“);}
5-3 #include”stdio.h“ void main(){ int s;char g;printf(”s:“);scanf(”%d“,&s);if(s>=0&&s
switch(s/10){
case 9:
case 10: g='A';break;
case 8: g='B';break;
case 7: g='C';break;
case 6: g='D';break;
default: g='E';
}
printf(”g=%cn“,g);} else printf(”成绩不在百分制范围内!n“);}5-4 #include”stdio.h“ void main(){ int y,m,d,dok;int yy,mm,dd;printf(”y,m,d:“);scanf(”%d,%d,%d“,&y,&m,&d);
switch(m){
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
if(d>0&&d
else dok=0;
break;
case 4: case 6: case 9: case 11:
if(d>0&&d
else dok=0;
break;
case 2: if(y%4==0&&y%100!=0||y%400==0)
if(d>0&&d
else dok=0;
else
if(d>0&&d
else dok=0;
break;
default: dok=0;
}
if(dok==0)printf(”月份或日期不对!n“);
else{
switch(dok){
case 1: if(d==28){yy=y;dd=1;mm=m+1;}
else{yy=y;dd=d+1;mm=m;}
break;
case 2:if(d==29){yy=y;dd=1;mm=m+1;}
else{yy=y;dd=d+1;mm=m;}
break;
case
3:if(d==30){yy=y;dd=1;mm=m+1;}
else{yy=y;dd=d+1;mm=m;}
break;
case 4:if(d==31)
if(m==12){yy=y+1;dd=1;mm=1;}
else {yy=y;dd=1;mm=m+1;}
else{yy=y;dd=d+1;mm=m;}
break;
}
printf(”Tomorrow:%d年%d月%d日n“,yy,mm,dd);
} }
5-5
#include”stdio.h“ void main(){ int a,b,c,t;printf(”a,b,c:“);scanf(”%d,%d,%d“,&a,&b,&c);if(a+b>c&&b+c>a&&a+c>b){
if(a>b){t=a;a=b;b=t;}
if(a>c){t=a;a=c;c=t;}
if(b>c){t=b;b=c;c=t;}
if(a==b&&b==c)printf(”等边三角形.“);
else if(a==b||b==c||a==c)printf(”等腰角形.“);
else if(c*c==a*a+b*b)printf(”直角三角形.“);
else printf(”任意三角形.“);
printf(”n“);} else printf(”不能构成三角形!n“);}6-1 #include”stdio.h“ void main(){ int a,b,m,n,k;printf(”m,n:“);scanf(”%d,%d“,&m,&n);
a=m;b=n;k=a%b;while(k){
a=b;
b=k;
k=a%b;} printf(”%dn“,(m*n/b));}
6-2 #include”stdio.h“ void main(){ int n;int i,j,s;printf(”n=“);scanf(”%d“,&n);for(i=1;i
s=0;
for(j=1;j
if(i%j==0)s=s+j;
if(s==i){
printf(”%d:“,i);
for(j=1;j
if(i%j==0)printf(”%d “,j);
printf(”n“);
} } } 6-3
#include”stdio.h“ #include”math.h“ void main(){ double x,y,zd,zx,x1,x2;zd=zx=50;for(x=0;x
y=2*pow(x,3)-3*pow(x,4)+6*pow(x,5)-4*x+50;
if(y>zd){ zd=y;x1=x;}
if(y
6-4
#include”stdio.h“ void main(){ double x,sum=0,a,b,c;int i;printf(”x=“);scanf(”%lf“,&x);a=x;b=1.0;c=1.0;for(i=1;i
sum=sum+a/(b*c);
a=a*x*x;
b=b+2;
c=c*i;} printf(”y(%.2lf)=%lfn“,x,sum);} 7-1 /*选择排序*/ #include”stdio.h“ void main(){ int i,j,n,k,temp;int a[10];printf(”n(
k=i;
for(j=i+1;j
if(a[j]?*/
if(k!=i){
temp=a[i];
a[i]=a[k];
a[k]=temp;
} } printf(“Ordered:”);for(i=0;i
7-2 #include“stdio.h” void main(){ int a[3][3];int i,j,s=1;printf(“Input:n”);for(i=0;i
for(j=0;j
scanf(“%d”,&a[i][j]);
if(i==j)s=s*a[i][j];
} printf(“s=%dn”,s);} 7-3
/*杨辉三角*/ #include“stdio.h” void main(){ int x[7][7];int i,j;for(i=0;i
x[i][0]=1;
x[i][i]=1;} for(i=2;i
for(j=1;j
x[i][j]=x[i-1][j]+x[i-1][j-1];for(i=0;i
for(j=0;j
printf(“%3d”,x[i][j]);
printf(“n”);}
}
7-4
#include #include void main(){ char str[21];int i,j;printf(“str:”);gets(str);for(i=0,j=strlen(str)-1;i
if(str[i]!=str[j])break;if(i>j)printf(“%s是回文n”,str);else printf(“%s不是回文n”,str);} 7-5 /*输入一维数组的10个元素,并将最小值与第1个数交换,最大值与最后一个数交换,然后输出交换后的结果*/ #include void main(){ int a[10],i,zx,zd;
printf(“Input:n”);zx=zd=0;for(i=0;i
scanf(“%d”,&a[i]);
if(a[i]
if(a[i]>a[zd])zd=i;} if(zx!=0){
int t;
t=a[0];
a[0]=a[zx];
a[zx]=t;} if(zd!=9){
int t;
t=a[9];
a[9]=a[zd];
a[zd]=t;} for(i=0;i
printf(“%d ”,a[i]);printf(“n”);}
8-2
#include“stdio.h”
double xexp(double x,int n){ double c;if(n==0)c=1.0;else c=x*xexp(x,n-1);return c;}
void main(){ int n;double x;
printf(“x:”);scanf(“%lf”,&x);printf(“n:”);scanf(“%d”,&n);printf(“Result=%gn”,xexp(x,n));}
8-3
#include“stdio.h”
int find(int x[],int n,int y){ int i,pos=-1;for(i=0;i
if(x[i]==y)pos=i;return pos;}
void main(){ int a[10]={11,1,13,15,18,7,19,27,3,8};int i,y,pos;
for(i=0;i
printf(“ny:”);scanf(“%d”,&y);pos=find(a,10,y);if(pos==-1)printf(“Not found!n”);else printf(“Position=%dn”,pos);}
8-1 #include“stdio.h”
#include“conio.h”
//getch()#include“stdlib.h” //srand(),rand(),system(“cls”)#include“time.h”
//time()void main(){ void init(int a[][5],int m,int n);void input(int a[][5],int m,int n);
void output(int a[][5],int m,int n);int min(int b[][5],int m,int n);int a[5][5],ch='0';while(1){
system(“cls”);//清屏
printf(“1.初始化
2.键盘输入
0.结束程序:”);
ch=getch();//头文件conio.h
printf(“n”);
if(ch=='0')break;
else if(ch=='1'){
init(a,5,5);
output(a,5,5);
}
else if(ch=='2'){
input(a,5,5);
output(a,5,5);
}
else printf(“Error!n”);
printf(“Min element:%dn”,min(a,5,5));
printf(“按任意键继续!n”);
getch();} } void init(int a[][5],int m,int n){ int i,j;srand(time(0));//time(0)表示以当前的时间做种子,增加每次运行的随机性
for(i=0;i
for(j=0;j
a[i][j]=rand()%100;//随机数范围:0~32767,将它控制在0~99的范围
}
void input(int a[][5],int m,int n){
int i,j;printf(“Input Array 5X5:n”);for(i=0;i
for(j=0;j
scanf(“%d”,&a[i][j]);}
void output(int a[][5],int m,int n){ int i,j;printf(“Output Array 5X5:n”);for(i=0;i
for(j=0;j
printf(“%2d ”,a[i][j]);
printf(“n”);} }
int min(int b[][5],int m,int n){ int i,j,zx;zx=b[0][0];for(i=0;i
for(j=0;j
if(i==j&&b[i][j]
8-4 #include“stdio.h” float pave,nave;void saver(float a[],int n){ int i,z,f;float psum,nsum;psum=nsum=0.0;z=f=0;for(i=0;i
if(a[i]
else if(a[i]>0){psum=psum+a[i];f++;}
else continue;pave=(z!=0?psum/z:0.0);nave=(f!=0?nsum/f:0.0);} void main(){ float a[10]={1.0,11.0,3.0,-1.5,-5.5,-2};
saver(a,10);printf(“pave=%.1f,nave=%.2fn”,pave,nave);}
8-5
#include“stdio.h” #include“math.h” void p1(int a,int b){
printf(“has two equal roots:%8.4fn”,-b/(2*a));}
void p2(int a,int b, int disc){ float x1,x2;x1=(-b+sqrt(disc))/(2*a);x2=(-b-sqrt(disc))/(2*a);printf(“Has distant real roots:%8.4f and %8.4fn”,x1,x2);}
void p3(int a,int b, int disc){ float real,image;real=-b/(2*a);image=sqrt(-disc)/(2*a);printf(“Has complex roots:n”);printf(“%8.4f+%8.4fin”,real,image);printf(“%8.4f-%8.4fin”,real,image);}
void main()
{
int a,b,c,disc;printf(“a,b,c:”);scanf(“%d,%d,%d”,&a,&b,&c);
disc=b*b-4*a*c;if(fabs(disc)1e-6)p2(a,b,disc);else p3(a,b,disc);}
8-6 #include“stdio.h” #include“stdlib.h” #include“conio.h” #include“time.h” void main(){ void printaverage(int score[][5],int m,int n);
void printname(int score[][5],int m,int n);int score[10][5];int i,j;srand(time(0));for(i=0;i
for(j=0;j
score[i][j]=50+rand()%50+1;printf(“Output Students' score:n”);printf(“Course 1
5n”);printf(“-------------------------n”);for(i=0;i
printf(“No.%2d:”,i+1);
for(j=0;j
printf(“%3d ”,score[i][j]);
printf(“n”);} printaverage(score,10,5);printname(score,10,5);} void printaverage(int score[][5],int m,int n){ int i,j,sum;printf(“nAverage score:n”);for(i=0;i
sum=0;
for(j=0;j
sum=sum+score[i][j];
printf(“No.%d:%.1fn”,i+1,sum/5.0);} } void printname(int score[][5],int m,int n){ int i,j,max0,row0;
for(j=0;j
max0=score[0][j];
for(i=0;i
if(score[i][j]>max0){
max0=score[i][j];
row0=i;
}
printf(“Course %d,max score=%d,student:No.%dn”,j+1,max0,row0+1);} }