《C程序的设计基础与实验》课程期中考试试卷参考答案.docx

上传人:rrsccc 文档编号:11078130 上传时间:2021-06-27 格式:DOCX 页数:14 大小:33.39KB
返回 下载 相关 举报
《C程序的设计基础与实验》课程期中考试试卷参考答案.docx_第1页
第1页 / 共14页
《C程序的设计基础与实验》课程期中考试试卷参考答案.docx_第2页
第2页 / 共14页
《C程序的设计基础与实验》课程期中考试试卷参考答案.docx_第3页
第3页 / 共14页
《C程序的设计基础与实验》课程期中考试试卷参考答案.docx_第4页
第4页 / 共14页
亲,该文档总共14页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《《C程序的设计基础与实验》课程期中考试试卷参考答案.docx》由会员分享,可在线阅读,更多相关《《C程序的设计基础与实验》课程期中考试试卷参考答案.docx(14页珍藏版)》请在三一文库上搜索。

1、大学C程序设计基础及实验课程期中考试试卷参考答案考试日期:2017 年 12月 8日 , 考试时间:70分钟诚信考试,沉着应考,杜绝违纪。考生:学号:所属院系:_(注意:答题容必须写在答题卷上,写在本试卷上无效)试题一、单选题(每小题2 分,共 20 分)1. 以下正确的字符常量是 _ 。A 412 B 255C 08D 【解答】A 八进制 412 超出了 8 位二进制所能表示的围03ff ;B 255 是一个合法的整数,可以表示一个字节的值;C 8不是一个合法的八进制数字;D 是转义字符,表示单个单引号字符本身,所以。字符常量缺少右单引号。2. 假设有定义: float x=16/5/2.0

2、, y=16/5.0/2;则 x 和 y 的值分别为 _ 。A 1.5 1.6B 1.6 1.6C 1.5 1.5D 1.6 1.5【解答】16/5/2.0(16/5)/2.03/2.01.516/5.0/2(16/5.0)/23.2/21.63. 下列语句中, _ 将输出 %d 。A printf( “%d ”);B printf( “%d ”);C printf( “%d ”);D printf( “%d ”)【解答】A %d 表示输出十进制整型量,但缺少相应的输出表达式,故输出结果是随机值;B % 表示输出一个 % 符号本身, d 是普通字符,原样输出,所以输出%d ;C %表示符号 %

3、 , %d 表示输出十进制整型值,故输出结果是随机值;D % 表示输出符号 % 本身, %d 表示输出十进制整型值。4.下列程序段输出结果为_ 。int x=1, y=012;printf( “ %dy*x+);”,A 12B10C 20D 24【解答】x+ 表达式的值是1 , y*x+y*1y012105. 下列程序段输出结果为_ 。int a=1,b=2,c=2,t;while(abc) t=a; a=b; b=t; c-;printf( “ %d,%d,%d” ,a,b,c);A 1,2,0B 2,1,0C 1,2,1D 2,1,1【解答】a=1,b=2,c=2(1)表达式 abc122

4、1 21条件成立,则执行循环体,结果为:a=2,b=1,c=1(2)表达式 abc2110 11条件成立,则执行循环体,结果为:a=1,b=2,c=0(3)表达式 abc1201 00条件不成立,循环结束。6.在下图中,阴影部分区域可用表达式_ 来表示。XabcA (x=b)&(x=c)B (x=a)|(b=x=c)C (x=b)&(x=c)D (x=a)&(b=x=c)【解答】( x=b) & (x = c)( x=b) & (x y);x = -x;if(xy) ;8. 对于循环 while(!e) 语句, !e 等价于 _ 。A e=0B e!=0C e=1;D e!=1【解答】!ee=

5、0e!=0e=1e!=1e 为 011001e为非 00010/10/19. 循环 for(i=0, j=5; +i!=- j; ) printf(“ %d %d” , 将i,j);执行 _ 。A 6次B3次C 0次D无限次【解答】(1)i=0, j=5: +i1 , -j4, i=1,j=4, 1 != 4成立;打印; i=1, j=4;(2)i=1,j=4: +I2 , -j3, i=2,j=3, 2 != 3成立;打印; i=2, j=3;(3)i=2,j=3: +I3, -j2, I = 3, j=2, 3 != 2成立;打印; i=3,j=2;(4)10. 下列程序段执行后s 值为

6、_ 。int i=5, s=0;doif (i%2) continue; else s+=i; while (-i);A 15B 9C 6D以上均不是【解答】(1)I=5,s=0: i%25%21成立: continue ;-i4, i=4 ;(2)I=4,s=0: i%24%20不成立: s=0+4=4 ;-i3, i=3(3)I=3,s=4: i%23%21成立: continue ;-i2, i=2(4)I=2,s=4: i%22%20不成立: s=4+2=6; -i1,i=1(5)I=1,s=6: i%21%21成立: continue ;-i0试题二、填空题(每小题2 分,共 20

7、分)1.表达式1+4/5+157+4%5+(8,10)的值为_ 。【解答】1+(4/5)+157+4%5+(8,10)1+0+157+4%5+(8,10)1+157+4%5+(8,10)167+4%5+(8,10)167+4+(8,10)1611+(8,10)1611+10162112. 表达式 !5 的值为 _ 。【解答】!5!(!5)!013. 表达式 (101)&4 的值为 _ 。【解答】10:00001010101:00010100(101):111010114:00000100&-00000000即 04. 假设有定义: int x=10 ;则表达式0=x=9的值为 _ 。【解答】0

8、=x=9(0=x)=9(0=10) =91=915. 下列 for 循环语句将输出 : 0 1 2 0 1 2 0 1 2. for( i=1; i=9; i+ ) printf(%2d, _);【解答】(i-1)%36.对于定义 : int m=5, y=2;当计算表达式y+=y-=m*=y后, y的值为 _ 。【解答】y+=y-=m*=yy += (y -= (m *=y)先计算 m*=y:由于 m=5, y=2,所以: m=m*y=5*210再计算 y-=10:由于 y=2 ,所以: y = y-10=2-10-8最后计算y += -8:由于 y=-8 ,所以: y = y+(-8)=(

9、-8)+(-8)-167.对于 char c;若已知其值为小写字母, 则将其转换为相应大写字母的表达式为_ 。【解答】c-a+A8. 下列语句的输出结果为 _ 。 printf(%d#%x#, 027, 27);【解答】23#1b#9.已知字符 a的 ASCII printf(%c#%d#,98,码为 97,则下列语句的输出结果为 c);_。【解答】b#99#10. 下列程序段将输出 _ 。 unsigned char x=255,y= 1; switch(!x) case 0: printf(*0*#);break; case 1:switch(y) case 0: printf(*1*#)

10、;break;case 1: printf(*2*#);break;default: printf(*3*#);【解答】*2*#*3*#试题三、程序阅读题(每小题6 分,共 30 分)1. 下列程序将输出 _ 。 #include void swap(int x, int y)intt;t=x; x=y; y=t;return;void main(void)int a=3, b=2;swap(a, b);printf(%d#%d#, a, b);return;【解答】3#2#注:尽管在函数swap() 里,形参 x和 y的值发生了交换,但根据函数参数的传递原则“实参向形参单向传值(即 x向 a

11、 赋值, y向 b 赋值),形参的改变不影响实参” ,实参变量 a 和b 的值未发生交换!2. 下列程序将输出 _ 。# include int s;int f(int m)static int k=0;for(; k=m; k+) s+;return s;void main(void )int s=1;s=f(2)+f(2);printf(%d#%d#, s, f(20);return;【解答】输出结果为:6#21#注:( 1 )全局变量 s的初始值为 0 ;( 2)在 f函数中, s是全局变量有效,而在main 函数中, s是局部变量有效;( 3)在 f函数中, k是静态变量,每次函数f调

12、用结束后,其存单元和值仍然保留。3.若输入: 1273 ,以下程序的输出结果是_ 。#include void main(void)int n, m;scanf( “%d ”,&n);m=0;while (n0) m=m*10+n%10;n/=10;printf( “%d ”,m);return;【解答】输出结果是:37214.若输入-6+15*3/5=,以下程序的输出结果是_。#include void main()int m=0, sum=0;char c, oldc=+;do c=getchar();if(c=0)m=10*m+c - 0;else if(oldc=+)sum += m;

13、elsesum -= m;m=0;oldc=c;printf(%d#, sum); while(c!=); return;【解答】 0#-6#9#6#1#程序的意思:对输入的字符串扫描,若碰到数字字符序列,求出相应的整数值 m;若碰到其它字符若字符是 +号,则将 m值加入到 sum 中去;若字符不是 +号,则将从 sum 中减去 m值。5.若输入: how are you? #include void main(void )回车 ,以下程序的输出结果是_。int word;char ch;word=0;while(ch=getchar()!=?)if(ch= ) word=0;else if(

14、word=0)word=1;if(ch=a) ch=ch-a+A;putchar(ch);return;【解答】 How Are You该程序思路:碰到一个新单词,则将该单词首字母从小写改为大写,其它字符原样输出。提示:可借鉴统计单词个数程序的算法。试题四、程序填空题(每空2 分,共 30 分)1 输入正整数n ,计算 s = 1/1! + 1/2! + 1/3! +的+1/n!值。#include void main( void)int j, k, n;double f, s;scanf(%d, &n);(1) ; s=0.0for (k=1 ; k=n; k+)(2) ; f=1.0for

15、(j=1;(3); j+)j=k(4) ; f=f*js=s+1.0/f;printf(sum=%fn,(5) );return;2 输入一个整数,统计该数的位数。如:输入12534 ,输出 5;输入 -99 ,输出 2 ;输入 0 ,输出 1。#include void main(void)int count=0, number;scanf( “%d ”,(6); &numberif (number 0) number =(7); -numberdo number =(8); number/10count+; while ( (9) ); number!=0 printf( “%dn ”,c

16、ount); return;3 下面程序验证“哥德巴赫猜想”:寻找 3 到 1000 间满足 “偶数 = 素数 1+ 素数 2”(如 10=3+7) 的所有偶数。素数指只能被1 和自身整除的正整数,如2, 3, 17 等; 1 不是素数。#include voidmain(void)int i, j;(10); /*prime() 函数声明 */int prime(int n)for (i=3 ; i=500; i+)for (j=2; ; j+)if (11) prime(j)=1 & prime(2*i-j)=1printf(“ %d = %d +%dn” , 2*i, j, 2*i-j); /* 若 2*i为两个素数之和*/break;(12); returnint prime(int n)/*判断n 是否为素数:是返回1 ,不是返回0 */int i;if (n=1)return(13); 0for (i=2; i=n/2; i+)if (14) n%i=0return 0;return(15); 1同学们如有疑问,可以联系老师。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1