C语言程序设计课后习题答案谭浩强_第1页
C语言程序设计课后习题答案谭浩强_第2页
C语言程序设计课后习题答案谭浩强_第3页
C语言程序设计课后习题答案谭浩强_第4页
C语言程序设计课后习题答案谭浩强_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第 1 章程序设计和 C 语言 1 什么是计算机程序 1 什么是计算机语言 1 语言的发展及其特点 3 最简单的 C语言程序 5 最简单的 C 语言程序举例 6 语言程序的结构 10 运行 C程序的步骤与方法 12 程序设计的任务 141-5 #include int main ( )*nn); printf ( printf( Very Good!nn);*n);printf ( return 0;1-6#include int main()int a,b,c,max; printf(please input a,b,c:n); scanf(%d,%d,%d,&a,&b,&c);max=a;

2、if (maxb)max=b;if (maxc)max=c;printf(The largest number is %dn,max); return 0;第 2 章算法程序的灵魂 16 什么是算法 16 简单的算法举例 17 算法的特性 21怎样表示一个算法 22用自然语言表示算法 22用流程图表示算法 22 三种基本结构和改进的流程图 26 用 N S 流程图表示算法 28 用伪代码表示算法 31 用计算机语言表示算法 32 结构化程序设计方法 34 习题 3637第章最简单的 C 程序设计顺序程序设计 顺序程序设计举例 37 数据的表现形式及其运算 39 常量和变量 39数据类型 42整

3、型数据 44 字符型数据 47浮点型数据 49怎样确定常量的类型 51运算符和表达式 52 语句 57语句的作用和分类 57 最基本的语句赋值语句 59 数据的输入输出 65 输入输出举例 65 有关数据输入输出的概念 67 用 printf 函数输出数据 68 用 scanf 函数输入数据 75 字符数据的输入输出 78 习题 823- 1 #include #include int main()float p,r,n;r=;n=10;p=pow(1+r,n); printf(p=%fn,p);return 0;3- 2-1#include #include int main() float

4、 r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;p=1000;r5=;r3=;r2=;r1=;r0=;p1=p*(1+r5)*5); #include #include int main()float d=300000,p=6000,r=,m;m=log10(p/(p-d*r)/log10(1+r);printf(m=%n,m);return 0;3- 4#include int main()int c1,c2;c1=197;c2=198;printf(c1=%c,c2=%cn,c1,c2);printf(c1=%d ,c2=%dn,c1,c2); return 0;3- 5

5、#include int main()int a,b;float x,y;char c1,c2;scanf(a=%d b=%d,&a,&b);scanf(%f %e,&x,&y);scanf(%c%c,&c1,&c2);printf(a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%cn,a,b,x,y,c1,c2); return 0;3-6#include int main()char c1=C,c2=h,c3=i,c4=n,c5=a;c1=c1+4;c2=c2+4;c3=c3+4;c4=c4+4;c5=c5+4;printf(passwor is %c%c%c%c%cn,c1,

6、c2,c3,c4,c5); return 0;3-7 #include int main ()float h,r,l,s,sq,vq,vz;float pi=;printf( 请输入圆半径 r ,圆柱高 h); scanf(%f,%f,&r,&h); #include int main() int x,y;printf( 输入 x:);scanf(%d,&x);if(x1) /* x1 */ y=x;printf(x=%3d, y=x=%dn ,x,y);else if(x10) /* 1=x=10 */ y=3*x-11;printf(x=%d, y=3*x-11=%dn,x,y);retu

7、rn 0;4- 7-1 #include int main()int x,y;printf(enter x:);scanf(%d,&x);y=-1;if(x!=0)if(x0)y=1;elsey=0;printf(x=%d,y=%dn,x,y);return 0;4- 7-2#include int main()int x,y;printf(please enter x:);scanf(%d,&x);y=0;if(x=0)if(x0) y=1;else y=-1;printf(x=%d,y=%dn,x,y);return 0;4- 8#include int main() float scor

8、e;char grade;printf( 请输入学生成绩 :); scanf(%f,&score);while (score100|score0)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 2: case 1:case 0: grade=E;printf( 成绩是 %, 相应

9、的等级是 %cn ,score,grade); return 0;4- 9#include #include int main()int num,indiv,ten,hundred,thousand,ten_thousand,place; 位, 万位和位数printf( 请输入一个整数 (0-99999):); scanf(%d,&num);if (num9999) place=5;else if (num999)place=4;else if (num99) .=%dn,sn); return 0;5- 6 #include int main()double s=0,t=1;int n;fo

10、r (n=1;n=20;n+)t=t*n;s=s+t;printf(1!+2!+.+20!=%n,s); return 0;5- 7#include int main() int n1=100,n2=50,n3=10;double k,s1=0,s2=0,s3=0;for (k=1;k=n1;k+)/*计算到 100 的和 */s1=s1+k;for (k=1;k=n2;k+)/*计算到 50 各数的平方和 */s2=s2+k*k;for (k=1;k=n3;k+)/*计算到 10 的各倒数和 */s3=s3+1/k; printf(sum=%n,s1+s2+s3);return 0;5- 8

11、#include int main()int i,j,k,n;printf(parcissus numbers are );for (n=100;n1000;n+)i=n/100;j=n/10-i*10;k=n%10;if (n=i*i*i + j*j*j + k*k*k)printf(%d ,n);printf(n);return 0;定义寻找范围 */5- 9-1#define M 1000 /*#include int main()int k1,k2,k3,k4,k5,k6,k7,k8,k9,k10;int i,a,n,s;n=0;/* n用来累计 a 的因子的个数*/s=a;/* s用

12、来存放尚未求出的因子之和,开始时等于a */(i=1;ia;i+)/*检查 i 是否 a 的因子 */if (a%i=0)/*如果 i 是 a 的因子 */n+;/* n加 1,表示新找到一个因子*/s=s-i;/* s减去已找到的因子, s 的新值是尚未求出的因子之和switch(n)/*将找到的因子赋给 k1.k9 ,或 k10 */case 1:k1=i; break;/*找出的笫 1个因子赋给 k1 */case 2:k2=i; break;/*找出的笫 2个因子赋给 k2 */case 3:k3=i; break;/*找出的笫 3个因子赋给 k3 */case 4:k4=i; bre

13、ak;/*找出的笫 4个因子赋给 k4 */case 5:k5=i; break;/*找出的笫 5个因子赋给 k5 */case 6:k6=i; break;/*找出的笫 6个因子赋给 k6 */case 7:k7=i; break;/*找出的笫 7个因子赋给 k7 */case 8:k8=i; break;/*找出的笫 8个因子赋给 k8 */for (a=2;a1) printf(%d,%d,k1,k2); /* n1if (n2) printf(,%d,k3);/* n2个因子 */if (n3) printf(,%d,k4);/* n3个因子 */if (n4) printf(,%d,

14、k5);/*if (n5) printf(,%d,k6);if (n6) printf(,%d,k7);if (n7) printf(,%d,k8);if (n8) printf(,%d,k9);if (n9) printf(,%d,k10);printf(n);return 0;5-9-2#include int main()int m,s,i;for (m=2;m1000;m+)s=0;for (i=1;im;i+)if (m%i)=0) s=s+i;if(s=m)printf(%d,its factors are ,m); for (i=1;im;i+) if (m%i=0) print

15、f(%d ,i); printf(n);return 0;5-10#include int main()int i,n=20;double a=2,b=1,s=0,t;for (i=1;i=n;i+)s=s+a/b;t=a, a=a+b,b=t;printf(sum=%n,s);return 0;5-11#include int main()double sn=100,hn=sn/2;int n;for (n=2;n=10;n+)sn=sn+2*hn; /* 第 n 次落地时共经过的米数 */ hn=hn/2; /* 第 n 次反跳高度 */ printf( 第 10 次落地时共经过 %f米n

16、,sn);printf( 第 10次反弹 %f米n,hn);return 0;5-12#include int main() int day,x1,x2;day=9;x2=1;while(day0)x1=(x2+1)*2; /* 第 1天的桃子数是第 2 天桃子数加 1后的 2倍.*/ x2=x1;day-;printf(total=%dn,x1);return 0;5-13#include #include int main()float a,x0,x1;printf(enter a positive number:);scanf(%f,&a);x0=a/2;x1=(x0+a/x0)/2;d

17、ox0=x1;x1=(x0+a/x0)/2;while(fabs(x0-x1)=1e-5);printf(The square root of % is %n,a,x1); return 0;5-14#include #include int main()double x1,x0,f,f1;x1=;dox0=x1;f=(2*x0-4)*x0+3)*x0-6;f1=(6*x0-8)*x0+3;x1=x0-f/f1;while(fabs(x1-x0)=1e-5);printf(The root of equation is %n,x1); return 0;5-15#include #includ

18、e int main()float x0,x1,x2,fx0,fx1,fx2;do printf(enter x1 & x2:); scanf(%f,%f,&x1,&x2); fx1=x1*(2*x1-4)*x1+3)-6; fx2=x2*(2*x2-4)*x2+3)-6;while(fx1*fx20);dox0=(x1+x2)/2; fx0=x0*(2*x0-4)*x0+3)-6;if (fx0*fx1)=1e-5);printf(x=%n,x0);return 0;5-16#include int main()int i,j,k;for (i=0;i=3;i+)for (j=0;j=2-i

19、;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);return 0;5-17#include int main()char i,j,k; /*是 a 的对手 ;j 是 b 的对手 ;k 是 c 的对手 */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

20、!=x & k!=z) printf(A-%cnB-%cnC-%cn,i,j,k); return 0;第 6 章利用数组处理批量数据 142 怎样定义和引用一维数组 142 怎样定义一维数组 143 怎样引用一维数组元素 144 一维数组的初始化 145 一维数组程序举例 146 怎样定义和引用二维数组 148 怎样定义二维数组 149 怎样引用二维数组的元素 150 二维数组的初始化 151 二维数组程序举例 152 字符数组 154怎样定义字符数组 154 字符数组的初始化 155 怎样引用字符数组中的元素 155 字符串和字符串结束标志 156 字符数组的输入输出 159 使用字符串处

21、理函数 161 字符数组应用举例 165 习题 168 6-1#include #include int main()int i,j,n,a101;for (i=1;i=100;i+)ai=i;a1=0;for (i=2;isqrt(100);i+)for (j=i+1;j=100;j+)if(ai!=0 & aj!=0)if (aj%ai=0) aj=0;printf(n);for (i=2,n=0;i=100;i+) if(ai!=0) printf(%5d,ai);n+;if(n=10)printf(n);n=0;printf(n);return 0;6-2#include int ma

22、in()int i,j,min,temp,a11;printf(enter data:n);for (i=1;i=10;i+)printf(a%d=,i);scanf(%d,&ai);printf(n);printf(The orginal numbers:n);for (i=1;i=10;i+)printf(%5d,ai);printf(n);for (i=1;i=9;i+)min=i;for (j=i+1;jaj) min=j;temp=ai;ai=amin;amin=temp;printf(nThe sorted numbers:n);for (i=1;i=10;i+)printf(%5

23、d,ai);printf(n);return 0;6-3#include int main()int a33,sum=0;int i,j;printf(enter data:n);for (i=0;i3;i+)for (j=0;j3;j+)scanf(%3d,&aij);for (i=0;i3;i+)sum=sum+aii;printf(sum=%6dn,sum);return 0;6-4#include int main() int a11=1,4,6,9,13,16,19,28,40,100;int temp1,temp2,number,end,i,j; printf(array a:n)

24、; for (i=0;iend) a10=number;elsefor (i=0;inumber) temp1=ai; ai=number;for (j=i+1;j11;j+)temp2=aj;aj=temp1; temp1=temp2;break;printf(Now array a:n); for (i=0;i11;i+)printf(%5d,ai);printf(n);return 0;6-5#include #define N 5int main() int aN,i,temp;printf(enter array a:n);for (i=0;iN;i+)scanf(%d,&ai);p

25、rintf(array a:n);for (i=0;iN;i+)printf(%4d,ai);for (i=0;iN/2;i+) n,number);printf(continu or not(Y/N);scanf( %c,&c);if (c=N|c=n)flag=0;return 0;6-10 #include int main()int i,j,upp,low,dig,spa,oth;char text380;upp=low=dig=spa=oth=0;for (i=0;i3;i+) printf(please input line %d:n,i+1); gets(texti);for (

26、j=0;j=A& textij=a & textij=0 & textij=9) else if (textij= ) spa+;elseoth+;printf(nupper case: %dn,upp); printf(lower case: %dn,low); printf(digit : %dn,dig); printf(space : %dn,spa); printf(other : %dn,oth); return 0;6-11 #include int main() char a5=*,*,*,*,*;int i,j,k;char space= ;for (i=0;i5;i+) p

27、rintf(n);printf( );for (j=1;j=i;j+) printf(%c,space);for (k=0;k5;k+) printf(%c,ak);printf(n);return 0;6-12a-c#include int main() int j,n;char ch80,tran80;printf(input cipher code:); gets(ch);printf(ncipher code :%s,ch);j=0;while (chj!=0) if (chj=A) & (chj=a) & (chj=z)tranj=219-chj;elsetranj=chj;j+;n

28、=j;printf(noriginal text:);for (j=0;jn;j+)putchar(tranj);printf(n);return 0;6-12b#include int main()int j,n;char ch80;printf(input cipher code:n);gets(ch);printf(ncipher code:%sn,ch);j=0;while (chj!=0) if (chj=A) & (chj=a) & (chj=z) chj=219-chj;elsechj=chj;j+;n=j;printf(original text:);for (j=0;jn;j

29、+)putchar(chj);printf(n);return 0;6-13#include int main() char s180,s240;int i=0,j=0;printf(input string1:);scanf(%s,s1);printf(input string2:);scanf(%s,s2);while (s1i!=0) i+;while(s2j!=0)s1i+=s2j+;s1i=0;printf(nThe new string is:%sn,s1); return 0;6-14#include int main() int i,resu;char s1100,s2100;

30、printf(input string1:);gets(s1);printf(ninput string2:);gets(s2);i=0;while (s1i=s2i) & (s1i!=0)i+; if (s1i=0 & s2i=0)resu=0;elseresu=s1i-s2i; printf(nresult:%d.n,resu);return 0;6-15#include #include int main() char s180,s280;int i;printf(input s2:);scanf(%s,s2);for (i=0;i=strlen(s2);i+) s1i=s2i;prin

31、tf(s1:%sn,s1);return 0;170第 7 章用函数实现模块化程序设计为什么要用函数 170 怎样定义函数 172 为什么要定义函数 172 定义函数的方法 173 调用函数 174函数调用的形式 174 函数调用时的数据传递 175 函数调用的过程 177函数的返回值 178对被调用函数的声明和函数原型 179204函数的嵌套调用 182 函数的递归调用 184 数组作为函数参数 192 数组元素作函数实参 193 数组名作函数参数 194 多维数组名作函数参数 197 局部变量和全局变量 199 局部变量 199 全局变量 200 变量的存储方式和生存期 204 动态存储方

32、式与静态存储方式 局部变量的存储类别 205 全局变量的存储类别 208 存储类别小结 212 关于变量的声明和定义 214 内部函数和外部函数 215 内部函数 215 外部函数 215 习题 218 7-1-1 #include int main() int hcf(int,int);int lcd(int,int,int);int u,v,h,l; scanf(%d,%d,&u,&v); h=hcf(u,v); printf(,h); l=lcd(u,v,h); printf(,l);return 0;int hcf(int u,int v)int t,r;if (vu)t=u;u=v;

33、v=t;while (r=u%v)!=0) u=v;v=r;return(v);int lcd(int u,int v,int h)return(u*v/h);7-1-2#include int Hcf,Lcd;int main() void hcf(int,int); void lcd(int,int); int u,v; scanf(%d,%d,&u,&v); hcf(u,v); lcd(u,v); printf(,Hcf); printf(,Lcd);return 0;void hcf(int u,int v)int t,r;if (vu) t=u;u=v;v=t;while (r=u%

34、v)!=0) u=v;v=r;Hcf=v;void lcd(int u,int v)Lcd=u*v/Hcf;7-2#include #include float x1,x2,disc,p,q;int main()void greater_than_zero(float,float);void equal_to_zero(float,float);void smaller_than_zero(float,float);float a,b,c;printf(input a,b,c:);scanf(%f,%f,%f,&a,&b,&c);printf(equation: %*x*x+%*x+%=0n,

35、a,b,c); disc=b*b-4*a*c;printf(root:n);if (disc0)greater_than_zero(a,b);printf(x1=%fttx2=%fn,x1,x2);else if (disc=0)equal_to_zero(a,b);printf(x1=%fttx2=%fn,x1,x2);elsesmaller_than_zero(a,b);printf(x1=%f+%fitx2=%f-%fin,p,q,p,q);return 0;void greater_than_zero(float a,float b)x1=(-b+sqrt(disc)/(2*a);x2

36、=(-b-sqrt(disc)/(2*a);void equal_to_zero(float a,float b)x1=x2=(-b)/(2*a);void smaller_than_zero(float a,float b)p=-b/(2*a);q=sqrt(-disc)/(2*a);7-3#include int main()int prime(int);int n;printf(input an integer:);scanf(%d,&n);if (prime(n)printf(%d is a prime.n,n);else printf(%d is not a prime.n,n);

37、return 0;int prime(int n)int flag=1,i;for (i=2;in/2 & flag=1;i+) if (n%i=0) flag=0;return(flag);7-4#include #define N 3int arrayNN;int main() void convert(int array3);int i,j;printf(input array:n);for (i=0;iN;i+)for (j=0;jN;j+) scanf(%d,&arrayij); printf(noriginal array :n);for (i=0;iN;i+)for (j=0;jN;j+) printf(%5d,arrayij);printf(n);convert(array); printf(convert array:n);for (i=0;iN;i+)for (j=0;jN;j+) printf(%5d,arrayij); printf(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论