ImageVerifierCode 换一换
格式:DOCX , 页数:50 ,大小:41.40KB ,
资源ID:25921623      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/25921623.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言练习题资料.docx)为本站会员(b****9)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C语言练习题资料.docx

1、C语言练习题资料第二部分 程序控制结构一、单项选择题。1. 以下叙述中错误的是_。A、C语句必须以分号结束 B、复合语句在语法上被看作一条语句C、空语句出现在任何位置都不会影响程序运行D、赋值表达式末尾加分号就构成赋值语句解析:本题考查的是C语句。空语句出现在任何位置都不会影响程序运行这句话是错误的,例如在for循环中,循环条件语句为空时,则不判断循环条件,循环将无终止地进行下去,导致了此循环为死循环。 故本题答案为C。2. 设变量x和y均已正确定义并赋值。以下if语句中,在编译时将产生错误信息的是_。A、if(x+); B、if(xy & y!=0); C、if(x0) x- D、if(y0

2、) ; else y+; else x+;解析:本题考查的是if语句。if后表达式两侧的圆括号不可少,最后是一条语句或是用花括号括起来的一组语句。选项A和B是在表达式后跟了一条空语句,选项D是在表达式后跟了一组空语句,选项C中x-是表达式而不是语句,所以在编译时会出现错误信息。故本题答案选C。3. 有以下程序main() int i; for(i=1;i=40;i+) if(i+%5=0) if(+i%8=0) printf (%d,i); printf(n); 执行后的输出结果是_。A、5 B、24 C、32 D、40 解析:本题考查的是if语句的应用。在满足for 语句条件下,第一个if语

3、句的条件是指i先对5取余后,再自行加1;第二个if语句的条件是指:i=i+1后,再对8取余。故本题答案选C。4. 在嵌套使用if语句时,C语言规定else总是_。A、和之前与其具有相同缩进位置的if配对 B、和之前与其最近的if配对C、和之前与其最近的且不带else的if配对 D、和之前的第一个if配对解析:本题考查的是if语句的使用规则。在嵌套使用if语句时,C语言规定else总是和之前与其最近的且不带else的if配对。故本题答案为C。5. 有以下程序main() int i=1,j=2,k=3; if(i+=1&(+j=3|k+=3) printf(%d %d %dn,i,j,k); 程

4、序运行后的输出结果是_。A、1 2 3 B、2 3 4 C、2 2 3 D、2 3 3 解析:本题考查的是条件判断语句。本题中执行i+=1&(+j=3|k+=3)时,先执行i+=1,由于i+是先运算,后自加,所以表达式i+=1的值为真,其值为1,然后执行括号中的表达式,由于+j是先自加,后运算,所以表达式+j=3 的值为真,根据短路原理,右边的表达式k+=3不再进行运算,直接得出括中表达的值为1,相与后整个表达式的值也为1,输出i,j,k时,由于未执行过k,所以它们的值分别为2,3,3。故本题的答案为D。6.有以下程序:main() int i; for(i=0;i3;i+) switch(i

5、) case 0:printf(%d,i); case 2:printf(%d,i); default:printf(%d,i);程序运行后的输出结果是_。A、022111 B、021021 C、000122 D、012解析:此题考点是switch语句。switch语句执行完一个case后面的语句后,流程控制转移到下一个case继续执行。“case 常量表达式”只是起语句标号作用,并不是在该处进行条件判断。在执行switch语句时,根据switch后面表达式的值找到匹配的入口标号,就从此标号开始执行下去,不再进行判断。如果想在执行一个case分支后,使流程跳出switch结构,即终止switc

6、h语句的执行。可以用一个break语句来达到此目的。本题中没有使用break终止switch语句的执行。在此题中当i=0时,执行第一个case语句,因为它后面没有break,所以一直到执行完default语句结束,再执行下一循环。故本题答案为C。7. 下列条件语句中,功能与其他语句不同的是_。A、if(a) printf(%dn,x); else printf(%dn,y);B、if(a=0) printf(%dn,y); else printf(%dn,x);C、if (a!=0) printf(%dn,x); else printf(%dn,y);D、if(a=0) printf(%dn,

7、x); else printf(%dn,y); 解析:此题考的是if语句中逻辑表达式值的判断。if(a)表示a值为真(即不等于0都为真)的话,就输出x的值,否则输出y的值;if(a=0)表示如果a与0等值,即a不为真,就输出y的值,否则输出x的值,此与选项A等价;再看选项C,a不等于0,即为真,输出x,否则输出y,与前两个都同意;而选项D恰好与前几项的意思相反,它是a为0时,输出x,为真时输出y。故本题答案为D。8.有以下程序main() char k; int i; for(i=1;i0); D、if(b=0)m=1;n=2; 解析:if语句是用来判定所给的条件是否满足,根据判定的结果(真或

8、假)决定执行给出的两种操作之一。在if和else后面可以只含一个内嵌的操作语句,也可以有多个操作语句,此时用花括号“”将几个语句括起来成为一个复合语句。选项D中没有将两个操作语句括起来,不能看作一条语句。故本题答案为D。10.以下程序的输出结果是_。main() int a=-1,b=1, k; if(+a0)&!(b-=0) printf(%d %dn,a,b); else printf(%d %dn,b,a);A、-1 1 B、0 1 C、1 0 D、0 0解析:本题的考查点是if条件的判断。+a是先运算后使用,b-是先使用后运算。执行+a后,a值为0,不满足条件,所以a为0,b仍为1,接

9、下去执行else语句,输出1 0。故本题答案为C。11. 有以下程序 main() int c; while(c=getchar() )!=n) switch(c-2) case 0: case 1: putchar(c+4); case 2:putchar(c+4);break; case 3:putchar(c+3); default:putchar(c+2);break; A、668977 B、668966 C、66778777 D、6688766 解析:本题的考查点是switch()语句。getchar()函数是从键盘接受一个字符输入;当用户键入的字符不是回车符时,会进入一个多分支选择

10、语句,根据表达式c-2的值进行分支选择;putchar()是在屏幕上打印一个字符,最后的结果应当为 668977。故本题答案为A。12.有定义语句:int a=1,b=2,c=3,x;,则以下选项中各程序段执行后,x的值不为3的是_。A、if (ca) x=1; B、if (a3) x=3; else if (ba) x=2; else if (a2) x=2; else x=3; else x=1;C、if (a3) x=3; D、if (ab) x=b; if (a2) x=2; if (bc) x=c; if (a1) x=1; if (ca) x=a; 解析:本题的考查点是if语句。选

11、项A,因为前面两个条件都不满足,所以执行最后一种操作,x=3;选项B,a3成立,执行第一种操作,x=3;选项C,a3成立,执行第一种操作,x=3;a2成立,执行第二种操作,此时x=2;a1不成立,最后的不执行,所以执行此段程序后x=2;选项,ab成立,执行x=b,此时x=2;bc成立,执行x=c,此时x=3;ca不成立,不执行x=a,所以执行此段程序后x=3。故本题答案为C。13.以下关于逻辑运算符两侧运算对象的叙述中正确的是_A、只能是整数0或1 B、只能是整数0或非0整数C、可以是结构体类型的数据 D、可以是任意合法的表达式解析:本题考查的是C语言运算符的基本应用。逻辑运算符两侧的运算对象

12、不但可以是0和1,也可以是任意基本类型或指针类型的数据,还可以是任意合法表达式。故本题答案为D。14. 若x是int型变量,且有下面的程序片段for(x=3;x=0) y=sqrt(x); B、y=sqrt(x); else y=sqrt(-x); if(x=0) y=sqrt(x); D、y=sqrt(x=0?x:-x);if(x0|E0) C、(E=0) D、(E!=0) 解析:本题考查的是while条件表达式的判断。while(表达式)语句用来实现当型循环结构,当表达式为非0值时,执行while语句中的内嵌语句。选项A非零即为1,选项B与选项D的结果也为1,只有选项C为0。故本题答案为C

13、。19有以下程序段int n,t=1,s=0;scanf(%d,&n);do s=s+t; t=t-2; while (t!=n);为使此程序段不陷入死循环,从键盘输入的数据应该是_。A、任意正奇数 B、任意负偶数 C、任意正偶数 D、任意负奇数 解析:本题考查的是while循环语句。要使得程序段不陷入死循环,则必须存在终止循环的条件t=n,由于t的初始值为1,且每执行一次循环都会使得t的值减2,故执行本程序后t有可能的最大值为-1,然后,依次减2,所以键盘输入的n的值必须是t的值之一,即为任意负奇数。 故本题答案为D。20. 设变量已正确定义,则以下能正确计算f=n!的程序段是_。A、f=0

14、; for(i=1;i=n;i+) f*=i; B、f=1; for(i=1;i1;i+) f*=i; D、f=1; for(i=n;i=2;i-) f*=i; 解析:本题考查的是for语句。n!=n*(n-1)*2*1,由于选项A中f的初值为0,所以循环n次后,f值依然为0,故选项A错误;选项B中循环的终止条件是i1时,由于初值i=n是符合条件i1的,且增量为+1,故循环中永远不会出现不满足条件i1的值,所以出现死循环。故本题答案为D。21. 下面程序的功能是输出以下形式的金字塔图案: * * * *main() int i,j; for(i=1;i=4;i+) for(j=1;j=4-i;

15、j+)printf( ); for(j=1;j=_;j+)printf(*); printf(n); 在下划线处应填入的是_。A、i B、2*i-1 C、2*i+1 D、i+2 解析:本题是找出打印*号的条件,从图中我们可以找到规律,第一行一个*,第二行3个,第三行5个,也就是每行中*的个数恰好是行数的2倍减一个,由此不难得出,横线处应当填入2*i-1。故本题答案为B。22. 有以下程序:main() int i,s=0; for(i=1;i10;i+=2) s+=i+1; printf(%dn,s);程序执行后的输出结果是_。A、自然数19的累加和 B、自然数110的累加和C、自然数19中奇

16、数之和 D、自然数110中偶数之和 解析:通过for(i=1;i0&+x0&+x5成立,执行y=y-1;此时y=4,z=2,x=1。执行后条件仍然成立,继续执行y=y-1,此时y=y-1=3,z=1,x=2,以此类推,直至条件不成立。当z为0时条件不成立,执行后z为-1。故本题答案为B。24. 有以下程序main() int i,n=0; for( i=2;i1;n-) s=s+1/n; printf(%6.4fn,s);程序运行后输出结果错误,导致错误结果的程序行是_。A、s=1.0; B、for(n=10;n1;n-) C、s=s+1/n; D、printf(%6.4fn,s);解析:本题

17、的考查点是查找程序运行错误的原因。主要考察运算中字符的转换。s=s+1/n;因为n为整型,所以1/n都为0。这就是导致本题出错的原因。s=s+1/n应改为s=s+1.0/n。故本题答案为C。29. 在下面循环语句中循环体执行的次数为_。 int i=0; do i+; while(i*i10); A、 4 B、 3 C、 5 D、 230. 当处理特定问题时的循环次数已知时,通常采用_来解决。A、 for循环 B、while循环 C、do循环 D、switch语句31. 循环体至少被执行一次的语句为_。 A、 for循环 B、 while循环 C、do循环 D、 任一种循环32. do语句能够

18、改写为_语句。 A、 复合 B、if C、switch D、 while33. 若变量已正确定义,有以下程序段i=0;do printf(%d, ,i); while(i+);printf(%dn,i);其输出结果是_。A、 0,0 B、0,1 C、1,1 D、程序进入无限循环 34. 以下程序的输出结果是_。 main() int n=4; while(n-)printf(%d ,-n);A、 2 0 B、3 1 C、3 2 1 D、2 1 035. C语言中,下列叙述正确的是_。A、不能使用do-while语句构成的循环B、do-while语句构成的循环,必须用break语句才能退出C、d

19、o-while语句构成的循环,当while语句中的表达式值为非零时结束循环D、do-while语句构成的循环,当while语句中的表达式值为零时结束循环36要求通过while循环不断读入字符,当读入字母N时结束循环。若变量已正确定义,以下正确的程序段是_。 A、 while(ch=getchar()!=N) printf(“%c”,ch); B、while(ch=getchar()!=N) printf(“%c”,ch); C、while(ch=getchar()=N) printf(“%c”,ch); D、while(ch=getchar()=N) printf(“%c”,ch);37若有以

20、下程序 main() int y=10; while(y-); printf(“y=%dn”y); 程序运行后的输出结果是_。 A、 y=0 B、y=-1 C、y=1 D、while构成无限循环 38. C语言中,while和do-while循环的主要区别是_。A、do-while的循环体至少无条件执行一次B、 while的循环控制条件比do-while的循环控制条件更严格C、 do-while允许从外部转到循环体内D、 do-while的循环体不能是复合语句39. 以下描述中正确的是_。A、 do-while循环中循环体内不能使用复合语句B、 do-while循环由do开始,用while结束

21、,在while(表达式)后面不能写分号C、 在do-while循环体中,一定要有能使while后面表达式的值变为零(“假”)的操作D、 do-while循环中,根据情况可以省略while40. 若有如下语句int x=3;do printf(“%3d”,x-=2); while(!(-x);则上面程序段_。A、输出的是1 B、输出的是1和-2C、 输出的是3和0D、 是死循环41.下面有关for循环的正确描述是_。A、for循环只能用于循环次数已经确定的情况B、for循环是先执行循环的循环体语句,后判断表达式C、在for循环中,不能用break语句跳出循环体D、for循环的循环体语句中,可以包

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1