tceic.com
学霸学习网 这下你爽了
赞助商链接
当前位置:首页 >> 电脑基础知识 >>

C语言程序设计+谭浩强+第三版+课后习题答案


1.5 请参照本章例题,编写一个 C 程序,输出以下信息: ************************** Very Good! ************************** 解: mian() {printf(“**************************”); printf(“\n”); printf(“Very Good!\n”); printf(“\n”); printf(“**************************”); } 1.6 编写一个程序,输入 a、b、c 三个值,输出其中最大值。 解: mian() {int a,b,c,max; printf(“请输入三个数 a,b,c:\n”); scanf(“%d,%d,%d”,&a,&b,&c); max=a; if(max<b) max=b; if(max<c) max=c; printf(“最大数为:“%d”,max); } 第三章 3.6 写出以下程序运行的结果。 main() {char c1=’a’,c2=’b’,c3=’c’,c4=’\101’,c5=’\116’; printf(“a%cb%c\tc%c\tabc\n”,c1,c2,c3); printf(“\t\b%c %c”,c4,c5); } 解: aa ㄩ bb ㄩㄩㄩ cc ㄩㄩㄩㄩㄩㄩ abc AㄩN 3.7 要将"China"译成密码,译码规律是:用原来字母后面的第 4 个字母代替原 来的字母.例如,字母"A"后面第 4 个字母是"E"."E"代替"A"。因此,"China" 应译为"Glmre"。请编一程序,用赋初值的方法使 cl、c2、c3、c4、c5 五个变量 的值分别为,’C’、’h’、’i’、’n’、’a’,经过运算,使 c1、c2、c3、c4、c5 分别变 为’G’、’l’、’m’、’r’、’e’,并输出。 解: #include <stdio.h> 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); } 运行结果: 密码是 Glmre 3.9 求下面算术表达式的值。 (1)x+a%3*(int)(x+y)%2/4 设 x=2.5,a=7,y=4.7 (2)(float)(a+b)/2+(int)x%(int)y 设 a=2,b=3,x=3.5,y=2.5 (1)2.5 (2)3.5 3.10 写出程序运行的结果。 main() {int i,j,m,n; i=8; j=10; m=++i; n=j++; printf(“%d,%d,%d,%d”,i,j,m,n); } 解: 9,11,9,10 3.12 写出下面表达式运算后 a 的值,设原来 a=12。设 a 和 n 都已定义为整型变 量。 (1)a+=a (2) a-=2 (3) a*=2+3 (4)a/=a+a (5) a%=(n%=2),n 的值等于 5 (6)a+=a-=a*=a 解: (1) 24 (2) 10 (3) 60 (4) 0 (5) 0 (6) 0 第四章 4. 若 a=3, 4 b=4, c=5, x=1.2, y=2.4, z=-3.6, u=51274, n=128765, c1=’a’, c2=’b’。 想得到以下输出格式和结果,请写出程序(包括定义变量类型和设计输出) 。 a=_3_ _b=_4_ _c=_5 x=1.200000,y=2.400000,z=-3.600000 x+y=_3.600_ _y+z=-1.20_ _z+x=-2.40 c1=ˊ _or_97(ASCII) aˊ c2=ˊ _or_98(ASCII) bˊ main() {int a=3,b=4,c=5;

long int u=51274,n=128765; float x=1.2,y=2.4,z=3.6; char c1=’a’,c2=’b’; printf("a=%2d b=%2d c=%2d\n",a,b,c); printf("x=%f,y=%f,z=%f\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("%s %s %d%s\n","c1=’a’","or",c1,"(ASCII)"); printf("%s %s %d%s\n","c2=’a’","or",c2,"(ASCII)"); } 4. 用 scanf 下面的函数输入数据, a=3, 7 使 b=7, x=8.5, y=71.82, c1=ˊ , Aˊ c2=ˊ , aˊ 问在键盘上如何输入? main() { int a,b;float x,y;char c1c2; scanf("a=%d_b=%d",&a,&b) ; scanf("_x=%f_y=%e",&x,&y) ; scanf("_c1=%c_c2=%c",&c1,&c2) ; } a=3_b=7 _x=8.5_y=71.82 _c1=A_c2=a 4.8 设圆半径 r=1.5,圆柱高 h=3,求圆周长、圆面积、圆球表面积、圆球体积、 圆柱体积。用 scanf 输入数据,输出计算结果,输出时要求文字说明,取小数点 后两位数字。请编程序。 main() {float r,h,C1,Sa,Sb,Va,Vb; scanf("%f,%f",&r,&h); C1=2*3.14*r; Sa=3.14*r*r; Sb=4*Sa; Va=4*3.14*r*r*r/3; Vb=Sa*h; printf("C1=%.2f\n",C1); printf("Sa=%.2f\nSb=%.2f\nVa=%.2f\nVb=%.2f\n",Sa,Sb,Va,Vb); } 4.9 输入一个华氏温度,要求输出摄氏温度。公式为 c=5(F-32)/9 输出要求有文字说明,取位 2 小数。 main() {float F,c; scanf("%f",&F); c=5*(F-32)/9; printf("c=%.2f",c);

} 4.10 编程序,用 getchar 函数读入两个字符给 c1、c2,然后分别用函数和函数 输出这两个字符。并思考以下问题: (1)变量 c1、c2 应定义为字符型或整形? 抑二者皆可?(2)要求输出 c1 和 c2 值的 ASCII 码,应如何处理?用 putchar 函 数还是 printf 函数?(3)整形变量与字符变量是否在任何情况下都可以互相代 替?如: char c1,c2; 与 int c1,c2; 是否无条件的等价? #include"stdio.h" main() {char c1,c2; c1=getchar();c2=getchar(); putchar(c1);putchar(’\n’);putchar(c2);putchar(’\n’); } #include"stdio.h" main() {char c1,c2; c1=getchar();c2=getchar(); printf("c1=%d c2=%d\n",c1,c2); printf("c1=%c c2=%c\n",c1,c2); } 第五章 5.1 什么是算术运算?什么是关系运算?什么是逻辑运算? 解:略。 5.2 C 语言中如何表示“真”和“假”?系统如何判断一个量的“真”和“假”? 解:设有一个逻辑表达式,若其结果为“真”,则以 1 表示;若其结果为“假”,则 以 0 表示。但是判断一个逻辑量的值时,以 0 代表“真”,以非 0 代表“假”。例如 3&&5 的值为“真”,系统给出 3&&5 的值为 1。 5.3 写出下面各逻辑表达式的值。设 a=3,b=4,c=5。 (1) a+b>c&&b==c (2) a||b+c&&b-c (3) !(a>b)&&!c||1 (4) !(x=a)&&(y=b)&&0 (5) !(a+b)+c-1&&b+c/2 解: (1) 0 (2) 1 (3) 1 (4) 0

(5) 1 5.4 有 3 个整数 a、b、c,由键盘输入,输出其中最大的数。 解: 方法一 #include <stdio.h> main() { int a,b,c; printf("请输入 3 个整数:"); scanf("%d,%d,%d",&a,&b,&c); if(a<b) if(b<c) printf("max=%d\n",c); else printf("max=%d\n",b); else if(a<c) printf("max=%d\n",c); else printf("max=%d\n",a); }

方法二:使用条件表达式,可以使程序更加简明、清晰。 程序如下: #include <stdio.h> main() { int a,b,c,temp,max; printf("请输入 3 个整数:"); scanf("%d,%d,%d",&a,&b,&c); temp=(a>b)?a:b; max=(temp>c)?temp:c; printf("3 个整数的最大数是%d\n”,max); } 5.5 有一函数:

写一程序,输入 x 值,输出 y 值。 解: #include <stdio.h> main() {int x,y; printf("输入 x:"); scanf("%d",&x); if(x<1) { y=x; printf("x=%3d, y=x=%d\n",x,y);

} else if (x<10) { y=2*x-1; printf("x=%3d, y=2*x-1=%d\n",x,y); } else { y=3*x-11; printf("x=%3d, y=3*x-11=%d\n",x,y); } } 5.6 给一个百分制成绩,要求输出等级’A’、’B’、’C’、’D’、’E’。90 分以上为’A’, 80~90 分为’B’,70~79 分为’C’,60 分以下为’D’。 解: 程序如下: #include <stdio.h> main() { float score; char grade; case 2: printf("请输入学生成绩:"); scanf("%f",&score); while(score>100||(score<0) { printf("\n 输入有误,请重新输入:"); scanf("%f",&score); } switch((int)(score/10)) { case 10: 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 1: case 0: grade=’E’; } printf("成绩是%5.1f,相应的等级是%c。\n",score,grade); } 说明: 对输入的数据进行检查, 如小于 0 或大于 100, 要求重新输入。 (int)(score/10) 的作用是将 (score/10) 的值进行强制类型转换,得到一个整型值。 5.7 给定一个不多于 5 位的正整数,要求:① 求它是几位数;② 分别打印出每 一位数字;③ 按逆序打印出各位数字。例如原数为 321,应输出 123。

解: #include <stdio.h> main() { long int num; int indiv,ten,hundred,thousand,ten_thousand,place; printf("请输入一个整数(0~99999) :"); 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/1000%10; hundred=num/100%10; ten=num%100/10; indiv=num%10; switch(place) { case 5: printf("%d,%d,%d,%d,%d",ten_thousand,thousand,hundred,ten,indiv); printf("\n 反序数字为;"); printf("%d%d%d%d%d\n",indiv,ten,hundred,thousand,ten_thousand); break; case 4: printf("%d,%d,%d,%d",thousand,hundred,ten,indiv); printf("\n 反序数字为:"); printf("%d%d%d%d\n",indiv,ten,hundred,thousand); break; case 3: printf("%d,%d,%d",hundred,ten,indiv); printf("\n 反序数字为:"); printf("%d%d%d\n",indiv,ten,hundred); break; case 2: printf("%d,%d",ten,indiv); printf("\n 反序数字为:"); printf("%d%d\n",indiv,ten); break; case 1: printf("%d",indiv); printf("\n 反序数字为:"); printf("%d\n",indiv); break; } } 5.8 企业发放的奖金根据利润提成。利润 I 低于或等于 10 万元时,奖金可提成

10% ;利润高于 10 万元,低于 20 万元(100000<I≤200000)时,其中 10 万元 按 10%提成,高于 10 万元的部分,可提成 7.5% ;200000<I≤400000 时,其中 20 万 元 仍 按 上 述 办 法 提 成 ( 下 同 ) 高 于 20 万 元 的 部 分 按 5% 提 成 ; , 400000<I≤600000 时,高于 40 万元的部分按 3%提成;600000〈I≤1000000 时, 高于 60 万的部分按 1.5%提成;I>1000000 时,超过 100 万元的部分按 1%提成。 从键盘输入当月利润 I, 求应发放奖金总数。 要求: (1)用 if 语句编程序; (2)用 switch 语句编程序。 解:计算利润时,要特别注意不同利润的不同提成比例。例如,利润为 15 万元, 其中有 10 万元按 10%的比例提成,另外 5 万元则按 7.5%提成。 (1) 用 if 语句编程序。 #include <stdio.h> 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; printf("请输入利润 i:"); scanf("%ld",&i); if(i<=100000) bonus=i*0.1; else if(i<=200000) bonus=bon1+(i-100000)*0.075; else if(i<=400000) bonus=bon2+(i-200000)*0.05; else if(i<=600000) bonus=bon4+(i-400000)*0.03; else if(i<=1000000) bonus=bon6+(i-600000)*0.015; else bonus=bon10+(i-1000000)*0.01; printf(”奖金是%10.2f\n",bonus); } 此题的关键在于正确写出每一区间的奖金计算公式。例如利润在 10 万元至 20 万时,奖金应由两部分组成:①利润为 10 万元时应得的奖金。即 100000ⅹ0.1; ②10 万元以上部分应得的奖金。即(num-100000)ⅹ0.075。同理,20 万~40 万这 个区间的奖金也应由两部分组成:①利润为 20 万元时应得的奖金,即 100000 ⅹ0.1ⅹ10 万ⅹ0.075;②20 万元以上部分应得的奖金,即(num-200000)ⅹ0.05。 程序中先把 10 万、20 万、40 万、60 万、100 万各关键点的奖金计算出来,即 bon1、bon2、bon4、bon6、hon10;然后再加上各区间附加部分的奖金。

(2) 用 switch 语句编程序。 输入利润 i,确定相应的提成等级 branch 根据 branch 确定奖金值 0 奖金=i*0.1 1 奖金=bon1+(i-105)*0.075 2 奖金=bon2+(i-2*105)*0.05 3 4 奖金=bon4+(i-4*105)*0.03 5 6 奖金=bon6+(i-6*105)*0.015 7 8 9 10 奖金=bon10+(i-106)*0.01 输出奖金 #include <stdio.h> main() { long i; float bonus, bon1, bon2, bon4, bon6, bon10; int c; bon1=100000*0.1; bon2=bon1+100000*0.075; bon4=bon2+200000*0.05; bon6=bon4+200000*0.03; bon10=bon6+400000*0.015; printf("请输入利润 i:"); scanf("%ld",&i); c=i/100000; if(c>10) c=10; switch(c) { case 0: bonus=1*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("奖金是%10.2f",bonus); } 5.9 输入 4 个整数,要求按由大到小的顺序输出。 解:此题采用依次比较的方法排出其大小顺序。在学习了循环和数组以后,可 以有更多的排序方法。 #include <stdio.h> main() { int t,a,b,c,d; printf("请输入 4 个整数:"); scanf("%d,%d,%d,%d",&a,&b,&c,&d); printf("\n a=%d,b=%d,c=%d,d=%d\n",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=a; b=c; c=t;} if(b>d) {t=b; b=d; d=t;} if(c>d) {t=c; c=d; d=t;} printf("排序结果如下:\n"); printf("%d, %d, %d, %d\n",a,b,c,d); } 5.10 有 4 个圆塔,圆心分别为(2,2)、(-2,2)、(2,-2)、(-2,-2),圆半径为 1。 这 4 个塔的高度分别为 10m。塔以外无建筑物。今输入任一点的坐标,求该点 的建筑高度(塔外的高度为零)。

程序如下: #include <stdio.h> main() { int h=10; float x1=2,y1=2,x2=-2,y2=2,x3=-2,y3=-2,x4=-2,y4=-2,x,y,d1,d2,d3,d4; printf("请输入一个点(x,y):"); scanf("%f,%f",&x,&y); d1=(x-x1)*(x-x1)+(y-y1)*(y-y1); d2=(x-x2)*(x-x2)+(y+y2)*(y+y2); d3=(x+x3)*(x+x3)+(y-y3)*(y-y3); d4=(x+x4)*(x-x4)*(y+y4)*(y+y4); if(d1>1&&d2>1&&d3>1&&d4>1) h=0;

printf("该点高度为%d\n",h); } 第六章 第六章 循环控制 6.1 输入两个正整数 m 和 n,求其最大公约数和最小公倍数。 main() {long m,n,i=1,j,s; scanf("%ld,%ld",&m,&n); for(;i<=m&&i<=n;i++) {if(m%i==0&&n%i==0) s=i;} if(m>=n) j=m; else j=n; for(;!(j%m==0&&j%n==0);j++); printf("s=%ld,j=%ld\n",s,j); } 6.2 输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。 #include"stdio.h" main() {char c;int i=0,j=0,k=0,l=0; while((c=getchar())!=’\n’) {if(c>=65&&c<=90||c>=97&&c<=122) i++; else if(c>=48&&c<=57) j++; else if(c==32) k++; else l++;} printf("i=%d,j=%d,k=%d,l=%d\n",i,j,k,l); } 6.3 求 Sn=a+aa+aaa+…+aa…aaa(有 n 个 a)之值,其中 a 是一个数字。例如: 2+22+222+2222+22222(n=5) 由键盘输入。 ,n #include"math.h" main() {int n,sum=0,i=1,s=2; scanf("%d",&n); while(i<=n) {sum=sum+s;s=s+2*pow(10,i); i++;} printf("sum=%d\n",sum); } 6.4 求 , (即求 1!+2!+3!+4!+5!+…+20!) main() {int n,i=1;long sum=0,s=1; scanf("%d",&n); while(i<=n) {s=s*i;sum=sum+s;i++;}

printf("sum=%ld\n",sum); } 6.5 求 main() {double i=1,j=1,k=1,s1=0,s2=0,s3=0,sum; for(;i<=100;i++) s1=s1+i; for(;j<=50;j++) s2=s2+j*j; for(;k<=10;k++) s3=s3+1/k; sum=s1+s2+s3; printf("sum=%f\n",sum); } 6.6 打印出所有"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方 和等于该本身。例如:153 是一个水仙花数,因为 153=1^3+5^3+3^3。 #include"math.h" main() {int x=100,a,b,c; while(x>=100&&x<1000) {a=0.01*x;b=10*(0.01*x-a);c=x-100*a-10*b; if(x==(pow(a,3)+pow(b,3)+pow(c,3))) printf("%5d",x);x++;} } 6.7 一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如,6 的因子 为 1、2、3,而 6=1+2+3,因此 6 是"完数"。编程序找出 1000 之内的所有完数, 并按下面格式输出其因子: 6 its factors are 1、2、3 main() {int m,i,j,s; for(m=6;m<10000;m++) {s=1; for(i=2;i<m;i++) if(m%i==0) s=s+i; if(m-s==0) {printf("%5d its fastors are 1 ",m);for(j=2;j<m;j++) if(m%j==0) printf("%d ",j);printf("\n");} } } 或 main() {int m,i,j,s; for(m=6;m<1000;m++) {s=m-1; for(i=2;i<m;i++) if(m%i==0) s=s-i; if(s==0) {printf("%5d its fastors are 1 ",m);for(j=2;j<m;j++) if(m%j==0) printf("%d ",j);printf("\n");}

} } 6.8 有一分数序列: 求出这个数列的前 20 项之和。 main() {int i=1,n;double t,x=1,y=2,s,sum=0; scanf("%ld",&n); while(i<=n) {s=y/x;sum=sum+s;t=y;y=y+x;x=t;i++;} printf("%f\n",sum); } 6.9 一球从 100 米高度自由下落,每次落地后返回原高度的一半,再落下。求它 在第 10 次落地时共经过多少米?第 10 次反弹多高? main() {int i,n;double h=100,s=100; scanf("%d",&n); for(i=1;i<=n;i++) {h*=0.5;if(i==1) continue;s=2*h+s;} printf("h=%f,s=%f\n",h,s); } 6.10 猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾, 又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天 早上都吃了前一天剩下的一半零一个。到第 10 天早上想再吃时,见只剩下一个 桃子了。求第一天共摘多少桃子。 main() {int i=1,sum=0; for(;i<=10;sum=2*sum+1,i++); printf("sum=%d\n",sum); } 6.11 用迭代法求 。求平方根的迭代公式为: 要求前后两次求出的得差的绝对值少于 0.00001。 #include"math.h" main() {float x0,x1,a; scanf("%f",&a); x1=a/2; do {x0=x1;x1=(x0+a/x0)/2;} while(fabs(x0-x1)>=0.00001); printf("%.3f\n",x1); } 6.12 用牛顿迭代法求方程在 1.5 附近的根。

main() {double x,y;x=1.5; do{y=2*x*x*x-4*x*x+3*x-6; x=x-y/(6*x*x-8*x+3);} while(y!=0); printf("x=%.3f\n",x); } 6.13 用二分法求方程在(-10,10)之间的根 main() {double x1,x2,y1,y2;x1=-10;x2=10; do{y1=2*x1*x1*x1-4*x1*x1+3*x1-6; x1=x1-y1/(6*x1*x1-8*x1+3);} while(y1!=0); do {y2=2*x2*x2*x2-4*x2*x2+3*x2-6; x2=x2-y2/(6*x2*x2-8*x2+3);} while(y2!=0); printf("x1=%.3f,x2=%.3f\n",x1,x2); } 6.14 打印以下图案

* * * * * * * * * * * * * * * * * * * * * * * * #include"math.h" 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"); } } 第七章 第七章 数组 7.1 用筛法求之内的素数。 main() { int i,j,a[100]; for(i=2;i<100;i++) { a[i]=i; for(j=2;j<=i;j++) {if(j<i) if(a[i]%j==0) break; if(a[i]-j==0) printf("%5d",a[i]); } } printf("\n"); } 或 #include"math.h" main() {static int i,j,k,a[98]; for(i=2;i<100;i++) {a[i]=i;k=sqrt(i); for(j=2;j<=a[i];j++) if(j<k) if(a[i]%j==0) break; if(j>=k+1) printf("%5d",a[i]); } printf("\n"); } 7.2 用选择法对 10 个整数从小到大排序。 main() { int i,j,a[10],t; for(i=0;i<10;i++) scanf("%d",&a[i]); for(j=1;j<10;j++) for(i=0;i<=9-j;i++) if(a[i]>a[i+1])

{t=a[i+1];a[i+1]=a[i];a[i]=t;} for(i=0;i<10;i++) printf("%5d",a[i]); } 或 main() {static int a[10],i,j,k,t; for(i=1;i<11;i++) scanf("%d",&a[i]); for(j=1;j<10;j++) for(i=1;i<=10-j;j++) if (a[i]>a[i+1]) {t=a[i+1];a[i+1]=a[i];a[i]=t;} for(i=1;i<11;i++) printf("%d",a[i]); printf("\n"); } 7.3 求一个 3×3 矩阵对角线元素之和。 main() {int i=0,j=0,a[3][3],s1,s2; for(i=0;i<3;i++) for(j=0;j<3;j++) scanf("%d",&a[i][j]); s1=a[0][0]+a[1][1]+a[2][2]; s2=a[0][2]+a[1][1]+a[2][0]; printf("s1=%d,s2=%d\n",s1,s2); } 或 main() { static int i,j,s1,s2,a[3][3]; for(i=1;i<=3;i++) for(j=1;j<=3;j++) scanf("%d",&a[i][j]); s1=a[1][1]+a[2][2]+a[3][3]; s2=a[1][3]+a[2][2]+a[3][1]; printf("%d,%d\n",s1,s2); } 7.4 已有一个已排好的数组今输入一个数要求按原来排序的规律将它插入数组 中。 main() { static int a[10]={1,7,8,17,23,24,59,62,101};int i,j,t; scanf("%d",&a[9]); for(i=9;i>0;i--)

if(a[i]<a[i-1]) {t=a[i-1];a[i-1]=a[i];a[i]=t;} for(i=0;i<10;i++) printf("%5d",a[i]);printf("\n"); } 或 main() { static int a[5]={1,4,5,6,7}; int i,t,b; scanf("%d",&b); for(i=0;i<5;i++) {if(b<=a[i]) {t=a[i];a[i]=b;b=t;} printf("%d ",a[i]);} printf("%d",b); } 7.5 将一个数组的值按逆序重新存放,例如,原来顺序为:8,6,5,4,1。要 求改为:1,4,5,6,8。 main() { int i,b[10]; for(i=0;i<10;i++) scanf("%d",&b[i]); for(i=9;i>-1;i--) printf("%5d",b[i]); printf("\n");} 7.6 打印出以下杨辉三角形(要求打印出 10 行) 。 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 ∶ ∶ main() { static int m,n,k,b[15][15]; b[0][1]=1; for(m=1;m<15;m++) { for(n=1;n<=m;n++) { b[m][n]=b[m-1][n-1]+b[m-1][n];

printf("%-5d",b[m][n]); } printf("\n"); } } } 或 main() { int i,j,n,k,a[10][10]; static a[][1]={{1},{1},{1},{1},{1},{1},{1},{1},{1},{1}}; a[1][1]=1; for(k=2,k<11;k++) for(i=2;i<=k;i++) for(j=2;j<=i;j++) a[i][j]=a[i-1][j-1]+a[i-1][j]; for(k=1;k<11;k++) for(i=1;i<=k;i++) for(j=1;j<=i;j++) printf("%d",a[i][j]); } 7.7 打印“魔方阵”,所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线 之和均相等。例如,三阶魔方阵为 8 1 6 3 5 7 4 9 2 要求打印出由 1~n2 的自然数构成的魔方阵。 解: #include <stdio.h> main() { int a[16][16],i,i,k,p,m,n; p=1; while(p==1) { printf("Enter n(n=1~15):"); 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

7-8 #include <iostream> void main() {

int a[4][4],i,j,max,min,k1,k2,flag; printf("输入一个 4*4 的数组\n\n"); for(i=0;i<4;i++) { for(j=0;j<4;j++) { scanf("%d",&a[i][j]); } } printf("鞍点为:\n\n"); for(i=0;i<4;i++) { max=a[i][0]; for(j=0;j<4;j++) { if(max<=a[i][j]) { max=a[i][j]; k1=j; } } min=a[0][k1]; for(j=0;j<4;j++) { if(min>=a[j][k1]) { min=a[j][k1]; k2=j; } } if((max!=min)) flag=0; else { flag=1; printf("%d\n",max); break; } } if(flag==0) printf("不存在\n\n"); }

7-9 #include <iostream>

void main() { float a[15]={100,98,65,55,34,23,23,12,11,9,7,6,4,3,2},n; int i,low,high,mid; printf("原数组为:\n\n"); for(i=0;i<15;i++) { printf("%6.2f",a[i]); } printf("\n\n 输入一个数 n\n\n"); scanf("%f",&n); low=0; high=14; i=0; while(low<=high) { mid=(low+high)/2; if(a[mid]==n) { printf("该数是数组中第%d 个元素\n\n",mid+1); i++; break; } else if(a[mid]<n) high=mid-1; else low=mid+1; } if(i==0) printf("无此数!!\n\n"); }

7-10 #include <iostream> void main() { char a[3][80]; int i,j,upon=0,low=0,num=0,spa=0,oth=0; for(i=0;i<3;i++) { printf("输入第%d 行文字\n\n",i); gets(a[i]); for(j=0;j<80&&a[i][j]!='\0';j++) { if(a[i][j]>='A'&&a[i][j]<='Z') upon+=1; else if(a[i][j]>='a'&&a[i][j]<='z') low+=1;

else if(a[i][j]>=48&&a[i][j]<=57) num+=1; else if(a[i][j]==' ') spa+=1; else oth+=1; } } printf("英文大写字母:%d 个\n\n",upon); printf("英文小写字母:%d 个\n\n",low); printf("数字: %d 个\n\n",num); printf("空格: %d 个\n\n",spa); printf("其他字符: %d 个\n\n",oth); }

7-11 #include <iostream> void main() { int i,j; for(i=0;i<5;i++) { for(j=0;j<=i;j++) { printf(" "); } for(j=i;j<i+5;j++) { printf("* "); } printf("\n"); } }

7-12 #include <iostream> void main() { char a[80],b[80]; int i,j; printf("输入密码\n\n"); gets(a); for(i=0;i<80&&a[i]!='\0';i++) { if((a[i]>='A')&&(a[i]<='Z'))

{ b[i]=155-a[i]; } else if((a[i]>='a')&&(a[i]<='z')) { b[i]=219-a[i]; } else b[i]=a[i]; } b[i]='\0'; printf("密文为:\n\n"); puts(a); printf("原文为:\n\n"); puts(b); }

7-13 #include <iostream> void main() { char a[80],b[80]; int i,j,k; printf("输入第 1 个字符串\n\n"); gets(a); printf("输入第 2 个字符串\n\n"); gets(b); for(i=0;i<80;i++) { if(a[i]=='\0') { k=i; for(j=0;j<80&&b[j]!='\0';j++) { a[k]=b[j]; k++; } a[k]='\0'; break; } } printf("连接后字符串为:\n\n"); puts(a); }

7-14 #include <iostream> void main() { char a[80],b[80]; int i,j,k; printf("输入第 1 个字符串\n\n"); gets(a); printf("输入第 2 个字符串\n\n"); gets(b); for(i=0;(i<80)&&(a[i]!='\0')&&(b[i]!='\0');i++) { k=a[i]-b[i]; if(k>0) { printf("\n\n 字符串 a 大于字符串 b:%4d\n\n",k); break; } else if(k<0) { printf("\n\n 字符串 a 小于字符串 b:%4d\n\n",k); break; } else k=0; } if(k==0) printf("\n\n 字符串 a 等于字符串 b:%4d\n\n",k); }

7-15 #include <iostream> void main() { char s1[80],s2[80]; int i,j; printf("输入数组 s1\n\n"); gets(s1); printf("输入数组 s2\n\n"); gets(s2); for(i=0;i<80&&s2[i]!='\0';i++) { s1[i]=s2[i];

} s1[i]='\0'; printf("\n\n 复制后的数组为:\n\n"); puts(s1); } 第八章 8-1 #include <iostream> void main() { int max_div(int,int); int min_mul(int,int); int m,n; printf("输入两个整数\n\n"); scanf("%d%d",&m,&n); if(max_div(m,n)==0) printf("\n\n 无最大公约数为\n\n"); else printf("\n\n 最大公倍数为:%d\n\n",max_div(m,n)); printf("\n\n 最大公倍数为:%d\n\n",min_mul(m,n)); } int max_div(int k1,int k2) { int min(int,int); int i,k,flag; k=min(k1,k2); for(i=k;i>1;i--) { if((k1%i==0)&&(k2%i==0)) { return(i); flag=1; break; } else flag=0; } if(flag==0) return(0); } int min_mul(int k1,int k2) { int max(int,int); int i,k; k=max(k1,k2); for(i=k;;i++) {

if((i%k1==0)&&(i%k2==0)) { return(i); break; } } } int min(int k1,int k2) { int min; min=k1; if(k1>k2) min=k2; return(min); } int max(int k1,int k2) { int max; max=k1; if(k1<k2) max=k2; return(max); } 8-2 #include <iostream> #include <math.h> void main() { void root1(float,float,float); void root2(float,float,float); void root3(float,float,float); float a,b,c,k; printf("输入 a,b,c 的值\n\n"); scanf("%f%f%f",&a,&b,&c); k=b*b-4*a*c; if(k>0) root1(a,b,c); else if(k==0) root2(a,b,c); else root3(a,b,c); } void root1(float a,float b,float c) { float p,q; p=-b/(2*a); q=sqrt(b*b-4*a*c)/(2*a); printf("\n\n 方程的两个根为:x1=%6.2f,x2=%6.2f\n\n",p+q,p-q);

} void root2(float a,float b,float c) { float p; p=-b/(2*a); printf("\n\n 方程的两个根为:x1=x2=%6.2f\n\n",p); } void root3(float a,float b,float c) { float p,q; p=-b/(2*a); q=sqrt(-b*b+4*a*c)/(2*a); printf("\n\n 方程的两个根为:x1=%6.2f+%6.2fi,x2=%6.2f-%6.2fi\n\n",p,q,p,q); } 8-3 #include <iostream> void main() { int prime(int); int x; printf("输入一个正整数\n\n"); scanf("%d",&x); if(prime(x)==0) printf("\n\n 此数为素数\n\n"); else printf("\n\n 此数不是素数\n\n"); } int prime(int x) { int i,flag; for(i=2;i<x;i++) { if(x%i==0) { flag=1; break; } else flag=0; } return(flag); } 8-4 #include <iostream> void main()

{ void exchange(int a[3][3]); int a[3][3],i,j; printf("输入一个 3*3 的矩阵\n\n"); for(i=0;i<3;i++) { for(j=0;j<3;j++) { scanf("%d",&a[i][j]); } } exchange(a); printf("\n\n 转置后的矩阵为:\n\n"); for(i=0;i<3;i++) { for(j=0;j<3;j++) { printf("%d ",a[i][j]); } printf("\n"); } } 8-5 #include <iostream> void main() { void exchange(char str[]); char str[80]; printf("输入一个字符串\n\n"); gets(str); exchange(str); printf("\n\n 反序字符串为:\n\n"); puts(str); } void exchange(char str[]) { int i,j,k; char temp; for(i=0;;i++) { if(str[i]=='\0') break; } k=i/2;

for(j=0;j<=k;j++) { temp=str[j]; str[j]=str[i-1-j]; str[i-1-j]=temp; } str[i]='\0'; } 8-6 #include <iostream> void main() { void strcat(char str1[],char str2[]); char str1[80],str2[80]; printf("输入 str1\n\n"); gets(str1); printf("\n\n 输入 str2\n\n"); gets(str2); strcat(str1,str2); printf("\n\n 连接后的字符串为:\n\n"); puts(str1); } void strcat(char str1[],char str2[]) { int i,j; for(i=0;;i++) { if(str1[i]=='\0') { for(j=0;str2[j]!='\0';j++) { str1[i]=str2[j]; i+=1; } break; } } str1[i]='\0'; } 8-7 #include <iostream> void main()

{ void strcpy(char str1[],char str2[]); char str1[80],str2[80]; printf("输入 str2\n\n"); gets(str2); strcpy(str1,str2); printf("\n\n 复制后的字符串为:\n\n"); puts(str1); } void strcpy(char str1[],char str2[]) { int i,j=0; for(i=0;str2[i]!='\0';i++) { if((str2[i]=='a')||(str2[i]=='e')||(str2[i]=='i')||(str2[i]=='o')||(str2[i]=='u')) { str1[j]=str2[i]; j++; } } str1[j]='\0'; } 8-8 #include <iostream> void main() { void stradd(char str[]); char str[80]; printf("输入一串数字\n\n"); gets(str); stradd(str); printf("\n\n 加空格后的字符串\n\n"); puts(str); } void stradd(char str[]) { char a[80]; int i=0,j; for(j=0;str[j]!='\0';j++) { a[i]=str[j]; a[i+1]=' '; i+=2;

} a[i]='\0'; for(i=0;a[i]!='\0';i++) { str[i]=a[i]; } str[i]='\0'; } 8-9 #include <iostream> void main() { void num(char str[],int a[]); char str[80]; int a[4]={0}; printf("输入一个字符串\n\n"); gets(str); num(str,a); printf("字母个数为: %d\n",a[0]); printf("数字个数为: %d\n",a[1]); printf("空格个数为: %d\n",a[2]); printf("其它字符个数为:%d\n",a[3]); } void num(char str[],int a[]) { int i,word=0,num=0,span=0,oth=0; for(i=0;str[i]!='\0';i++) { if((str[i]>='A'&&str[i]<='Z')||(str[i]>='a'&&str[i]<='z')) word+=1; else if(str[i]>=48&&str[i]<=57) num+=1; else if(str[i]==' ') span+=1; else oth+=1; } a[0]=word; a[1]=num; a[2]=span; a[3]=oth; } 8-10 #include <iostream> void main() {

int word(char c); int longest(char str[]); int i; char str[80]; printf("输入一行字符串\n\n"); gets(str); printf("\n\n 最长的单词为:\n\n"); for(i=longest(str);word(str[i]);i++) printf("%c",str[i]); printf("\n"); } int word(char c) { if((c>='a'&&c<='z')||(c>='A'&&c<='Z')) return 1; else return 0; } int longest(char str[]) { int i,flag=1,len=0,point,max_len=0,max_point; for(i=0;i<=strlen(str);i++) { if(word(str[i])) { if(flag==1) { point=i; flag=0; } else len++; } else { flag=1; if(len>max_len) { max_len=len; max_point=point; } len=0; } } return (max_point); }

8-11 #include <iostream> void main() { char str[80]; void sort(char str[]); printf("输入一个字符串\n\n"); gets(str); sort(str); printf("\n\n 字符由小到大排序为:\n\n"); puts(str); } void sort(char str[]) { int i,j; char temp; for(i=0;i<strlen(str);i++) { for(j=0;j<strlen(str)-i-1;j++) { if(str[j]>str[j+1]) { temp=str[j]; str[j]=str[j+1]; str[j+1]=temp; } } } }

8-12 #include <iostream> #include <math.h> void main() { int a,b,c,d; float root(int a,int b,int c,int d); printf("输入 a,b,c,d\n\n"); scanf("%d%d%d%d",&a,&b,&c,&d); printf("\n\n 在 1 附近的根为:%f\n\n",root(a,b,c,d)); } float root(int a,int b,int c,int d)

{ float x=1,x1,f,f1; do { x1=x; f=((a*x1+b)*x1+c)*x1+d; f1=(a*x1+b)*x1+c; x=x1-f/f1; }while(fabs(x-x1)>=1e-5); return(x); } 8-13 #include <iostream> void main() { float p(int,float); int n; float x; printf("输入 n 和 x\n\n"); scanf("%d%f",&n,&x); printf("\n\n%d 阶勒德让多项式的值为:%f\n\n",n,p(n,x)); } float p(int n,float x) { if(n==0) return 1; else if(n==1) return x; else return ((2*n-1)*x-p(n-1,x)-(n-1)*p(n-2,x))/n; }

8-14 #include <iostream> #define n1 2 #define n2 5 float a_stu[n1],a_cou[n2]; void main() { void input(float a[][n2]); void stu_aver(float a[][n2]); void cou_aver(float a[][n2]); int hightest(int *s,int *c,float a[][n2]); float d(float a[][n2]); int i,j,s=0,c=0;

float score[n1][n2],h; input(score); stu_aver(score); cou_aver(score); printf("\n\n 序号 课程 1 2 3 4 5 平均成绩\n\n"); for(i=0;i<n1;i++) { printf(" NO.%d ",i+1); for(j=0;j<n2;j++) { printf("%8.2f",score[i][j]); } printf("%8.2f\n\n",a_stu[i]); } printf("课程平均"); for(i=0;i<n2;i++) { printf("%8.2f",a_cou[i]); } h=hightest(&s,&c,score); printf("\n\n 最高成绩为:%f 是第%d 号学生,第%d 门课的成绩\n\n",h,s,c); printf("平均方差为:%f\n\n",d(score)); } void input(float a[][n2]) { int i,j; for(i=0;i<n1;i++) { printf("\n\n 输入%d 个学生的 5 个成绩\n\n",i+1); for(j=0;j<n2;j++) { scanf("%f",&a[i][j]); } } } void stu_aver(float a[][n2]) { int i,j; float s; for(i=0;i<n1;i++) { s=0; for(j=0;j<n2;j++) {

s+=a[i][j]; } a_stu[i]=s/n2; } } void cou_aver(float a[][n2]) { int i,j; float s; for(i=0;i<n2;i++) { s=0; for(j=0;j<n1;j++) { s+=a[j][i]; } a_cou[i]=s/n1; } } int hightest(int *s,int *c,float a[][n2]) { float hightest=0; int i,j; for(i=0;i<n1;i++) { for(j=0;j<n2;j++) { if(a[i][j]>hightest) { hightest=a[i][j]; *s=i+1; *c=j+1; } } } return(hightest); } float d(float a[][n2]) { int i; float x=0,y=0; for(i=0;i<n1;i++) { x+=a_stu[i]*a_stu[i];

y+=a_stu[i]; } return(x/n1-(y/n1)*(y/n1)); } 8-15 #include <iostream> #define N 3 void main() { void input(int num[],char name[N][8]); void sort(int num[],char name[N][8]); void search(int num[],char name[N][8],int n); int flag,n,num[N]; char c,name[N][8]; input(num,name); sort(num,name); for(flag=1;flag;) { printf("输入要查找的职工号\n\n"); scanf("%d",&n); search(num,name,n); printf("是否继续查找?Y/N ?\n\n"); c=getchar(); if(c=='N'||c=='n') flag=0; } } void input(int num[],char name[N][8]) { int i; for(i=0;i<N;i++) { printf("输入职工号\n\n"); scanf("%d",&num[i]); printf("输入职工姓名\n\n"); getchar(); gets(name[i]); } } void sort(int num[],char name[N][8]) { int i,j,min,temp1; char temp2[8];

for(i=0;i<N;i++) { min=i; for(j=i;j<N;j++) { if(num[min]>num[j]) min=j; } temp1=num[i]; strcpy(temp2,name[i]); num[i]=num[min]; strcpy(name[i],name[min]); num[min]=temp1; strcpy(name[min],temp2); } printf("排序结果如下:\n\n"); for(i=0;i<N;i++) { printf("职工号:%6d 姓名:%10s\n\n",num[i],name[i]); } } void search(int num[],char name[N][8],int n) { int low,high,mid,flag; flag=0; low=0; high=N-1; if((n<num[low])||(n>num[high])) flag=-1; while((low<=high)&&(flag==0)) { mid=(low+high)/2; if(n==num[mid]) { flag=mid+1; printf("第%4d 号职工的名字为:%8s\n\n",n,name[mid]); break; } else if(n<num[mid]) high=mid-1; else low=mid+1; } if(flag==0||flag==-1) printf("不存在该职工\n\n"); }

8-16

#include <iostream> #define N1 1000 void main() { int exchange(char a[]); int i=0,flag=0,flag1=1; char c,a[N1]; printf("输入一个十六进制数\n\n"); while(((c=getchar())!='\0')&&(i<N1)&&flag1) { if(((c>='0')&&(c<='9'))||((c>='a')&&(c<='f'))||((c>='A')&&(c<='F'))) { a[i++]=c; flag=1; } else if(flag==1) { a[i]='\0'; printf("对应的十进制数为:%d\n\n",exchange(a)); printf("是否继续?Y/N ?\n\n"); c=getchar(); if(c=='N'||c=='n') flag1=0; else { flag=0; i=0; printf("输入一个十六进制数\n\n"); } } } } int exchange(char a[]) { int i,n=0; for(i=0;a[i]!='\0';i++) { if((a[i]>='0')&&(a[i]<='9')) n=n*16+a[i]-'0'; if((a[i]>='a')&&(a[i]<='f')) n=n*16+a[i]-'a'+10; if((a[i]>='A')&&(a[i]<='F')) n=n*16+a[i]-'A'+10; } return(n); } 8-17

#include <iostream> void main() { void exchange(int n); int n; printf("输入一个整数\n\n"); scanf("%d",&n); printf("输出是:\n\n"); if(n<0) { putchar('-'); n=-n; } exchange(n); printf("\n\n"); } void exchange(int n) { int i; if((i=n/10)!=0) exchange(i); putchar(n%10+'0'); } 8-18 #include <iostream> void main() { int day_num(int year,int mon,int day); int year,mon,day; printf("输入年、月、日\n\n"); scanf("%d%d%d",&year,&mon,&day); printf("\n\n 输入的日期是当年的第%d 天\n\n",day_num(year,mon,day)); } int date[]={31,28,31,30,31,30,31,31,30,31,30,31}; int day_num(int year,int mon,int day) { int i,days=0; for(i=0;i<mon-1;i++) { days+=date[i]; } days+=day; if((year%4==0)&&((year%100)!=0)||(year%400==0)) days+=1; return days;

} 第九章 9-1 #include <iostream> #define exchange(x,y) t=x;x=y;y=t void main() { int x,y,t; printf("输入 x,y\n\n"); scanf("%d%d",&x,&y); exchange(x,y); printf("\n\n 交换后 x=%d,y=%d\n\n",x,y); } 9-2 #include <iostream> #define acr(x,y) ((x)%(y)) void main() { int x,y; printf("输入 x,y\n\n"); scanf("%d%d",&x,&y); printf("\n\n 余数为%d\n\n",acr(x,y)); } 9-3 #include <iostream> #include <math.h> #define s(a,b,c) ((a+b+c)/2) #define area(a,b,c,s) sqrt(s*(s-a)*(s-b)*(s-c)) void main() { float a,b,c,s,area; char m; int flag=1; while(flag==1) { printf("输入 a,b,c\n\n"); scanf("%f%f%f",&a,&b,&c); if(a>0&&b>0&&c>0&&(a+b>c||a+c>b||b+c>a)&&(fabs(a-b)<c&&fabs(a-c)<b&&fa bs(b-c)<a)) { s=s(a,b,c);

area=area(a,b,c,s); flag=0; printf("\n\n 面积 area= %8f\n\n",area); } else { printf("\n\n 输入有误!!是否重新输入?Y/N?\n\n"); ! getchar(); m=getchar(); if(m=='Y'||m=='y') flag=1; else flag=0; } } } 9-4 #include <iostream> #define LEAP_YEAR(y) ((y%4==0)&&(y%100)!=0||(y%400)==0) 来源:(http://blog.sina.com.cn/s/blog_48b65ecd0100cu2x.html) - 谭浩强 C 语言 程序设计(第三版)课后习题答案_水若寒冰_新浪博客 void main() { int y; printf("输入年份\n\n"); scanf("%d",&y); if(LEAP_YEAR(y)) printf("\n\n%d 年是闰年\n\n",y); else printf("\n\n%d 年不是闰年\n\n",y); } 9-6 #include <iostream> #define PR printf #define NL "\n\n" #define D "%f " #define D1 D NL #define D2 D D NL #define D3 D D D NL void main() { float x=1; PR(D1,x); PR(D2,x,x); PR(D3,x,x,x); }

9-7 #include <iostream> #include "format.h" void main() { int x=1; float y=2; char z[]="I love you"; PR(D1,x); PR(F1,y); PR(S1,z); } 9-8 #include <iostream> void main() { float x,y,z,t; printf("输入三个数 x,y,z\n\n"); scanf("%f%f%f",&x,&y,&z); t=(x>y)?x:y; t=(t>z)?t:z; printf("\n\n 三个数中最大的为:%f\n\n",t); } #include <iostream> #define MAX(a,b) ((a)>(b)?(a):(b)) void main() { float x,y,z; printf("输入三个数 x,y,z:\n\n"); scanf("%f%f%f",&x,&y,&z); printf("\n\n 其中最大的数为:%f\n\n",MAX(MAX(x,y),z)); } 9-10 #include <iostream> #define N 80 #define CHANGE 1 void main() { char str[N]; int i;

printf("输入一行字符串\n\n"); gets(str); #if CHANGE for(i=0;i<N&&((str[i])!='\0');i++) { if(((str[i]>='a')&&(str[i]<='z'))||((str[i]>='A')&&(str[i]<='Z'))) { if((str[i]=='z')||(str[i]=='Z')) str[i]=str[i]-25; else str[i]=str[i]+1; } } str[i]='\0'; puts(str); #else puts(str); #endif } 第十章 10.1 #include <iostream> void main() { void swap(int *p,int *q); int x,y,z; int *p1,*p2,*p3; printf("输入三个整数\n\n"); scanf("%d%d%d",&x,&y,&z); p1=&x; p2=&y; p3=&z; if(x>y) swap(p1,p2); if(x>z) swap(p1,p3); if(y>z) swap(p2,p3); printf("\n\n 三个数由小到达输出为:%d %d %d\n\n",x,y,z); } void swap(int *p,int *q) { int temp; temp=*p; *p=*q; *q=temp; }

10.2 #include <iostream> #include <string> #define N 80 void main() { void swap(char *p,char *q); char str1[N],str2[N],str3[N]; printf("请输入三个字符串\n\n"); scanf("%s",str1); scanf("%s",str2); scanf("%s",str3); if(strcmp(str1,str2)>0) swap(str1,str2); if(strcmp(str1,str3)>0) swap(str1,str3); if(strcmp(str2,str3)>0) swap(str2,str3); printf("\n\n 三 个 字 符 串 由 小 到 大 排 列 , 分 别 为 : \n\n%s\n%s\n%s\n",str1,str2,str3); } void swap(char *p,char *q) { char str[N]; strcpy(str,p); strcpy(p,q); strcpy(q,str); }

10.3 #include <iostream> #define N 10 void main() { void input(int num[N]); void swap(int *p,int *q); void exchange(int num[N]); void output(int num[N]); int num[N]; input(num); exchange(num); output(num); } void input(int num[N]) { int i;

printf("输入十个整数\n\n"); for(i=0;i<N;i++) { scanf("%d",&num[i]); } }

10.4 #include <iostream> #define N 10 #define M 3 void main() { void move(int num[N],int n,int m); int num[N]; int i; printf("输入%d 个整数\n\n",N); for(i=0;i<N;i++) { scanf("%d",&num[i]); } move(num,N,M); printf("\n\n 调整后的%d 个整数为:\n\n",N); for(i=0;i<N;i++) { printf("%d ",num[i]); } printf("\n\n"); } void swap(int *p,int *q) { int temp; temp=*p; *p=*q; *q=temp; } void move(int num[N],int n,int m) { int *p,*num_end; int temp; num_end=num+n; temp=*(num_end-1); for(p=num_end-1;p>=num;p--)

*p=*(p-1); *num=temp; m--; if(m>0) move(num,n,m); } 10.5 #include <iostream> #define N 8 void main() { void leave(int num[N]); int num[N]; int i,*p; p=num; for(i=0;i<N;i++) *(p+i)=i+1; leave(num); while(*p==0) p++; printf("最后留下的是第%d 个人\n\n",*p); } void leave(int num[N]) { int *p; int i=0,k=0,m=0; p=num; while(m<N-1) { if(*(p+i)!=0) k++; if(k==3) { *(p+i)=0; k=0; m++; } i++; if(i==N) i=0; } }

10.6 #include <iostream> #define N 10

void main() { int count(char str[N]); int i; char str[N]; printf("输入一个字符串\n\n"); gets(str); printf("\n\n 字符串长度为:%d\n\n",count(str)); } int count(char str[N]) { char *p; int i=0; p=str; while(*p!='\0') { i++; p++; } return(i); }

10.7 #include <iostream> #define N 80 #define M 4 void main() { void copy(char str1[N],char str2[N]); char str1[N],str2[N]; printf("输入字符串 str1\n\n"); gets(str1); printf("\n\n 输入字符串 str2\n\n"); gets(str2); copy(str1,str2); printf("\n\n 整合之后的字符串为:\n\n"); puts(str1); } void copy(char str1[N],char str2[N]) { char *p1,*p2; int i; p1=str1;

p2=str2; for(i=0;i<strlen(str2);i++) *(p1+M+i)=*(p2+i); *(p1+M+i)='\0'; }

10.8 #include <iostream> #define N 80 void main() { void count(char str[N],int *cap,int *low,int *space,int *num,int *oth); char str[N]; int a=0,b=0,c=0,d=0,e=0; int *cap,*low,*space,*num,*oth; cap=&a; low=&b; space=&c; num=&d; oth=&e; printf("输入一个字符串\n\n"); gets(str); count(str,cap,low,space,num,oth); printf("\n\n 大写字母个数为:%d\n\n 小写字母个数为:%d\n\n 空格个数 位 : %d\n\n 数 字 个 数 为 : %d\n\n 其 他 字 符 个 数 为:%d\n\n",*cap,*low,*space,*num,*oth); } void count(char str[N],int *cap,int *low,int *space,int *num,int *oth) { int i; for(i=0;str[i]!='\0';i++) { if(str[i]>='A'&&str[i]<='Z') (*cap)++; else if(str[i]>='a'&&str[i]<='z') (*low)++; else if(str[i]==' ') (*space)++; else if(str[i]>='0'&&str[i]<='9') (*num)++; else (*oth)++; } }

10.9 #include <iostream>

#define N 3 void main() { void move(int *p); int a[N][N]; int *p,i,j; printf("输入一个%d*%d 的矩阵\n\n",N,N); for(i=0;i<N;i++) for(j=0;j<N;j++) scanf("%d",&a[i][j]); p=&a[0][0]; move(p); for(i=0;i<N;i++) { for(j=0;j<N;j++) { printf("%d ",a[i][j]); } printf("\n"); } } void move(int *p) { int i,j,temp; for(i=0;i<N;i++) for(j=i;j<N;j++) { temp=*(p+i*N+j); *(p+i*N+j)=*(p+j*N+i); *(p+j*N+i)=temp; } }

10.10 #include <iostream> #define N 3 来源:(http://blog.sina.com.cn/s/blog_48b65ecd0100dco7.html) - 谭浩强 C 语言 程序设计(第三版)课后习题答案_水若寒冰_新浪博客 void main() { void swap(int *p,int *q); void sort(int *p); int arr[N][N];

int i,j,*p; printf("输入一个%d*%d 的矩阵\n\n",N,N); for(i=0;i<N;i++) { for(j=0;j<N;j++) { scanf("%d",&arr[i][j]); } } p=&arr[0][0]; sort(p); printf("调整后的矩阵为:\n\n"); for(i=0;i<N;i++) { for(j=0;j<N;j++) { printf("%d ",arr[i][j]); } printf("\n"); } } void swap(int *p,int *q) { int temp; temp=*p; *p=*q; *q=temp; } void sort(int *p) { int *max,*min; int i,j; max=p; min=p; for(i=0;i<N;i++) { for(j=0;j<N;j++) { if(*(p+i*N+j)>*max) max=p+i*N+j; if(*(p+i*N+j)<*min) min=p+i*N+j; } } swap(max,(p+(N-1)*(N+1)/2)); swap(min,p);

min=p+1; for(i=0;i<N;i++) { for(j=0;j<N;j++) { if((*(p+i*N+j)<*min)&&((p+i*N+j)!=p)) min=p+i*N+j; } } swap(min,(p+N-1)); min=p+1; for(i=0;i<N;i++) { for(j=0;j<N;j++) { if((*(p+i*N+j)<*min)&&((p+i*N+j)!=p)&&((p+i*N+j)!=(p+N-1))) min=p+i*N+j; } } swap(min,(p+(N-1)*N)); min=p+1; for(i=0;i<N;i++) { for(j=0;j<N;j++) { if((*(p+i*N+j)<*min)&&((p+i*N+j)!=p)&&((p+i*N+j)!=(p+N-1))&&((p+i*N+j)!=(p+( N-1)*N))) min=p+i*N+j; } } swap(min,(p+N*N-1)); }

10.11 #include <iostream> #define N 5 void main() { void swap(char *p,char *q); void sort(char *p); char str[N][N],*p; int i; printf("输入%d 个字符串\n\n",N); for(i=0;i<N;i++) scanf("%s",str[i]); p=&str[0][0];

sort(p); printf("\n\n 排序后的%d 个字符串为\n\n",N); for(i=0;i<N;i++) printf("%s\n",str[i]); } void swap(char *p,char *q) { char s[N]; strcpy(s,p); strcpy(p,q); strcpy(q,s); } void sort(char *p) { int i,j; for(i=0;i<N;i++) { for(j=i+1;j<N;j++) { if(strcmp((p+i*N),(p+j*N))>0) swap((p+i*N),(p+j*N)); } } }

10.12 #include <iostream> #define N 5 #define M 10 void main() { void sort(char *p[N]); char str[N][M],*p[N]; int i; printf("输入%d 个字符串\n\n",N); for(i=0;i<N;i++) scanf("%s",str[i]); for(i=0;i<N;i++) p[i]=str[i]; sort(p); printf("\n\n 排序后的%d 个字符串为\n\n",N); for(i=0;i<N;i++) printf("%s\n",p[i]); }

void sort(char *p[N]) { int i,j; char *q; for(i=0;i<N;i++) { for(j=i+1;j<N;j++) { if(strcmp(p[i],p[j])>0) { q=p[i]; p[i]=p[j]; p[j]=q; } } } }

10.13 #include <iostream> #include <math.h> void main() { float integral(float a,float b,int n,double (*fun)(double)); int n=100; float a,b,c; double (*fun)(double); printf("输入积分范围:(a,b)\n\n"); scanf("%f%f",&a,&b); fun=sin; c=integral(a,b,n,fun); printf("\n\nsin 积分结果为:%f\n\n",c); fun=cos; c=integral(a,b,n,fun); printf("\n\ncos 积分结果为:%f\n\n",c); fun=exp; c=integral(a,b,n,fun); printf("\n\nexp 积分结果为:%f\n\n",c); } float integral(float a,float b,int n,double (*fun)(double)) { int i;

float x,h,area; h=(b-a)/n; x=a; area=0; for(i=0;i<n;i++) { x=x+h; area=area+(*fun)(x)*h; } return(area); }

10.14 #include <iostream> #define N 20 void main() { void swap(int *p,int *q); void back(int *p,int n); int a[N],i,n; printf("输入个数 n\n\n"); scanf("%d",&n); printf("\n\n 输入%d 个整数\n\n",n); for(i=0;i<n;i++) scanf("%d",&a[i]); back(a,n); printf("\n\n 逆序排列为:\n\n"); for(i=0;i<n;i++) printf("%d ",a[i]); printf("\n\n"); } void swap(int *p,int *q) { int temp; temp=*p; *p=*q; *q=temp; } void back(int *p,int n) { int i; for(i=0;i<n/2;i++) {

swap(p+i,p+n-1-i); } } 10.15 #include <iostream> #define M 4 #define N 5 void main() { void aver_count1(char *cou,float *sco); void aver_stu(float *sco,float *ave); void fail2(char *cou,int *num,float *sco,float *ave); void good(char *cou,int *num,float *sco,float *ave); char course[N][10],*cou; float score[M][N],aver[M],*sco,*ave; int number[M],*num,i,j; cou=course[0]; printf("输入%d 门课程名\n\n",N); for(i=0;i<N;i++) scanf("%s",cou+i*10); printf("\n\n 按顺序输入%d 个学生学号和%d 门课程的成绩\n\n",M,N); printf("学号 "); for(i=0;i<N;i++) printf("%s ",cou+i*10); num=number; sco=&score[0][0]; for(i=0;i<M;i++) { scanf("%d",num+i); for(j=0;j<N;j++) { scanf("%f",sco+i*N+j); } } aver_count1(cou,sco); ave=aver; aver_stu(sco,ave); ave=aver; fail2(cou,num,sco,ave); ave=aver; good(cou,num,sco,ave); } void aver_count1(char *cou,float *sco)

{ int i; float sum,aver; sum=0; for(i=0;i<M;i++) sum+=(*(sco+i*N)); aver=sum/M; printf("第一门课%s 的平均成绩为:%f\n\n",cou,aver); } void aver_stu(float *sco,float *ave) { int i,j; float sum; for(i=0;i<M;i++) { sum=0; for(j=0;j<N;j++) { sum+=(*(sco+i*N+j)); } *(ave+i)=sum/N; } } void fail2(char *cou,int *num,float *sco,float *ave) { int i,j,k,flag; printf("============两门以上课程不及格的学生============\n\n"); printf("学号"); for(i=0;i<N;i++) printf(" %-8s",cou+i*10); printf(" 平均成绩\n\n"); for(i=0;i<M;i++) { flag=0; for(j=0;j<N;j++) { if(*(sco+i*N+j)<60) flag+=1; } if(flag>2) { printf("%-8d",*(num+i)); for(k=0;k<N;k++) { printf("%-8.2f",*(sco+i*N+k));

} printf("%-8.2f\n\n",*(ave+i)); } } } void good(char *cou,int *num,float *sco,float *ave) { int i,j,k,flag; printf("============平均成绩在 90 分以上或者每门课在 85 分以上的学生 ============\n\n"); printf("学号"); for(i=0;i<N;i++) printf(" %-8s",cou+i*10); printf(" 平均成绩\n\n"); for(i=0;i<M;i++) { flag=0; for(j=0;j<N;j++) { if(*(sco+i*N+j)>=85) flag+=1; } if(flag==5||(*(ave+i)>=90)) { printf("%-8d",*(num+i)); for(k=0;k<N;k++) { printf("%-8.2f",*(sco+i*N+k)); } printf("%-8.2f\n\n",*(ave+i)); } } } 10.16 #include <iostream> #define N 50 void main() { char str[N],*p; int i,j,temp; int number[N],*num; printf("输入一个字符串\n\n"); gets(str); p=str;

temp=0; j=0; num=number; for(i=0;(*(p+i))!='\0'&&i<N;i++) { if((*(p+i))>='0'&&(*(p+i))<='9') { if((*(p+i+1))>='0'&&(*(p+i+1))<='9') temp=temp*10+*(p+i)-48; else { temp=temp*10+*(p+i)-48; *(num+j)=temp; temp=0; j++; } } } printf("\n\n 字符串中共有%d 个整数,它们分别为:\n\n",j); for(i=0;i<j;i++) { printf("%d ",*(num+i)); } printf("\n\n"); } 10.17 #include <iostream> #define N 10 void main() { int strcmp(char *p1,char *p2); char str1[N],str2[N]; char *p1,*p2; printf("输入字符串 str1\n\n"); gets(str1); printf("\n\n 输入字符串 str2\n\n"); gets(str2); p1=str1; p2=str2; printf("\n\n%d\n\n",strcmp(p1,p2)); } int strcmp(char *p1,char *p2) {

int i,flag=0; for(i=0;*(p1+i)!='\0'&&*(p2+i)!='\0';i++) { if(*(p1+i)==*(p2+i)) flag=0; else { flag=*(p1+i)-*(p2+i); break; } } return flag; } 10.18 #include <iostream> void main() { char *mon[]={"一月份","二月份","三月份","四月份","五月份","六月份","七月份 ","八月份","九月份","十月份","十一月份","十二月份"}; int n; printf("输入一个月份号\n\n"); scanf("%d",&n); if(n>=1&&n<=12) printf("\n\n%s\n\n",mon[n-1]); else printf("\n\n%d 月份不存在\n\n",n); }

10.20 #include <iostream> #define N 5 #define MAX 100 void main() { void sort(char **p); char *pstr[N],**p,str[N][MAX]; int i; for(i=0;i<N;i++) pstr[i]=str[i]; printf("输入%d 个字符串\n\n",N); for(i=0;i<N;i++) gets(str[i]); p=pstr; sort(p); printf("\n\n 排序后的%d 个字符串为:\n\n",N);

for(i=0;i<N;i++) puts(*(p+i)); } void sort(char **p) { int i,j; char *temp; for(i=0;i<N;i++) { for(j=i;j<N;j++) { if(strcmp(*(p+i),*(p+j))>0) { temp=*(p+i); *(p+i)=*(p+j); *(p+j)=temp; } } } }

10.21 #include <iostream> #define N 100 void main() { void sort(int **p,int n); int i,n; int *pnum[N],num[N],**p; printf("输入整数个数\n\n"); scanf("%d",&n); for(i=0;i<n;i++) pnum[i]=&num[i]; printf("\n\n 输入%d 个整数\n\n",n); for(i=0;i<n;i++) scanf("%d",&num[i]); p=pnum; sort(p,n); printf("\n\n 排序后的%d 个整数为:\n\n",n); for(i=0;i<n;i++) printf("%d ",**(p+i)); printf("\n\n"); }

void sort(int **p,int n) { int *temp; int i,j; for(i=0;i<n;i++) { for(j=i;j<n;j++) { if(**(p+i)>**(p+j)) { temp=*(p+i); *(p+i)=*(p+j); *(p+j)=temp; } } } }

第十一章 11.1 #include <iostream> struct date { int year; int month; int day; }date; void main() { static int day_table[]={31,28,31,30,31,30,31,31,30,31,30,31}; int i,day_sum; printf("输入年,月,日\n\n"); scanf("%d%d%d",&date.year,&date.month,&date.day); day_sum=0; for(i=0;i<date.month-1;i++) day_sum+=day_table[i]; day_sum+=date.day; if((date.year%4==0)&&(date.year%100!=0)||(date.year%400==0)&&(date.month> 2)) day_sum+=1;

printf("\n\n 该日在本年中是第%d 天\n\n",day_sum); }

11.2 #include <iostream> struct date { int year; int month; int day; }date; void main() { int days(int y,int m,int d); printf("输入年,月,日\n\n"); scanf("%d%d%d",&date.year,&date.month,&date.day); printf("\n\n 该日在本年中是第%d 天\n\n",days(date.year,date.month,date.day)); } int days(int y,int m,int d) { static int day_table[]={31,28,31,30,31,30,31,31,30,31,30,31}; int i,day_sum; day_sum=0; for(i=0;i<m-1;i++) day_sum+=day_table[i]; day_sum+=date.day; if((y%4==0)&&(y%100!=0)||(y%400==0)&&(m>2)) day_sum+=1; return day_sum; } 11.3 #include <iostream> #define N 2 struct stu { int num; char name[10]; float score[3]; }stu[N]; void main() {

void print(struct stu *p); int i,j; struct stu *p; p=stu; for(i=0;i<N;i++) { printf("\n\n 输入第%d 个学生的成绩\n\n",i+1); printf("输入学号:"); scanf("%d",&((p+i)->num)); printf("\n 输入姓名:"); scanf("%s",(p+i)->name); for(j=0;j<3;j++) { printf("\n 输入成绩%d:",j+1); scanf("%f",&((p+i)->score[j])); } } print(stu); } void print(struct stu *p) { int i,j; printf("学号 姓名 成绩 1 成绩 2 成绩 3\n\n"); for(i=0;i<N;i++) { printf("%-8d%-8s",(p+i)->num,(p+i)->name); for(j=0;j<3;j++) { printf("%-8f",(p+i)->score[j]); } printf("\n\n"); } }

11.4 #include <iostream> #define N 2 struct stu { int num; char name[10]; float score[3]; }stu[N];

void main() { void input(struct stu *p); void print(struct stu *p); struct stu *p; p=stu; input(p); print(p); } void input(struct stu *p) { int i,j; for(i=0;i<N;i++) { printf("\n\n 输入第%d 个学生的成绩\n\n",i+1); printf("输入学号:"); scanf("%d",&((p+i)->num)); printf("\n 输入姓名:"); scanf("%s",(p+i)->name); for(j=0;j<3;j++) { printf("\n 输入成绩%d:",j+1); scanf("%f",&((p+i)->score[j])); } } } void print(struct stu *p) { int i,j; printf("学号 姓名 成绩 1 成绩 2 成绩 3\n\n"); for(i=0;i<N;i++) { printf("%-7d%-7s",(p+i)->num,(p+i)->name); for(j=0;j<3;j++) { printf("%-9.2f",(p+i)->score[j]); } printf("\n\n"); } }

11.5 #include <iostream>

来源: (http://blog.sina.com.cn/s/blog_48b65ecd0100dfur.html) - 谭浩强 C 语言程 序设计(第三版)课后习题答案_水若寒冰_新浪博客 #define N 3 struct stu { char num[10]; char name[10]; float score[3]; float average; }stu[N]; void main() { void input(struct stu *p); void aver(struct stu *p); float aver_total(struct stu *p); void print(struct stu *p); struct stu *p; p=stu; input(p); aver(p); print(p); } void input(struct stu *p) { int i,j; printf("按顺序依次输入学生的学号,姓名,成绩 1,成绩 2,成绩 3\n\n"); for(i=0;i<N;i++) { scanf("%s%s",(p+i)->num,(p+i)->name); for(j=0;j<3;j++) scanf("%f",&((p+i)->score[j])); } } void aver(struct stu *p) { int i,j; float sum; for(i=0;i<N;i++) { sum=0; for(j=0;j<3;j++) { sum+=(p+i)->score[j]; }

(p+i)->average=sum/3; } } float aver_total(struct stu *p) { float sum=0; for(;p<stu+N;p++) sum+=p->average; return (sum/N); } void print(struct stu *p) { int i,j; struct stu *q; float max=0; printf("三门课的总平均成绩为:%f\n\n",aver_total(p)); for(i=0;i<N;i++) { if((p+i)->average>max) { max=(p+i)->average; q=p+i; } } printf("最高分学生的数据为:\n\n"); printf("学号 姓名 成绩 1 成绩 2 成绩 3 平均成绩\n\n"); printf("%-7s%-7s",q->num,q->name); for(j=0;j<3;j++) { printf("%-8.2f",q->score[j]); } printf("%-8.2f",q->average); printf("\n\n"); }

11.8 #include <iostream> #include <malloc.h> #define NULL 0 #define LEN sizeof(struct student) struct student { long int num;

float score; struct student *next; }list_a,list_b; int n,sum; void main() { struct student *creat(void); struct student *insert(struct student *ha,struct student *hb); void print(struct student *head); struct student *ahead,*bhead,*abh; ahead=creat(); sum=n; bhead=creat(); sum=sum+n; abh=insert(ahead,bhead); print(abh); } struct student *creat(void) { struct student *head; struct student *p1,*p2; n=0; p1=p2=(struct student *)malloc(LEN); printf("输入学生的学号和成绩\n\n"); printf("如果输入的学号为 0,就停止输入\n\n"); scanf("%ld%f",&p1->num,&p1->score); head=NULL; while(p1->num!=0) { n=n+1; if(n==1) head=p1; else p2->next=p1; p2=p1; p1=(struct student *)malloc(LEN); scanf("%ld%f",&p1->num,&p1->score); } p2->next=NULL; return(head); } struct student *insert(struct student *ha,struct student *hb) { struct student *pa1,*pa2,*pb1,*pb2; pa1=pa2=ha;

pb1=pb2=hb; if(ha==NULL&&hb!=NULL) ha=hb; else { while((pb1->num>pa1->num)&&(pa1->next!=NULL)) { pa2=pa1; pa1=pa1->next; if(pb1->num<=pa1->num) { if(ha==pa1) ha=pb1; else pa2->next=pb1; pb2=pb1; pb1=pb1->next; pa2=pa1; pa1=pb2; pb2->next=pa2; } } if((pb1->num>pa1->num)&&(pa1->next==NULL)) pa1->next=pb1; } return (ha); } void print(struct student *head) { struct student *p; printf("\n\n 共有%d 条记录,分别为:\n\n",sum); p=head; if(head!=NULL) do { printf("%ld%8.2f\n",p->num,p->score); p=p->next; }while(p!=NULL); }

11.9 #include <iostream> #include <malloc.h> #define N 13 struct person { int num;

int next; }link[N+1]; void main() { int i,count,h; for(i=1;i<=N;i++) { if(i==N) link[i].next=1; else link[i].next=i+1; link[i].num=i; } printf("\n\n"); count=0; h=N; printf("退出者依次是:\n\n"); while(count<N-1) { i=0; while(i!=3) { h=link[h].next; if(link[h].num) i++; } printf("%d ",link[h].num); link[h].num=0; count++; } printf("\n\n 最后的成员是:"); for(i=1;i<=N;i++) { if(link[i].num) printf("%d\n\n",link[i].num); } }

11.10 #include <iostream> #include <malloc.h> #define LEN sizeof(struct student) #define NULL 0 struct student { long int num;

char name[20]; struct student *next; }a,b; int n; void main() { struct student *creat(void); struct student *dele(struct student *ahead,struct student *bhead); void print(struct student *head); struct student *p1,*p2; printf("输入 a 中同学的学号,姓名\n\n"); p1=creat(); printf("输入 b 中同学的学号,姓名\n\n"); p2=creat(); print(dele(p1,p2)); } struct student *creat(void) { struct student *head; struct student *p1,*p2; n=0; p1=p2=(struct student *)malloc(LEN); scanf("%d%s",&p1->num,p1->name); head=NULL; while(p1->num!=0) { n+=1; if(n==1) head=p1; else p2->next=p1; p2=p1; p1=(struct student *)malloc(LEN); scanf("%d%s",&p1->num,p1->name); } p2->next=NULL; return(head); } struct student *dele(struct student *ahead,struct student *bhead) { struct student *ah,*bh; struct student *ap1,*ap2,*bp1,*bp2; ap1=ap2=ahead; bp1=bp2=bhead; while(ap1->next) {

while(bp1->next) { if(ap1->num!=bp1->num) { bp2=bp1; bp1=bp1->next; } else { if(ap1==ahead) ahead=ap1->next; else ap2->next=ap1; ap2=ap1; ap1=ap1->next; break; } } } return(ahead); } void print(struct student *head) { struct student *p; printf("删除后 a 中学生学号及成绩分别为:\n\n"); p=head; if(head!=NULL) { do { printf("%ld%s",p->num,p->name); p=p->next; }while(p!=NULL); } }


推荐相关:

C语言程序设计+谭浩强+第三版+课后习题答案.doc

C语言程序设计+谭浩强+第三版+课后习题答案_电脑基础知识_IT/计算机_专业资


C语言程序设计第三版谭浩强课后习题答案完整版.doc

C语言程序设计第三版谭浩强课后习题答案完整版 - C 语言程序设计第三版谭浩强 课后习题答案完整版 第一章 1.5 请参照本章例题,编写一个 C 程序,输出以下信息: ...


C语言程序设计_第三版_谭浩强主编_课后习题答案_完整版....pdf

谭浩强| 程序设计| C语言程序设计_第三版_谭浩强主编_课后习题答案_完整版_


C语言程序设计谭浩强第三版++课后习题答案.doc

C语言程序设计谭浩强第三版++课后习题答案 - 第六章 循环语句 6.1 输入两


C语言程序设计第三版谭浩强课后习题答案完整版.doc

C语言程序设计第三版谭浩强课后习题答案完整版 - 1.5 *** Very Go


C语言程序设计第三版谭浩强课后习题答案1~13章.pdf

C语言程序设计第三版谭浩强课后习题答案1~13章 - 1.5请参照本章例题,编写一个C程序,输出以下信息: *** Ve...


C语言设计谭浩强第三版的课后习题答案.doc

C 语言设计谭浩强第三版课后习题答案 1.5 请参照本章例题,编写一个 C 程序,输出以下信息: main() { printf(" *** \n"); printf("\n"); printf(" V...


C语言程序设计(第3版)谭浩强课后习题答案.doc

C语言程序设计(第3版)谭浩强课后习题答案_IT认证_资格考试/认证_教育专区 暂无评价|0人阅读|0次下载 | 举报文档 C语言程序设计(第3版)谭浩强课后习题答案_IT...


C语言设计谭浩强第三版的课后习题答案.doc

C语言设计谭浩强第三版课后习题答案 - C 语言设计谭浩强第三版课后习题答案(一) 1.5 请参照本章例题,编写一个 C 程序,输出以下信息: *** ...


C语言程序设计谭浩强第三版 课后习题答案.doc

C语言程序设计谭浩强第三版 课后习题答案 - 第六章 循环语句 6.1 输入两个


C语言程序设计_第三版_谭浩强_课后答案[1-13章]_图文.pdf

C语言程序设计_第三版_谭浩强_课后答案[1-13章] - 对初学c的同学很有帮助,课后习题得认真做哦!


C语言程序设计第三版谭浩强课后习题答案完整版_IT168文库.pdf

C语言程序设计第三版谭浩强课后习题答案完整版_IT168文库 2018-06-18 22:54:17 力荐,C语言程序设计第三版谭浩强课后习题答案完整版_IT168文库 2018-06-18 ...


C语言程序设计谭浩强第三版的课后习题答案1.txt

C语言程序设计谭浩强第三版课后习题答案1 - C语言设计谭浩强第三版课后习题答案(一) 1.5请参照本章例题,编写一个C程序,输出以下信息: *** ...


谭浩强c语言程序设计教程第三版习题答案(20130523152651)_图文....pdf

谭浩强c语言程序设计教程第三版习题答案(20130523152651)_电脑基础


谭浩强_C语言程序设计_第三版_习题答案_图文.pdf

谭浩强| 语言程序设计| 谭浩强_C语言程序设计_第三版_习题答案_理学_高等教育_教育专区。谭浩强 C语言程序设计 第三版 习题答案 你懂的~ 您...


C语言设计谭浩强第三版的课后习题答案.doc

C语言设计谭浩强第三版课后习题答案 - C 语言设计谭浩强第三版课后习题答案(一) 1.5 请参照本章例题,编写一个 C 程序,输出以下信息: *** ...


《C语言程序设计》课后习题答案(第四版)谭浩强.doc

C语言程序设计课后习题答案(第四版)谭浩强 - 第 1 章程序设计和 C 语


超多大学课后习题答案与大家分享啦~~.txt

tid=80&fromuid=419446 C语言程序设计教程 第三版 (谭浩强 张基温 著) 高等教育出版社 课后答案 http://www.khdaw.com/bbs/viewthread.php?tid=79&fromuid=...


《C语言程序设计》课后习题答案(第四版)谭浩强.doc

C语言程序设计课后习题答案(第四版)谭浩强 - 第 1 章程序设计和 C 语


C语言程序设计_第三版_谭浩强主编第68章课后习题答案.doc

C语言程序设计_第三版_谭浩强主编第68章课后习题答案 - C 语言第 68 章课后习题答案 第六章 循环语句 6.1 输入两个正数,求最大公约数和最小公倍数....

网站首页 | 网站地图
All rights reserved Powered by 学霸学习网 www.tceic.com
copyright ©right 2010-2021。
文档资料库内容来自网络,如有侵犯请联系客服。zhit325@126.com