收藏 分销(赏)

C语言复习题答案.doc

上传人:w****g 文档编号:3059943 上传时间:2024-06-14 格式:DOC 页数:21 大小:121KB
下载 相关 举报
C语言复习题答案.doc_第1页
第1页 / 共21页
C语言复习题答案.doc_第2页
第2页 / 共21页
C语言复习题答案.doc_第3页
第3页 / 共21页
C语言复习题答案.doc_第4页
第4页 / 共21页
C语言复习题答案.doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

1、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

2、,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、 (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 1620BADBA2

4、125CDBDD 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

5、 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.14159

6、26*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天早上想再吃时,只剩一个桃子了。求第一天猴子共摘

7、了多少个桃子。#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;w

8、hite=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;

9、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,分别采用下列各种方法,每种方法单独用一个函数实现,最后加以比较: 从左到右各项相加; 从右到左各项相加; 从左到右各个正项和负项分别相加; 从右到

10、左各个正项和负项分别相加。#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; do

11、uble 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(

12、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); p

13、rintf( 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()

14、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

15、(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+)

16、 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

17、 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(

18、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 numbe

19、r 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

20、=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

21、;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)*建立一个链表,每个结点包括:学号、姓名

22、、性别、年龄。输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点删去。#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

23、;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-next; while(p!=NULL) printf(%s, %s, %c, %dn,p-xh,p-x

24、m,p-xb,p-nl); p=p-next; 实验9 文件(1)略(2)编写程序实现将一个文本文件复制到另一个文本文件中,源文件内容自己定义。#include stdio.hmain(int argc, char *argv) FILE *in,*out; if(argc!=3) printf(please enter the filename);exit(0); if(in=fopen(argv1,r)=NULL) printf(cannot open infilen); exit(0); if(out=fopen(argv2,w)=NULL) printf(cannot open out

25、filen); exit(0); while(!feof(in) fputc(fgetc(in),out); fclose(in); fclose(out); 实验10 综合编程略模拟试卷(一)参考答案一选择题(130每题1分,3150每题2分,共70分)12345678910CBDCDDBACA11121314151617181920BBDCABCCAC21222324252627282930ABBBBCDDAC31323334353637383940CDDCBBBABA41424344454647484950CCDCCBCCDC二填空题(每空2分,共30分)空序号答案空序号答案【1】main()【9】10 20 0【2】11 6 4【10】1 B【3】5【11】4 3 3 4【4】1 1 0 1【12】0 10 1 11 2 12【5】i=9 或 i=0 & si=9) 或si 9【15】0 或 0

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服