大学c语言课本课后习题相应答案及详细解答
![大学c语言课本课后习题相应答案及详细解答](https://img.360docs.net/imgc9/1nhyrvpndnr5z7wlzmu3xgbu5frpx72v-91.webp)
![大学c语言课本课后习题相应答案及详细解答](https://img.360docs.net/imgc9/1nhyrvpndnr5z7wlzmu3xgbu5frpx72v-22.webp)
5-1
#include"stdio.h" void main()
{
char c1,c2;
printf("c1:");
c1=getchar();
if(c1>='a'&&c1<='z') c2=c1-32;
else if(c1>='A'&&c1<='Z') c2=c1+32;
else c2=c1;
printf("=>%c\n",c2);
}
5-2
#include"stdio.h"
void main()
{
char c;
printf("c:");
c=getchar();
if(c>='A'&&c<='Z')
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<=100){
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=%c\n",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<=31) dok=4;
else dok=0;
break;
case 4: case 6: case 9: case 11:
if(d>0&&d<=30) dok=3;
else dok=0;
break;
case 2: if(y%4==0&&y%100!=0||y%400==0)
if(d>0&&d<=29)
dok=2;
else dok=0;
else
if(d>0&&d<=28)
dok=1;
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("%d\n",(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<=n;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<=2;x=x+0.2){
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 } printf("x=%f,max=%f\n",x1,zd); printf("x=%f,min=%f\n",x2,zx); } 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<=10;i++){ sum=sum+a/(b*c); a=a*x*x; b=b+2; c=c*i; } printf("y(%.2lf)=%lf\n",x,sum); } 7-1 /*选择排序*/ #include"stdio.h" void main() { int i,j,n,k,temp; int a[10]; printf("n(<10):"); scanf("%d",&n); printf("Original:"); for(i=0;i for(i=0;i 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 printf("\n"); } 7-2 #include"stdio.h" void main() { int a[3][3]; int i,j,s=1; printf("Input:\n"); for(i=0;i<3;i++) for(j=0;j<3;j++){ scanf("%d",&a[i][j]); if(i==j) s=s*a[i][j]; } printf("s=%d\n",s); } 7-3 /*杨辉三角*/ #include"stdio.h" void main() { int x[7][7]; int i,j; for(i=0;i<7;i++) { x[i][0]=1; x[i][i]=1; } for(i=2;i<7;i++) for(j=1;j x[i][j]=x[i-1][j]+x[i-1][j-1]; for(i=0;i<7;i++){ for(j=0;j<=i;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<=j;i++,j--) 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<10;i++){ scanf("%d",&a[i]);