b)?a:b;max=(max>c)?max:c;printf" />
C程序设计(第三版)谭浩强清华大学出版社课后习题答案第一章
1.5
# include
void main()
{
printf("* * * * * * * * *\n V ery good!\n* * * * * * * * *\n");
}
1.6
(法一)
#include
main()
{
int a,b,c,max;
scanf("%d,%d,%d",&a,&b,&c);
max=(a>b)?a:b;
max=(max>c)?max:c;
printf("max=%d\n",max);
}
(法二)
main()
{
int a,b,c,max;
scanf("%d,%d,%d",&a,&b,&c);
if(a>b&&a>c)
max=a;
else if (b>c)
max=b;
else
max=c;
printf("max=%d\n",max);
}
(法三)
# include
void main()
{
int max(int x,int y,int z);
int a,b,c,d;
scanf("%d,%d,%d",&a,&b,&c);
d=max(a,b,c);
printf("max=%d\n",d);
}
int max(int x,int y,int z)
{
int A,B;
if(x>y) A=x;
else A=y;
if(z>A) B=z;
else B=A;
return(B);
}
第三章
3.3
(1)(10)10=(12)8=(a)16
(2)(32)10=(40)8=(20)16
(3)(75)10=(113)8=(4b)16
(4)(-617)10=(176627)8=(fd97)16
(5)(-111)10=(177621)8=(ff91)16
(6)(2483)10=(4663)8=(963)16
(7)(-28654)10=(110022)8=(9012)16
(8)(21003)10=(51013)8=(520b)16
3.6
aabb (8)cc (8)abc
(7)AN
3.7
main()
{char c1='C',c2='h',c3='i',c4='n',c5='a';
c1+=4, c2+=4, c3+=4, c4+=4, c5+=4; printf("%c%c%c%c%c\n",c1,c2,c3,c4,c5); }
3.8
main()
{int c1,c2;
c1=97;c2=98;
printf("%c %c",c1,c2);
}
(1)=2.5
(2)=3.5
3.10
9,11,9,10
3.12
(1)24 (2)10 (3)60 (4)0 (5)0 (6)0
第四章
4.4
main()
{int a,b,c;
long int u,n;
float x,y,z;
char c1,c2;
a=3;b=4;c=5;
x=1.2;y=2.4;z=-3.6;
u=51274;n=128765;
c1='a';c2='b';
printf("\n");
printf("a=%2d b=%2d c=%2d\n",a,b,c);
printf("x=%8.6f,y=%8.6f,z=%9.6f\n",x,y,z);
printf("x+y=%5.2f y+z=%5.2f z+x=%5.2f\n",x+y,y+z,z+x); printf("u=%6ld n=%9ld\n",u,n);
printf("c1='%c'or %d(ASCII)\n",c1,c1);
printf("c2='%c'or %d(ASCII)\n",c2,c2);
}
4.5
57
5 7
67.856400,-789.123962
67.856400,-789.123962
67.86 -789.12,67.856400,-789.123962,67.856400,-789.123962 6.785640e+001,-7.89e+002
A,65,101,41
1234567,4553207,d687
65535,177777,ffff,-1
COMPUTER, COM
a=3 b=7/
x=8.5 y=71.82/
c1=A c2=a/
4.7
10 20Aa1.5 -3.75 +1.4,67.8/
(空3)10(空3)20Aa1.5(空1)-3.75(空1)(随意输入一个数),67.8回车
4.8
main()
{float pi,h,r,l,s,sq,sv,sz;
pi=3.1415926;
printf("input r,h\n");
scanf("%f,%f",&r,&h);
l=2*pi*r;
s=r*r*pi;
sq=4*pi*r*r;
sv=4.0/3.0*pi*r*r*r;
sz=pi*r*r*h;
printf("l=%6.2f\n",l);
printf("s=%6.2f\n",s);
printf("sq=%6.2f\n",sq);
printf("vq=%6.2f\n",sv);
printf("vz=%6.2f\n",sz);
}
4.9
main()
{float c,f;
scanf("%f",&f);
c=(5.0/9.0)*(f-32);
printf("c=%5.2f\n",c);
}
4.10
#include"stdio.h"
main()
{char c1,c2;
scanf("%c,%c",&c1,&c2);
putchar(c1);
putchar(c2);
printf("\n");
printf("%c%c\n",c1,c2);
第五章
5.3
(1)0 (2)1 (3)1 (4)0 (5)1
5.4
main()
{int a,b,c;
scanf("%d,%d,%d",&a,&b,&c); if(a
if(b printf("max=%d\n",c); else printf("max=%d\n",b); else if(a printf("max=%d\n",c); else printf("max=%d\n",a); } main() {int a,b,c,temp,max; scanf("%d,%d,%d",&a,&b,&c); temp=(a>b)?a:b; max=(c>temp)?c:temp; printf("max=%d",max); } 5.5 main() {int x,y; scanf("%d",&x); if(x<1)y=x; else if(x<10)y=2*x-1; else y=3*x-11; printf("y=%d",y); } 5.6 main() {int score,temp,logic; char grade; logic=1; while(logic) {scanf("%d",&score); if(score>=0&&score<=100)logic=0; } if(score==100) temp=9; else temp=(score-score%10)/10; switch(temp) {case 9:grade='A';break; case 8:grade='B';break; case 7:grade='C';break; case 6:grade='D';break; case 5: case 4: case 3: case 2: case 1: case 0:grade='E'; } printf"score=%d,grade=%c",score,grade); } 5.7 main() {long int num; int indiv,ten,hundred,thousand,ten_thousand,place; scanf("%ld",&num); if(num>9999) place=5; else if(num>999) place=4; else if(num>99) place=3; else if(num>9) place=2; else place=1; printf("place=%d\n",place); ten_thousand=num/10000; thousand=(num-ten_thousand*10000)/1000; hundred=(num-ten_thousand*10000-thousand*1000)/100; ten=(num-ten_thousand*10000-thousand*1000-hundred*100)/10; indiv=num-ten_thousand*10000-thousand*1000-hundred*100-ten*10; switch(place) {case 5:printf("%d,%d,%d,%d,%d\n",ten_thousand,thousand,hundred,ten,indiv); printf("%d,%d,%d,%d,%d\n",indiv,ten,hundred,thousand,ten_thousand); break; case 4:printf("%d,%d,%d,%d\n",thousand,hundred,ten,indiv); printf("%d,%d,%d,%d\n",indiv,ten,hundred,thousand); break; case 3:printf("%d,%d,%d\n",hundred,ten,indiv); printf("%d,%d,%d\n",indiv,ten,hundred); break; case 2:printf("%d,%d\n",ten,indiv); printf("%d,%d\n",indiv,ten); break; case 1:printf("%d\n",indiv); printf("%d\n",indiv); } } 5.8 main() {long i; float bonus,bon1,bon2,bon4,bon6,bon10; bon1=100000*0.1; bon2=bon1+100000*0.075; bon4=bon2+200000*0.05; bon6=bon4+200000*0.03; bon10=bon6+400000*0.015; scanf("%ld",&i); if(i<=1e5)bonus=i*0.1; else if(i<=2e5)bonus=bon1+(i-100000)*0.075; else if(i<=4e5)bonus=bon2+(i-200000)*0.05; else if(i<=6e5)bonus=bon4+(i-400000)*0.03; else if(i<=1e6)bonus=bon6+(i-600000)*0.015; else bonus=bon10+(i-1000000)*0.01; printf("bonus=%10.2f",bonus); } main() {long i; float bonus,bon1,bon2,bon4,bon6,bon10; int branch; bon1=100000*0.1; bon2=bon1+100000*0.075; bon4=bon2+200000*0.05; bon6=bon4+200000*0.03; bon10=bon6+400000*0.015; scanf("%ld",&i); branch=i/100000; if(branch>10)branch=10; switch(branch) {case 0:bonus=i*0.1;break; case 1:bonus=bon1+(i-100000)*0.075;break; case 2: case 3:bonus=bon2+(i-200000)*0.05;break; case 4: case 5:bonus=bon4+(i-400000)*0.03;break; case 6: case 7 case 8: case 9:bonus=bon6+(i-600000)*0.015;break; case 10:bonus=bon10+(i-1000000)*0.01; } printf("bonus=%10.2f",bonus); } 4.9 main() {int t,a,b,c,d; scanf("%d,%d,%d,%d",&a,&b,&c,&d); if(a>b){t=a;a=b;b=t;} if(a>c){t=a;a=c;c=t;} if(a>d){t=a;a=d;d=t;} if(b>c){t=b;b=c;c=t;} if(b>d){t=b;b=d;d=t;} if(c>d){t=c;c=d;d=t;} printf("%d %d %d %d\n",a,b,c,d); } 5.10 main() {int h=10; float x,y,x0=2,y0=2,d1,d2,d3,d4; scanf("%f,%f",&x,&y); d1=(x-x0)*(x-x0)+(y-y0)*(y-y0); d2=(x-x0)*(x-x0)+(y+y0)*(y+y0); d3=(x+x0)*(x+x0)+(y-y0)*(y-y0); d4=(x+x0)*(x+x0)+(y+y0)*(y+y0); if(d1>1&&d2>1&&d3>1&&d4>1)h=0; printf("h=%d",h); } 第六章循环控制 6.1 main() {int a,b,num1,num2,temp; scanf("%d,%d",&num1,&num2); if(num1 a=num1;b=num2; while(b!=0) {temp=a%b; a=b; b=temp;} printf("%d\n",a); printf("%d\n",num1*num2/a); } 6.2 #include"stdio.h" main() {char c; int letters=0,space=0,digit=0,other=0; while((c=getchar())!='\n') {if(c>='a'&&c<='z'||c>='A'&&c<='Z') letters++; else if(c==' ')space++; else if(c>='0'&&c<='9')digit++; else other++; } printf("letters=%d\nspace=%d\ndigit=%d\nother=%d\n",letters,space,digit,other); } 6.3 main() {int a,n,count=1,sn=0,tn=0; scanf("%d,%d",&a,&n); while(count<=n) {tn+=a; sn+=tn; a*=10; ++count; } printf("a+aa+aaa+...=%d\n",sn); } 6.4 main() {float n,s=0,t=1; for(n=1;n<=20;n++) {t*=n; s+=t; } printf("s=%e\n",s); } 6.5 main() {int N1=100,N2=50,N3=10; float k; float s1=0,s2=0,s3=0; for(k=1;k<=N1;k++)s1+=k; for(k=1;k<=N2;k++)s2+=k*k; for(k=1;k<=N3;k++)s3+=1/k; printf("s=%8.2f\n",s1+s2+s3); } 6.6 main() {int i,j,k,n; for(n=100;n<1000;n++) {i=n/100; j=n/10-i*10; k=n%10; if(i*100+j*10+k==i*i*i+j*j*j+k*k*k) printf("n=%d\n",n); } } 6.7 #define M 1000 main() {int k0,k1,k2,k3,k4,k5,k6,k7,k8,k9; int i,j,n,s; for(j=2;j<=M;j++) {n=0; s=j; for(i=1;i {if((j%i)==0) {n++; s=s-i; switch(n) {case 1:k0=i;break; case 2:k1=i;break; case 3:k2=i;break; case 4:k3=i;break; case 5:k4=i;break; case 6:k5=i;break; case 7:k6=i;break; case 8:k7=i;break; case 9:k8=i;break; case 10:k9=i;break; } } } if(s==0) {printf("j=%d\n",j); if(n>1)printf("%d,%d",k0,k1); if(n>2)printf(",%d",k2); if(n>3)printf(",%d",k3); if(n>4)printf(",%d",k4); if(n>5)printf(",%d",k5); if(n>6)printf(",%d",k6); if(n>7)printf(",%d",k7); if(n>8)printf(",%d",k8); if(n>9)printf(",%d\n",k9); } } } main() {static int k[10]; int i,j,n,s; for(j=2;j<=1000;j++) {n=-1; s=j; for(i=1;i {if((j%i)==0) {n++; s=s-i; k[n]=i; } } if(s==0) {printf("j=%d\n",j); for(i=0;i printf("%d,",k[i]); printf("%d\n",k[n]); } } } 6.8 main() {int n,t,number=20; float a=2;b=1;s=0; for(n=1;n<=number;n++) {s=s+a/b; t=a,a=a+b,b=t; } printf("s=%9.6f\n",s); } 6.9 main() {float sn=100.0,hn=sn/2; int n; for(n=2;n<=10;n++) {sn=sn+2*hn; hn=hn/2; } printf("sn=%f\n",sn); printf("hn=%f\n",hn); } 6.10 main() {int day,x1,x2; day=9; x2=1; while(day>0) {x1=(x2+1)*2; x2=x1; day--; } printf("x1=%d\n",x1); } 6.11 #include"math.h" main() {float a,xn0,xn1; scanf("%f",&a); xn0=a/2; xn1=(xn0+a/xn0)/2; do {xn0=xn1; xn1=(xn0+a/xn0)/2; } while(fabs(xn0-xn1)>=1e-5); printf("a=%5.2f\n,xn1=%8.2f\n",a,xn1); } 6.12 #include"math.h" main() {float x,x0,f,f1; x=1.5; do {x0=x; f=((2*x0-4)*x0+3)*x0-6; f1=(6*x0-8)*x0+3; x=x0-f/f1; } while(fabs(x-x0)>=1e-5); printf("x=%6.2f\n",x); } 6.13 #include"math.h" main() {float x0,x1,x2,fx0,fx1,fx2; do {scanf("%f,%f",&x1,&x2); fx1=x1*((2*x1-4)*x1+3)-6; fx2=x2*((2*x2-4)*x2+3)-6; } while(fx1*fx2>0); do {x0=(x1+x2)/2; fx0=x0*((2*x0-4)*x0+3)-6; if((fx0*fx1)<0) {x2=x0; fx2=fx0; } else {x1=x0; fx1=fx0; } } while(fabs(fx0)>=1e-5); printf("x0=%6.2f\n",x0); } 6.14 main() {int i,j,k; for(i=0;i<=3;i++) {for(j=0;j<=2-i;j++) printf(" "); for(k=0;k<=2*i;k++) printf("*"); printf("\n"); } for(i=0;i<=2;i++) {for(j=0;j<=i;j++) printf(" "); for(k=0;k<=4-2*i;k++) printf("*"); printf("\n"); } } 6.15 main() {char i,j,k; for(i='x';i<='z';i++) for(j='x';j<='z';j++) {if(i!=j) for(k='x';k<='z';k++) {if(i!=k&&j!=k) {if(i!='x'&&k!='x'&&k!='z') printf("\na--%c\tb--%c\tc--%c\n",i,j,k); } } } } 第七章数组 7.1 #include #define N 101 main() { int i,j,line,a[N]; for (i=2;i for (i=2;i for (j=i+1;j {if(a[i]!=0 && a[j]!=0) if (a[j]%a[i]==0) a[j]=0; } printf("\n"); for (i=2,line=0;i { if(a[i]!=0) { printf("%5d",a[i]); line++; } if(line==10) { printf("\n"); line=0; } } } 7.2 #define N 10 main() {int i,j,min,temp,a[N]; for(i=0;i scanf("%d",&a[i]); for(i=0;i {min=i; for(j=i+1;j if(a[min]>a[j])min=j; temp=a[i]; a[i]=a[min]; a[min]=temp; } for(i=0;i printf("%5d",a[i]); } 7.3 main() {float a[3][3],sum; int i,j; for(i=0;i<3;i++) for(j=0;j<3;j++) {scanf("%f",&sum); a[i][j]=sum; } for(i=0;i<3;i++) sum=sum+a[i][i]; printf("sum=%f",sum); } 7.4 main() {int a[11]={1,4,6,9,13,16,19,28,40,100}; int temp1,temp2,number, end,i,j; scanf("%d",&number); end=a[9]; if(number>end) a[10]=number; else {for(i=0;i<10;i++) {if(a[i]>number) {temp1=a[i]; a[i]=number; for(j=i+1;j<11;j++) {temp2=a[j]; a[j]=temp1; temp1=temp2; } break; } } } for(i=0;i<11;i++) printf("%6d",a[i]); } 7.5 #define N 5 main() {int a[N]={8,6,5,4,1},i,temp; for(i=0;i {temp=a[i]; a[i]=a[N-i-1]; a[N-i-1]=temp; } for(i=0;i printf("%4d",a[i]); } 7.6 #define N 11 main() {int i,j,a[N][N]; for(i=1;i {a[i][i]=1; a[i][1]=1; } for(i=3;i for(j=2;j a[i][j]=a[i-1][j-1]+a[i-1][j]; for(i=1;i {for(j=1;j<=i;j++) printf("%6d",a[i][j]); printf("\n"); } } 7.7 main() {int a[16][16],i,j,k,p,m,n; p=1; while(p==1) {scanf("%d",&n); if((n!=0)&&(n<=15)&&(n%2!=0))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("%3d",a[i][j]); printf("\n"); } } 7.8 #define N 10 #define M 10 main() {int i,j,k,m,n,flag1,flag2,a[N][M],max,maxi,maxj; scanf("%d,%d",&n,&m); for(i=0;i for(j=0;j scanf("%d",&a[i][j]); flag2=0; for(i=0;i {max=a[i][0]; for(j=0;j if(max {max=a[i][j]; maxj=j; } for(k=0,flag1=1;k if(max>a[k][maxj])flag1=0; if(flag1) { printf("\na[%d][%d]=%d\n",i,maxj,max); flag2=1; } } if(!flag2) printf("NOT"); } 7.9 #include #define N 15 main() {int i,j,number,top,bott,min,loca,a[N],flag; char c; for(i=0;i<=N;i++) scanf("%d",&a[i]); flag=1; while(flag) {scanf("%d",&number); loca=0; top=0; bott=N-1; if((numbera[N-1])) loca=-1; while((loca==0)&&(top<=bott)) {min=(bott+top)/2; if(number==a[min]) {loca=min; printf("number=%d,loca=%d\n",number,loca+1); } else if(number bott=min-1; else top=min+1; } if(loca==0||loca==-1) printf("%d not in table\n",number); printf("continue Y/N or y/n\n"); c=getchar(); if(c=='N'||c=='n')flag=0; } } 7.10 main() {int i,j,uppn,lown,dign,span,othn; char text[3][80]; uppn=lown=dign=span=othn=0; for(i=0;i<3;i++) {gets(text[i]); for(j=0;j<80&&text[i][j]!='\0';j++) {if(text[i][j]>='A'&&text[i][j]<='Z') uppn++; else if(text[i][j]>='a'&&text[i][j]<='z') lown++; else if(text[i][j]>='0'&&text[i][j]<='9') dign++; else if(text[i][j]==' ') span++; else othn++; } } for(i=0;i<3;i++) printf("%s\n",text[i]); printf("uppn=%d\n",uppn); printf("lown=%d\n",lown); printf("dign=%d\n",dign); printf("span=%d\n",span); printf("othn=%d\n",othn); } 7.11 main() {static char a[5]={'*','*','*','*','*'}; int i,j,k; char space=' '; for(i=0;i<=5;i++) {printf("\n"); for(j=1;j<=3*i;j++) printf("%1c",space); for(k=0;k<=5;k++) printf("%3c",a[k]); } } 7.12 #include main() {int i,n; char ch[80],tran[80]; gets(ch); i=0; while(ch[i]!='\0') {if((ch[i]>='A')&&(ch[i]<='Z')) tran[i]=26+64-ch[i]+1+64; else if((ch[i]>='a')&&(ch[i]<='z')) tran[i]=26+96-ch[i]+1+96; else tran[i]=ch[i]; i++; 第一章 1.5题 #include C语言程序设计谭浩强第四版期末复习重点 Newly compiled on November 23, 2020 第一章 程 序设计和C 语言 .什么是计算机程序 程序.. :一组计算机能识别和执行的指令。只要让计算机执行这个程序,计算机就会自动地、有条不紊地进行工作 计算机的一切操作都是由程序控制的,离开程序,计算机将一事无成。 什么是计算机语言 计算机语言:人和计算机交流信息的、计算机和人都能识别的语言。 计算机语言发展阶段:机器语言(由0和1组成的指令) 符号语言(用英文字母和数字表示指令) 高级语言(接近于人的自然语言和数学语言) 面向过程的语言(非结构化的语言、结构化语言);面向对象的语言 语言的发展及其特点 C 语言是一种用途广泛、功能强大、使用灵活的过程性编程语言,既可用于编写应用软件,又能用于编写系统软件。因此C 语言问世以后得到迅速推广。 C 语言主要特点: 语言简洁、紧凑,使用方便、灵活。(只有37个关键字、9种控制语句;程序书写形式 自由,源程序短) 运算符丰富。(34种运算符;把括号、赋值、强制类型转换等都作为运算符处理;表达 式类型多样化) 数据类型丰富。(包括:整型、浮点型、字符型、数组类型、指针类型、结构体类型、共用体类型;C99又扩充了复数浮点类型、超长整型、布尔类型;指针类型数据,能用来实现各种复杂的数据结构的运算。) 具有结构化的控制语句。(如if…else语句、while语句、do…while语句、switch语句、for语句用函数作为程序的模块单位,便于实现程序的模块化;C语言是完全模块化和结构化的语言) 语法限制不太严格,程序设计自由度大。(对数组下标越界不做检查;对变量的类型使用比较灵活,例如,整型量与字符型数据可以通用;C语言允许程序编写者有较大的自由度,因此放宽了语法检查) 允许直接访问物理地址,能进行位操作,可以直接对硬件进行操作。(C语言具有高级语言的功能和低级语言的许多功能,可用来编写系统软件;这种双重性,使它既是成功的系统描述语言,又是通用的程序设计语言) 用C语言编写的程序可移植性好。(C的编译系统简洁,很容易移植到新系统;在新系统上运行时,可直接编译“标准链接库”中的大部分功能,不需要修改源代码;几乎所有计算机系统都可以使用C语言) 生成目标代码质量高,程序执行效率高。 1.C语言允许用两种注释方式:计算法 3.编写程序 4.对源程序进行编辑、编译和连接 5. 运行程序,分析结 6.编写程序文档 第二章算法——程序的灵魂 一个程序主要包括以下两方面的信息: (1) 对数据的描述。在程序中要指定用到哪些数据以及这些数据的类型和数据的组织形式,这就是数据结构。 (2) 对操作的描述。即要求计算机进行操作的步骤,也就是算法。 数据是操作的对象,操作的目的是对数据进行加工处理,以得到期望的结果。 着名计算机科学家沃思(Nikiklaus Wirth)提出一个公式:算法 + 数据结构 = 程序 谭浩强c++程序设计课后答案 娄警卫《c++程序设计》谭浩强课后习题答案
C语言程序设计谭浩强第四版期末复习重点
(完整版)谭浩强c程序设计课后习题答案