C语言程序设计形成性考核册参考答案_第1页
C语言程序设计形成性考核册参考答案_第2页
C语言程序设计形成性考核册参考答案_第3页
C语言程序设计形成性考核册参考答案_第4页
C语言程序设计形成性考核册参考答案_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

1、一、选择题1. 在每个 C 语言程序中都必须包含有这样一个函数,该函数的函数名为(A)。A main B MAIN C name D funtion 2C 语言原程序文件的缺省扩展名为( A)。Acpp B exe C obj D C3由 C 语言目标文件连接而成的可执行的缺省扩展名为(B)。Acpp B exe C obj D C 4程序运行中需要从键盘输入多于一个数据时,各数据之间应使用(D)符号作为分隔符。A空格或逗号 B 逗号或回车 C 回车或分号 D 空格或回车 5每个 C语言程序的编译错误分为( B)类。A1 B 2 C 3 D 46设 x 和 y 均为逻辑值,则 x & y 为真

2、的条件是( A)。A它们均为真 B 其中一个为真 C 它们均为假 D 其中一个为假 7设有语句“ int a=12;a+=a*a; ”,则执行结束后, a 的值为( C)。A 12 B 144 C 156 D 288 8x0 & x=10 的相反表达式为( A)。A x10 Bx10 C x=0 | x0 & x109字符串“ a+b=12 n”的长度为( B)。A6 B 7 C 8 D 9 10在下列符号常量定义中。错误的定义语句格式为(C)。Aconst M1=10; B const int M2=20; C const M3 10 D const char mark= 3; 11带有随机

3、函数的表达式 rand()%20 的值在( C)区间内,A119 B 120 C 019 D 020 12当处理特定问题时的循环次数已知时,通常采用(A)循环来解决。A for B while C do-while D switch13在 switch 语句的每个 case 块中,假定都是以 break 语句结束的,则此 switch 语句容 易被改写为( B)语句。A for B if C do D while14 for 语句能够被改写为( D)语句。 A复合 B if C switch D while 15下面循环语句执行结束后输出的i 值为( B)。for(int i=0;in/2)c

4、outiendl;break;A n/2 B n/2+1 C n/2-1 D n-1 16在下面循环 w语句中内层循环体 S 语句的执行次数为( D)。 for(int i=0;in;i+)for(int j=i;jn;j+)S;An2 B (n+1)/2 C n(n-1)/2 D n(n+1)/2 17在下面的 do 循环语句中,其循环体被执行的次数为(A )。int i=0;do i+;while(i*i5的相反表达式为 _x+yb | b=5 的相反表达式为 _a5 | by 逻辑值为 _false_ 。35若 x=5,y=10 ,则 x=y 逻辑值为 _true_ 。36假定 x=5,

5、则执行“ a=(x?10:20); ”语句后 a 的值为 _10_。37执行“ typedef int DataType; ”语句后,在使用 int 定义整型变量的地方都可以使用 _DataType_ 来定义整型变量。38在 switch 语句中,每个语句标号所含保留字 case 后面的表达式必须是 _整型 _。 39作为语句标号使用的 C 保留字 case 和 default 只能用于 _switch_ 语句的定义体中。40在 switch 语句时,在进行作为条件的表达式求值后,将从某个匹配的标号位置起向下 执行,当碰到下一个标号位置时(停止/不停止) _不停止 _执行。41若 do 循环的

6、“尾”为“ while(+ib)_fp-score7与结构成员访问表达式 (*fp).score 等价的表达式是三、写出下列每个程序运行后的输出结果1. #includevoid main()int x=5;switch(2*x-3)case 4:printf(%d ,x);case 7:printf(%d ,2*x+1);case 10:printf(%d ,3*x-1);break; default:printf(%s ,defaultn);printf(%sn,switch end.);输出结果为:11 14 switch end.Press any key to continue2.

7、#includevoid main()int i,s=0;for(i=1;i=6;i+)s+=i*i;printf(s=%dn,s);输出结果为:s=91.Press any key to continue3. #includevoid main()int i,s1=0,s2=0;for(i=0;i10;i+)if(i%2)s1+=i;else s2+=i; printf(%d %dn,s1,s2);输出结果为:25 20.Press any key to continue4. #include void main()int n=10,y=1;while(n-)y+;y+;printf(y=%

8、dn,y);输出结果为:y=21.Press any key to continue5. #includevoid main()int f,f1,f2,i;f1=f2=1;printf(%d %d ,f1,f2);for(i=3;i=10;i+)f=f1+f2;printf(%d ,f); if(i%5=0)printf(n); f1=f2;f2=f;printf(n); 输出结果为:1 1 2 3 58 13 21 34 55Press any key to continue6. #include #include void main()int i,n;for(n=2;n=20;n+)求出

9、n 的平方根并取整int temp=(int)sqrt(n);/sqrt(n) for(i=2;itemp)printf(%d ,n);printf(n);输出结果为:2 3 5 7 11 13 17 19 Press any key to continue7. #include #include const int M=20; void main() int i,c2,c3,c5; c2=c3=c5=0; for(i=1;i=M;i+) if(i%2=0)c2+; if(i%3=0)c3+; if(i%5=0)c5+;printf(%d %d %dn,c2,c3,c5); 输出结果为:10

10、6 4Press any key to continue8. #include #include const int M=20; void main() int i,s;for(i=1,s=0;i15;i+) if(i%2=0 | i%3=0)continue; printf(%d ,i);s+=i; printf(%dn,s); 输出结果为: 1 5 7 11 13 37 Press any key to continue1. #include void main() int a10=12,39,26,41,55,63,72,40,83,95;int i,i1=0,i2=0; for(i=0

11、;i10;i+) if(ai%2=1)i1+;else i2+; printf(%d %dn,i1,i2); 输出结果为:6 4Press any key to continue2. #include #include void main()int i;char *a5=student,worker,cadre,soldier,peasant; char *p1,*p2;p1=p2=a0;for(i=0;i0)p1=ai; if(strcmp(ai,p2)0)p2=ai;printf(%s %sn,p1,p2); 输出结果为: worker cadre Press any key to con

12、tinue3. #includeint a10=4,5,6,15,20,13,12,7,8,9;void main()int i,s0,s1,s2;s0=s1=s2=0;for(i=0;i10;i+) switch(ai%3) case 0:s0+=ai;break; case 1:s1+=ai;break; case 2:s2+=ai;break;printf(%d %d %dn,s0,s1,s2);输出结果为:42 24 33Press any key to continue4. #includevoid main()char a=abcdbfbgacd;int i1=0,i2=0,i=0

13、;while(ai)if(ai=a)i1+;if(ai=b)i2+;i+;printf(%d %d %dn,i1,i2,i);输出结果为:2 3 11Press any key to continue5. #includevoid main()int a34=1,2,7,8,5,6,10,6,9,12,3,4;int m=a00;int ii=0,jj=0;int i,j;for(i=0;i3;i+)for(j=0;jm)m=aij;ii=i;jj=j; printf(%d %d %dn,ii,jj,aiijj);输出结果为:2 1 12Press any key to continue6.

14、#includevoid main()int a,b;for(a=1,b=2;b50;)printf(%d %d ,a,b);a=a+b;b=a+b;printf(n);输出结果为:1 2 3 5 8 13 21 34Press any key to continue三、写出下列每个程序运行后的输出结果1. #includevoid SB(char ch)switch (ch)case A:case a: printf(WW);break;case B:case b: printf(GG);break;case C:case c:printf(PP);break;default:printf(

15、BB);break;void main()char a1=b,a2=C,a3=f;SB(a1);SB(a2); SB(a3);SB(A); printf(n);输出结果为:GGPPBBWWPress any key to continue2. #include#includedouble SD(int a,int b,char op)double x;switch(op)case +:x=a+b;break;case -:x=a-b;break;case *:x=a*b;break;case /:if(b)x=(double)a/b;else exit(1);break;default:( 运

16、算符错! n);exit(1); return x;void main()int x=20,y=8;printf(%3.2lf ,SD(x,y,-);printf(%3.2lf ,SD(x,y,*);printf(%3.2lf ,SD(x,y,/);输出结果为:12.00 160.00 2.50Press any key to continue3. #includevoid WF(int x,int y)x=x+y;y=x+y;printf(subs:x,y=%d,%dn,x,y);void main()int x=18,y=23;printf(main:x,y=%d,%dn,x,y);WF(

17、x,y);x=2*x;printf(main:x,y=%d,%dn,x,y); 输出结果为:main:x,y=18,23subs:x,y=41,64main:x,y=36,23Press any key to continue4. #include#includevoid fun(char ss);void main()char s15=567891234;fun(s);printf(%sn,s);void fun(char ss)int i,n=strlen(ss);for(i=0;in/2;i+)char c=ssi;ssi=ssn-1-i;ssn-1-i=c;输出结果为:43219876

18、5Press any key to continue5. #includevoid InsertSort(int a,int n)int i,j,x;for(i=1;i=0;j-)/为 x 顺序向前寻找合适的插入位置if(xaj)aj+1=aj; else break; aj+1=x;void main()int i;int a6=20,15,32,47,36,28;InsertSort(a,6);for(i=0;i6;i+)printf(%d ,ai);printf(n);输出结果为:47 36 32 28 20 15Press any key to continue6. #includev

19、oid main()int a8=3,5,7,9,11,13,15,17;int i,*p=a;for(i=0;i8;i+);printf(%5d ,*p+);if( (i+1)%4=0 )printf(n);输出结果为:3 5 7 911 13 15 17Press any key to continue7. #includeint LA(int *a,int n)int i,s=0;for(i=0;in;i+)s+=ai;return s;void main()int a=5,10,15,20,25,30;int b=LA(a,4);int c=LA(a+2,3); printf(%d %

20、dn,b,c);输出结果为:50 60Press any key to continue8. #includeint LB(int *a,int n)int i,s=1;for(i=0;in;i+)s*=*a+; return s;void main()int a=1,2,3,4,2,4,5,2;int b=LB(a,4)+LB(&a3,4); printf(b=%dn,b);输出结果为: b=184Press any key to continue1. #include struct Worker char name15; / 姓名 int age; / 年龄 float pay; / 工资

21、;void main()struct Worker x=wanghua,52,23.50;struct Worker y,*p;y=x;p=&x;printf(%s %d %6.2fn,,y.age,y.pay); printf(%s %d %6.2fn,p-name,p-age,p-pay); 输出结果为:wanghua 52 23.50wanghua 52 23.50Press any key to continue2. #include#includestruct Workerchar name15; / 姓名int age; / 年龄float pay; / 工资;void

22、 main()struct Worker x;char *t=louting;int d=38;float f=493;strcpy(,t);x.age=d;x.pay=f;x.age+;x.pay*=2;printf(%s %d %6.2fn,,x.age,x.pay);输出结果为:louting 39 986.00Press any key to continue3. #include #include struct Worker char name15; / 姓名 int age; / 年龄 float pay; / 工资 ;int Less(struct Wor

23、ker r1,struct Worker r2) if(r1.ager2.age)return 1;else return 0;void main()struct Worker a4=abc,25,420,def,58,638,ghi,49,560,jkl,36,375; struct Worker x=a0;int i;for(i=1;i4;i+) if(Less(x,ai)x=ai;printf(%s %d %6.2fn,,x.age,x.pay); 输出结果为: def 58 638.00 Press any key to continue四、写出下列每个函数的功能1. #i

24、ncludeint SA(int a,int b)if(ab)return 1;else if(a=b)return 0;else return -1;函数功能为:根据实参 a 大于、等于或小于实参 b,返回 1,0 或 -12. #include int SC(int a,int b,int c) if(a=b & a=c)return a; if(b=a & b=c)return b; return c; 函数功能为: 返回实参 a、 b 、 c 中的最大数3. double SF(double x,int n) /n为大于等于 0的整数double p=1,s=1;for(i=1;i=n

25、;i+)p*=x; s+=p/(i+1);return s; 函数功能为: 计算 x+x2/2+x3/3+ +xn/(n+1) 的值4. #include int SC(int x)int a=(int)sqrt(x);int i=2; while(i=a) if(x%i=0)break;i+; if(i=0)return 0;else return 1; 函数功能为: 判断一个整数是否是素数5. #include void trans(int x) char a10;int i=0,rem; do rem=x%16;字符的 ASCII 码为 48字符的 ASCII 码为 55x=x/16;

26、if(rem0)printf(%c,a-i); printf(n);函数功能为: 将一个整数化成十六进制数1. #include int WB(int a,int n,int x) for(int i=0;in;i+)if(ai=x)return 1; return 0;函数功能为: 根据整型数组元素中是否能找到整数x,返回 1或 02. #includeint WC(int a,int n,int k)int c=0;for(int i=0;i=k)c+; return c;函数功能为:返回数组中前 n 个其值大于等于 k 的元素之和3. #include#include #include

27、const int N=10; int ff(int x,int y) int z; printf(%d + %d = ,x,y); scanf(%d,&z);if(x+y=z)return 1;else return 0;void main()int i,a,b,c=0;srand(time(0); / 初始化随机数系列for(i=0;iN;i+)a=rand()%20+1; /rand90 函数产生 0-32767 之间的一个随机数 b=rand()%20+1;c+=ff(a,b);printf( 得分: %dn,c*10);函数功能为:函数 ff 让两个数相加,要求输入其和,判断结果是否

28、正确。在主函数中用随机函数产生两个20 以内的随机整数,通过 10次调用这个函数,算对一次得 10分,计算所得分4. int fun6(int m,int n,int b=2)if(mb & nb)return m*n;else if(m%b=0 & n%b=0)return b*fun6(m/b,n/b,b);else return fun6(m,n,+b);函数功能为:此函数带有一个默认参数,若使用默认值,则通过递归调用,返回前2参数的最小公倍数;不使用默认值时,若最后一个参数不小于前2个参数,则返回前 2参数之乘积;否则,通过递归调用,返回前 2参数最小公倍数的 n 倍数。5. #inc

29、lude#includevoid LI(int n)int * a=(int *)电脑商场特别版 2 malloc(n*sizeof(int);int i;for(i=0;i=0;i-)printf(%d ,*(a+i);printf(n);free(a);函数功能为:将从键盘输入的 n 个整数逆序输出6. #includeint LK(double a,int n)double s=0;int i,m=0;for(i=0;in;i+)s+=ai;s/=n;for(i=0;i=s)m+;return m;函数功能为:求不小于数组元素之平均值的各元素之和(前 n 个)应加入此 4字,否则 D 亦

30、对必须强制类型转换!否则提示 cannot convert from void * to int *五、根据下列每个题目要求编写程序1. 编写一个函数,函数头格式为“ void fun4(char *a , int b)”,分别求出由字符指针a 所指向的字符串中包含的每种十进制数字出现的次数,把统计结果保存在数组b 的相应元素。#includevoid fun4(char* a,int b)doif(*a=0 & *a=9)b*a-48+;while(*a+);/*void main()char * a=122333444499888;int b10=0;fun4(a,b);for(int i=0;i10;i+) printf(%d ,bi);*/2. 编写一个函数,函数头格式为“ double

温馨提示

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

评论

0/150

提交评论