(吉林大学珠海学院)选择+填空+编程.ppt_第1页
(吉林大学珠海学院)选择+填空+编程.ppt_第2页
(吉林大学珠海学院)选择+填空+编程.ppt_第3页
(吉林大学珠海学院)选择+填空+编程.ppt_第4页
(吉林大学珠海学院)选择+填空+编程.ppt_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

1、1.下列叙述中正确的是 A)C语言程序将从源程序中第一个函数开始执行 B)可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行 C)C语言规定必须用main作为主函数名,程序将从此开始执行,在此结束 D)main可作为用户标识符,可以命名任意一个函数作为主函数,参考答案:C) 解答: A)错误,由于main()不一定写在第一个位置上,所以该句话不准确。 B)错误,C语言中规定,程序必须从主函数开始执行,在主函数中结束。 C)正确。 D)错误,在main()函数中,main不可以作为标识符的名,但是在其它函数中,main可作为标识符的名称(不推荐这样做)。main()是程序的开始和结

2、束的位置,不是任意函数都可以作为主函数。,一、选择,2.以下选项中,能用作用户标示符的是 A)void B)8_8 C)_0_ D)unsigned,参考答案:C) 解答: A)不能,void 为C语言的保留字。 B)不能,阿拉伯数字不能出现在标识符的第一个位置上。 C)能,符合C语言标识符命名法则。 D)不能,unsigned为C语言的保留字。,3.以下叙述中正确的是 A)C程序的基本组成单位是语句 B)C程序中的每一行只能写一条语句 C)简单C语句必须以分号结束 D)C语句必须在一行内完成,参考答案:C) 解答: A)不正确,C程序的基本组成单位应该是函数,函数的组成单位是语句。 B)不正

3、确,C程序中的每一行可写多条语句,如:x=1;y=2;z=3;。 C)正确。 D)不正确,C语句不一定在一行内完成。,4.以下程序运行后的输出结果是 【 】 。 # include main() int a=200,b=010; printf(%d%dn,a,b); ,参考答案:2008 解答: a为十进制数200,b为八进制数,转换成十进制数为8。输出格式为十进制整数输出格式,输出的两个数之间没有空隙,所以输出的序列为“2008”。,5.有以下程序 #include main() int s,t,A=10; double B=6; s=sizeof (A); t=sizeof(B); pri

4、ntf(%d,%dn,s,t); 在VC6平台上编译运行,程序运行后的输出结果是 A)2,4 B)1,4 C)4,8 D)10,6,参考答案:C) 解答: 在本题中sizeof(A)和sizeof(B)是求变量A,B所占的字节数。在VC6编译系统中,规定整型数均占用4个字节,双精度数占用8个字节。所以答案C)是正确的。,6.有以下定义:int a; long b; double x,y; 则以下选项中正确的表达式是 A)a%(int)(x-y) B)a=x!=y; C)(a*y)%b D)y=x+y=x,参考答案:B) 解答: A)错误,x-y的值可能出现“0”,0不能作除数。 B)正确,a=

5、x!=y可看成a=(x!=y), “x!=y”的值可能为“0”也可能为“1”。所以该表达式是正确。 C)错误,(a*y)的值是一个实型数,C语言中求余计算“%”,必须是实型数之间进行计算。 D)错误,该赋值方式相当于给表达式赋值,所以是错误的。,7.若a是数值型,则逻辑表达式(a=1)|(a!=1)的值是 A) 1 B) 0 C) 2 D) 不知道a的值,不能断定,参考答案:A) 解答: a的值只有两种可能,等于“1”或者不等于“1”。该表达式(a=1)|(a!=1)的值永远为真,所以,该表达式的值为“1”。,8.表达式3.6-52+1.2+52的值是A)4.3 B)4.8 C)3.3 D)3

6、.8,参考答案:D) 解答: 该表达式的值3.6-52+1.2+52=3.6-2+1.2+1=3.8,9.表达式a+=a-=a=9的值是 A)9 B)9 C)13 D)0,参考答案:D) 解答: 表达式a+=a-=a=9可化为a+=a-=9可化为a+=a=9-9可化为a+=a=0可化为a+=0。即a=0。,10.有以下程序 #include main() char c1,c2; c1=A+8-4; c2=A+8-5; printf(%c,%dn,c1,c2); 已知字母A的ASCII码为65,程序运行后的输出的结果是 A)E,68 B)D,69 C)E,D D)输出无定值,参考答案:A) 解答

7、:本题的关键在于下面的表达式 c1=A+8-4=65+56-52=69 是“E”的ASCII值。 c2=A+8-5=65+56-53=68 是“D”的ASCII值。 在输出时 printf(%c,%dn,c1,c2); c1按字符输出,所以将字符“E”输出。 c2按有符号的十进制整形数输出,所以将数值“68”输出。,11.若变量已正确定义,在if (W)printf(%fn,k);中,以下不可替代W的是 A)ab+c B)ch=getchar() C)a=b+c D)a+,参考答案:A) 解答: A)错误,在C语言中没有“”这样的运算符,判断不相等用!=。 B)正确。if (W)中的“W”可以

8、是任意表达式。 C)正确。同上。 D)正确。同上。,12.有以下程序 #include main() int a=1, b=0; if (!a) b+; else if(a=0) if(a)b+=2; else b+=3; printf(%dn, b ); 程序运行的结果是 A)0 B)1 C)2 D)3,参考答案:A) 解答:参考本题的流程图。 在本题中,第一个判断为“假”,第二个判断也为“假”。所以,b的值仍然为“0”。,13.设有定义:int a=1, b=2, c=3;,以下语句中执行效果与其它三个不同的是 A)if(ab) c=a, a=b, b=c; B)if(ab)c=a, a=

9、b, b=c; C)if(ab) c=a;a=b; b=c; D)if(ab)c=a; a=b; b=c;,参考答案:C) 解答: 本题的含义是“ab”为“真” A)执行c=a, a=b, b=c;逗号表达式语句。 B)执行c=a, a=b, b=c;复合语句。 C)只执行c=a;这条语句。 D)执行c=a; a=b; b=c;复合语句。,14.以下是if语句的基本形式 if(表达式)语句 其中表达式 A)必须是逻辑表达式 B)必须是关系表达式 C)必须是逻辑表达式或关系表达式 D)可以是任意合法的表达式,参考答案:D) 解答: 根据C语言的法则,可以是任意表达式。,15.若有定义语句int

10、a , b ; double x; 则下列选项中没有错误的是 A)switch (x%2) B)switch(int)x/2.0) case 0: a+; break; case 0: a+; break; case 1: b+: break; case 1: b+; break; default: a+; b+; default: a+; b+; C)switch(int)x%2) D)switch(int)(x)%2) case 0: a+; break; case 0.0: a+;bresk; case 1: b+; break; case 1.0: b+;break; default:

11、 a+; b+ default: a+; b+; ,参考答案:C) 解答: A)错误,在C语言中求余运算必须在整型数之间运算。 B)错误,在switch(int)x/2.0)中,不应出现2.0实型数。 C)正确。 D)错误。case 0.0,表示错误。,16.以下选项中与if(a=1)a=b;else a+;语句功能不同的switch语句是 A)switch(a) B)switch(a=1) case 1: a=b;break; case 0: a=b;break; default: a+; case 1: a+; C)switch(a) D)switch(a=1) defaule:a+;br

12、eak; case 1: a=b;break; case 1: a=b; case 0: a+; ,参考答案:B) 解答: 在B)选项中表达的是a=1时做a+;,与题意相反。,17.以下程序中,与语句:k=ab?(bc?1:0):0;功能相同的是 A)if(ab) else if(bc)k=1 else k=0,参考答案:A) 解答: 该题的流程图,从该逻辑框图中,可判断出A)的描述与题意吻合,其它的都不能表达该题意。,18.以下程序段的执行结果是 int x=23; do printf(“%d”,x-); while(!x); A)输出321 B)输出23 C)不输出任何内容 D)死循环,参

13、考答案:B) 解答: 先执行循环体,输出表达式x-的值为23,变量x的值为22,再判断循环条件!x,为假,则退出循环,19.从以下给出的表达式中选出与while(E)语句中的(E)不能等价的表达式。 A)(! E=0) B)(E0) | (E0) C)(E! =0) D)(E=0),参考答案:D) 解答: while(E)中的E只要不等于0即为“真” 正确,表达式! E=0当E!=0时为真,E=0时为假 正确 正确 错误,表达式E=0当E=0时为真,E!=0时为假,20.有以下程序 #include main() int a=1,b=2; for(;a8;a+)b+=a; a+=2; prin

14、tf(%d,%dn, a, b); 程序运行后的输出效果是 A)9,18 B)8,11 C)7,11 D)10,14,参考答案:D) 解答: 当a=1时: 执行循环体b+=a; a+=2; 执行后,b=3,a=3,再执行a+,所以a=4; 当a=4时: 执行循环体b+=a; a+=2; 执行后,b=7,a=6,再执行a+,所以a=7; 当a=7时: 执行循环体b+=a; a+=2; 执行后,b=14,a=9,再执行a+,所以a=10; 当a=10时:循环结束。输出序列“10,14”。程序运行结束。,21.有以下程序 #include main( ) int y=10; for(;y0;y-)

15、if(y%3=0) printf(“%d”,-y); 程序运行后的输出效果是 A)741 B)852 C)963 D)875421,参考答案:B) 解答: 当y=0时退出循环,循环条件成立时y的范围是101,能被3整除的有9,6,3,因此输出的-y的值应为852,22.有以下程序 #include main() int y=10; while(y-); printf(y=%dn,y); 程序执行后的输出结果是 A)y=0 B) y=-1 C) y=1 D) while 构成无限循环,参考答案:B) 解答: 本题注意,while(y-);。该语句后面有一个“;”。实际上该循环执行的是一个空语句,

16、但变量y每执行一次会被减“1”。所以y的值最终为“-1”。,23.设变量已正确定义,以下不能统计出一行中输入字符个数(不包括回车符)程序段是 A)n=0;while(ch=getchar()!=n)n+; B)n=0;while(getchar()!=n)n+; C)for(n=0;getchar()!=n;n+); D)n=0;for(ch=getchar();ch!=n;n+);,参考答案:D) 解答: A)正确。 B)正确。 C)正确。 D)错误,在for()循环体内,第一个表达式仅执行一次,所以读不到给出的其它字符。,24.下列叙述中正确的是A)break语句只能用于switch语句B

17、)在switch语句中必须使用defaultC)break语句必须与switch语句中的case配对使用D)在switch语句中,不一定使用break语句 E)在循环体内使用break语句和continue语句的作用相同。,参考答案:D) 解答: A)错误,也可用于循环语句中。 B)错误,可使用,也可不使用,根据实际情况而定。 C)错误,case语句后不一定需要break语句。 D)正确。 E)错误,break语句作用是结束循环,continue语句的作用是,本次循环结束,开始下一次的循环。,1、C语言的基本数据类型有 、 、 。 2、C语言中变量的四要素为 、 、 、 。 3、结构化程序设计

18、的三种基本结构是 、 、 。 4、在循环结构中,break语句的功能是 ,continue语句的功能是 。 5、格式化输入函数名 ,格式化输出函数名 ,字符输入函数名 ,字符输出函数名 。 *6、VC+开发环境中,以下常用操作的快捷键:编译 、运行 、定位到出错的行 。,参考答案: 1、整型,字符型,浮点型 2、变量名、类型、变量值、存储单元 3、顺序结构,选择结构,循环结构 4、break:跳出循环;continue:跳出本次循环,进入下一次循环 5、scanf,printf,getchar,putcharl 6、Ctrl+F7,Ctrl+F5,F4,二、填空,输入n,判断n是否为素数比较b

19、reak和continue的区别,程序段: n=100; k=sqrt(n); for(i=2; ik) printf(“yesn”); else printf(non”);,程序段: n=100; k=sqrt(n); for(i=2; ik) printf(“yesn”); else printf(non”);,若n=100 输出no,若n=100 输出yes,分析下面程序段的输出结果 _,n=100; k=sqrt(n); for(i=2; i=k; printf(i=%dn,i) ) if(n%i=0) continue; i+; ,7、以下程序的运行结果是 。 main( ) int

20、 i, j, m, n; i=8; j=10; m=+i; n=j+; printf(“%d,%d,%d,%d”, i, j, m, n); ,参考答案: i=8; j=10; +i表达式的值为9,变量i的值为9,m=+i的值为9 j+表达式的值为10,变量j的值为11,n=j+的值为10 故结果是:9,11,9,10,8、以下程序段的功能是 。 while (c=getchar( ) != n) count=count+1; 9、以下程序段的功能是 。 for (n=0; n26; n+) printf( %c , A +n); 10、以下程序段的功能是 。 for (sum=0, i=1;

21、 i=100; sum=sum+i, i+=2) ;,参考答案: 8、统计输入字符的个数 9、输出26个大写字母 10、计算100以内的奇数和,题目一:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。,三、编程题,void main( )int i,j,k,count=0;for(i=1;i5;i+)*以下为三重循环*/ for(j=1;j5;j+)for (k=1;k5;k+) /*确保i、j、k三位互不相同*/ if (i!=k ,题目二:古典问题:有一对兔子,从

22、出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 程序分析:兔子的规律为数列1,1,2,3,5,8,13,21.,程序源代码(1):void main()long f1,f2,f3;int i,n=20;f1=f2=1;printf(“第一个月:%12ldn”,f1); printf(“第二个月:%12ldn”,f2); for(i=3;i=n;i+) f3=f1+f2; /*前两个月加起来赋值给第三个月*/ printf(“第%d个月:%12ld”,i,f3); f1=f2; f2=f3; ,程序源代码(2):void main()

温馨提示

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

评论

0/150

提交评论