C语言复习题答案.doc_第1页
C语言复习题答案.doc_第2页
C语言复习题答案.doc_第3页
C语言复习题答案.doc_第4页
C语言复习题答案.doc_第5页
免费预览已结束,剩余16页可下载查看

下载本文档

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

文档简介

c语言程序设计教程(第2版)参考答案习题11-1 单选题15 BBBAC1-2 填空题1.函数2.主函数main(),主函数main()3.主函数main()4.函数首部,函数体5., 6.顺序结构,选择结构,循环结构7.c, .obj, .exe第2章2.1 单选题15 DBDCA 610 DCABA 1115 CADBD 1620CAABC2125ADAAA 2630ACBAC 3135BADDA 3640BBCCC4145BDABA 4649ABBB2.1 填空题12.00000021,0.539,2465100,d6(1)20 (2)0 (3)607. (1)10,6,4 (2)6,9,15 (3)3,60,838. 559. 11 6 410.511. double12.整型 字符型 实型 枚举类型13.数据类型 数据类型14. 字母 数字 下划线 字母 下划线15. 单精度 双精度16. 变量初始化17. 双引号18. 019. x=3.600000,i=3习题33-1 选择题1-5BDABC 6-10ADCAC 11-15BBBCC 16-20 CDCDA21-25 CACAA 26-29 BCBA3-2 填空题1.32.02613.0x104. 2, 1 互换a,b的值5.6.66.0037.5.0,4,c=38.i=10,j=209.(1) 65 (2) 65,A (3) 56.123400,123.456001 (4) 3.141600 (5) 8765.432 (6) 5.864000e+002 (7) 3.141600e+000 (8) 3.1416 (9) 8765 (10) 3.1416,8765.4310.a=2 b=5x=8.8 y=76.34c1=65 c2=9711. B6612. n1=%dnn2=%dn13. 1214. 1115. 25 21 3716. 1003017. 1B18. 8819. 2 20.00000020 67 G习题44-1单选题15 AADAD 610 ACB BB 1115BADAD 1620BADBA2125CDBDD 2630DCDCA 3135DAACB 3640BDBAD4142AA4-2填空题1. 12. (1) a0 | b0 (2) x0 & x=10 (3) a=1.5 & b=1.5 & c=1.5 (4)pa | pb | pb?a:b)c?max:c 5-46175,0,38. (1) (a=0) (2) (b=0)(3) (disc=A& c=Z ch=ch-3215. -116.0 1习题55-1单选题15 CDABA 610 ABDDB1115 DBCBC 16-21 DBCBCD5-2填空题1202333 3(1) iaj3 (1) r+bk (2) *x4. 1 3 7 155. &aiai 或 *(a+i)6. m-1,n-17. (1)i10.0) a=a-10.0; else a=a+10.0; if(ba) ; else b=a-b; printf(a=%f, b=%fn,a,b); 实验4 循环结构程序设计(1) 略(2) 略(3)编写一个程序,打印输出半径为110的圆的面积,若面积为4090则予以打印,否则,不予打印。#include stdio.hmain() float r=0, area=0; while(r10 & area40) printf(r=%f, area=%fn,r,area); r=r+1; area=3.1415926*r*r; (4)从键盘输入一批整数,统计其中不大于100的非负数数值的个数。(用while循环实现。)#include stdio.hmain() int x,i=0; scanf(%d,&x); while(x=0) if(x=1e-4) pi=pi+t; n=n+2.0; k=-k; t=k/n; pi=pi*4; printf(pi=%lfn,pi);(6)解决猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,只剩一个桃子了。求第一天猴子共摘了多少个桃子。#include main() int i,m,n; for (n=1,i=1;i10;i+) m=2*n+2; n=m; printf(total=%dn,m);(7)取彩球问题。现有12个彩球3个白球、3个红球、6个黑球,从中任意取n(2n12)个球,求所有不同的取法。#include stdio.hmain() int n,white,red,yellow,count=0; printf(Please input the number of ball took:); scanf(%d,&n); printf(white red yellown); for(white=0;white=3;white+) for(red=0;red=0 & yellowv) a=u; u=v; v=a; while(b=u%v)!=0) u=v; v=b; return(v);int led(int x,int y,int h) return(x*y/h);main() int h,l; scanf(%d%d,&x,&y); h=hef(x,y); printf(HCF=%dn,h); l=led(x,y,h); printf(LCD=%dn,l);l 不用全局变量:#include stdio.hint hef(int x,int y) int a,b; if(yx) a=x; x=y; y=a; while(b=x%y)!=0) x=y; y=b; return(y);int led(int x,int y,int h) return(x*y/h);main() int x,y,h,l; scanf(%d%d,&x,&y); h=hef(x,y); printf(HCF=%dn,h); l=led(x,y,h); printf(LCD=%dn,l);(4)计算s = 1/1-1/2+1/3-+1/9999-1/10000,分别采用下列各种方法,每种方法单独用一个函数实现,最后加以比较: 从左到右各项相加; 从右到左各项相加; 从左到右各个正项和负项分别相加; 从右到左各个正项和负项分别相加。#include stdio.hvoid lsum(int n);void rsum(int n);void lsumc(int n);void rsumc(int n);main() lsum(10000); rsum(10000); lsumc(10000); rsumc(10000);void lsum(int n) int i,k=1; double sum=0,t; for(i=1;i=1;i-) t=1.0*k/i; sum+=t; k=-k; printf(the rsum is:%lfn,sum);void lsumc(int n) int i; double sum=0; for(i=1;i=n-1;i+,i+) sum+=1.0/i; for(i=2;i=2;i-,i-) sum-=1.0/i; for(i=n-1;i=1;i-,i-) sum+=1.0/i; printf(the rsumc is:%lfn,sum);(5)猴子吃桃问题的函数化。把猴子吃桃问题写成一个函数,使它能够求得指定一天开始时的桃子数。#include stdio.hint monkey(int k) int i,m,n; for(n=1,i=1;i=10-k;i+) m=2*n+2; n=m; return(n);main() int day; printf(Please input the day(1=day=10):n); scanf(%d,&day); printf(day: %d, total:%d,day, monkey(day); (6)菜单程序。编写一个菜单程序,运行后首先在屏幕显示如图所示的菜单,当输入数值1时,调用显示“”图案的函数;当输入数值2时,调用显示“$”图案的函数;当输入数值3时,程序结束。#include stdio.hvoid view1();void view2();main() int op; printf(n*n); printf( Menu section n); printf( 1.view() n); printf( 2.view($) n); printf( 3.exit n); printf(*n); printf(nPlease input selection:n); while(1) scanf(%d,&op); if(op=1) view1(); printf(nPlease input selection:); else if(op=2) view2(); printf(nPlease input selection:); else return; void view1() int i; for(i=1;i15;i+) putchar(); return;void view2() int i,j; for(i=1;i5;i+) for(j=1;ji;j+)putchar( ); for(j=1;j10;j+) putchar($); printf(n); return;实验6 数组(1) 略(2) 略(3)设有含10个元素的一维整型数组,其中偶数和奇数各占一半,将该数组变换为25的二维数组,且偶数和奇数各成一行。#include stdio.hmain() int a10,b25,i,j=0,k=0; printf(Please input the array a:n); for(i=0;i10;i+) scanf(%d,&ai); for(i=0;i10;i+) if(ai%2=0) b0j=ai;j+; else b1k=ai; k+; for(j=0;j=1;j+) for(k=0;k=4;k+) printf(b%d%d=%d ,j,k,bjk);(4)找出一个二维数组的鞍点,即该位置上的元素在所在行上最大,在所在列上最小,注意也可能没有鞍点。#include stdio.h#define M 3#define N 4main() int aMN,i,j,k; printf(Please input the array a:n); for(i=0;iM;i+) for(j=0;jN;j+) scanf(%d,&aij); for(i=0;iM;i+) k=0; for(j=1;jaik) k=j; for(j=0;jM;j+) if(ajkaik) break; if(j=M) printf(%d %d,%dn,aik,i,k); (5)有n个人围成一圈,顺序编号。从第1个人开始报数(从1到m),凡报到m的人退出圈子,求最后一个圈中的人的编号。#include stdio.hmain()int i = 0;int k = 0;int quit_num = 0;int n;/总人数int m;/报数的最大数int num100;/保存所有人的编号int *p = num;/初始化指针,使其指向num数组printf(Please input number of person: n = );scanf(%d, &n);printf(Please input the number m = );scanf(%d, &m);/*给所有的人编号为1到n */for (i = 0 ; i n ; i + ) *(p + i) = i + 1;i = 0;/*当未退出人数大于1时 执行循环*/while(quit_num n - 1) while (in) if(*(p+i)=0) k+; if(k=m) *(p+i)=0; quit_num+; k=0; i+; i=0;while (*p = 0) p +;/查找留在圈中的人printf(The last ones number is : %dn , *p);实验7 指针(1) 略(2) 略(3) 用指针作函数参数求4个整数中的最大者。#include stdio.hvoid max(int *,int *);main() int a,b,c,d,*pa,*pb,*pc,*pd; pa=&a;pb=&b;pc=&c;pd=&d; printf(Please input the data a,b,c,d:n); scanf(%d%d%d%d,&a,&b,&c,&d); max(pa,pb); max(pa,pc); max(pa,pd); printf(the max number of the datas is:%dn,*pa);void max(int *p,int *q) int t; if(*p*q) t=*p; *p=*q; *q=t; (4)编写一个对含有n个元素的一维数组求和的函数sum( ),要求用指针作为此函数的参数,并在主函数中调用此函数,实现对含有任意多个元素的一维数组求和的功能。#include stdio.h#define N 5int sum(int *);main() int aN,s=0,*p=a,i; printf(Please input the array a:n); for(i=0;iN;i+) scanf(%d,a+i); s=sum(p); printf(the sum of the array a is:%dn,s);int sum(int *p) int s,i; for(i=0;iN;i+) s+=*(p+i); return s;(5)编写一个在一维有序数组中插入数据的函数insert( ),并在主函数中调用它实现数据的插入。有序数组在主函数中给出,可以通过初始化获得,也可以通过键盘输入任意数据。#include stdio.hvoid insert(int *,int,int);main() int i, a6,x; printf(Please input the array a:n); for(i=0;i5;i+) scanf(%d,&ai); printf(Please input the insert data x:n); scanf(%d,&x); insert(a, 5,x); printf(the new array a:n); for(i=0;i6;i+) printf(%d ,ai);void insert(int *p, int n, int x) int i,j; for(i=0;ix) break; for(j=n;ji;j-) *(p+j)=*(p+j-1); *(p+i)=x; 实验8 结构体和共用体(1) 略(2) 略(3)*建立一个链表,每个结点包括:学号、姓名、性别、年龄。输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点删去。#include stdio.hstruct list char xh4; char xm10; char xb; int nl; struct list *next;typedef struct list SLIST;SLIST *creat_list() SLIST *h,*s,*r; int i; h=(SLIST *)malloc(sizeof(SLIST); r=h; for(i=0;ixh,s-xm,&s-nl,&s-xb); r-next=s; r=s; r-next=NULL; return h;void dele_list(SLIST *p,int age) SLIST *q=p-next; while(q) if(q-nl!=age) p=p-next; q=q-next; else p-next=q-next; break; main() SLIST *head,*p; int age; head=creat_list(); printf(Please input the age:n); scanf(%d,&age); dele_list(head,age); p=head

温馨提示

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

评论

0/150

提交评论