【计算机类职业资格】国家二级C语言机试(C语言程序设计)模拟试卷33及答案解析.doc

上传人:boatfragile160 文档编号:1332045 上传时间:2019-10-17 格式:DOC 页数:9 大小:54.50KB
下载 相关 举报
【计算机类职业资格】国家二级C语言机试(C语言程序设计)模拟试卷33及答案解析.doc_第1页
第1页 / 共9页
【计算机类职业资格】国家二级C语言机试(C语言程序设计)模拟试卷33及答案解析.doc_第2页
第2页 / 共9页
【计算机类职业资格】国家二级C语言机试(C语言程序设计)模拟试卷33及答案解析.doc_第3页
第3页 / 共9页
【计算机类职业资格】国家二级C语言机试(C语言程序设计)模拟试卷33及答案解析.doc_第4页
第4页 / 共9页
【计算机类职业资格】国家二级C语言机试(C语言程序设计)模拟试卷33及答案解析.doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

1、国家二级 C语言机试(C 语言程序设计)模拟试卷 33及答案解析(总分:70.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.要求通过 while循环不断读入字符,当读入字母 N时结束循环。若变量已正确定义,以下正确的程序段是(分数:2.00)A.while(ch=getchar0=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);2.若有以下程序 m

2、ain()int a=-2,b=0; while(a+) +b; pfintf(“d,dn“,a,b); 则程序的输出结果是(分数:2.00)A.0,2B.1,2C.13D.2,33.由以下 while构成的循环,循环体执行的次数是 int k=0;while(k=1)k+;(分数:2.00)A.一次也不执行B.执行一次C.无限次D.有语法错,不能执行4.有以下程序 main()ant a=-2,b=0; while(a+&+b); printf(“d,dn“,a,b); 程序运行后输出结果是(分数:2.00)A.0,3B.1,2C.1,3D.0,25.关于 do循环体 while(条件表达式

3、);以下叙述中正确的是(分数:2.00)A.循环体的执行次数总是比条件表达式的执行次数多一次B.条件表达式的执行次数总是比循环体的执行次数多一次C.条件表达式的执行次数与循环体的执行次数无关D.条件表达式的执行次数与循环体的执行次数一样6.以下不构成无限循环的语句或语句组是(分数:2.00)A.n=0;do+n;)while(n0;y-) if(y3=0)printf(“d“,-y); 程序的运行结果是(分数:2.00)A.963B.852C.741D.87542115.有以下程序 #include main() int ij,m=1; for(i=1;i0;j-) if(i*j3)break

4、; m*=i*j; printf(“m=dn“,m); 程序运行后的输出结果是(分数:2.00)A.m=2B.m=4C.m=5D.m=616.有以下程序 #include void main() int c=0,k; for(k=1;kA.9B.7C.5D.317.有以下程序 #include main() int i,j; for(i=3;i=1;i-) for(j=1;j1;i+)f*=i;D.f=1; for(i=n;i=2;i-)f*=i;19.有以下程序 main() int i; for(i=1;i0;y-) if(y3=0)printf(“d“,-y); 程序的运行结果是(分数:

5、2.00)A.963B.852 C.741D.875421解析:解析:y 的值的初值为 9,所以在 for循环中,当 y的值为 9、6 或 3时,if 语句的条件成立,执行输出语句,输出表达式-y 的值。因为自减符号在 y的前面,所以首先 y的自减 1,然后再输出 v的值,故输出结果为 8 5 2。15.有以下程序 #include main() int ij,m=1; for(i=1;i0;j-) if(i*j3)break; m*=i*j; printf(“m=dn“,m); 程序运行后的输出结果是(分数:2.00)A.m=2B.m=4C.m=5D.m=6 解析:解析:这道题考查了 for

6、循环的嵌套应用。对于外层 for循环来说,变量 i从 1增到 2,循环执行2次。当变量 i的值等于 1时,对于内层 for循环来说,变量 j从 3减到 1,求得变量 m的值等于 6。当变量 i的值等于 2时,第一遍执行内层 for循环,变量 i的值等于 3,那么 i*j的值等于 6,其值大于3,这时执行 break语句,退出内层 for循环的执行。所以程序输出变量 m的值为 6。16.有以下程序 #include void main() int c=0,k; for(k=1;kA.9B.7C.5D.3 解析:解析:在这段程序中,整型变量 c的初始值赋为 0,在第一次执行 for循环语句时,因为

7、此时变量k的值等于 1,所以在 switch语句中首先执行 default语句,给变量 c的值加 1,因为在 defaull语句后面没有 break语句,所以就会接着执行 case 2这条语句,再给变量 c的值加 1,其值变为 2,这时退出switch语句块,进入第二次 for循环,此时 k的值等于 2,就会执行 switch语句块中的 case2这条语句,再给变量 c的值加 1,这时变量 c的值就是 3,此时退出 switch语句块,循环变量 k的值加 1,成为 3,此时已不再满足循环条件,执行程序中的最后一条语句,把变量 c的值在屏幕上输出。17.有以下程序 #include main()

8、 int i,j; for(i=3;i=1;i-) for(j=1;j1;i+)f*=i;D.f=1; for(i=n;i=2;i-)f*=i; 解析:解析:本题主要考查 for循环的使用。题目要求计算阶乘 n!,通过 for循环来实现,循环变量 i可以从 1到 n(包括 n)或者从 n到 1,在循环体内做累乘。选项 A中,累乘变量的初值为 0,最终计算结果也为 0;选项 B中循环次数为 n-1次,累乘结果少乘了 n;选项 C是死循环;选项 D正确。19.有以下程序 main() int i; for(i=1;i=40;i+) if(i+5=0) if+i8=0)printf(“d“,i);

9、printf(“n“); 执行后的输出结果是(分数:2.00)A.24B.5C.32 D.40解析:解析:在 for循环体中,先判断自变量 i能否被 5整除,然后自加两次,最后判断 i能否被 8整除。当 for循环执行到第 30次时,i 的值为 30能被 5整除,然后 i经过两次自加 l运算,值变为 32,能被 8整除,故执行“printf(“d“,i);”语句,即输出 32。20.有以下程序 #include void main() char b,c;int i; b=a;c=A; for(i=0;iA.ABCDEFB.aBeDeFC.abcdefD.AbCdEf 解析:解析:循环变量 i从

10、 0依次递增到 5,依次输出字母 A,b,C,d,E,f。21.有以下程序 main0 int a=1,b=2; for(;aA.8,11B.10,14 C.7,11D.9,18解析:解析:在这段程序中变量 a的初值等于 1,变量 b的初值等于 2。第 1次执行 for循环语句后,变量 a的值等于 3,变量 b的值等于 3。第 2次执行 for循环后,变量 a等于 6,变量 b的值等于 7。第 3次执行 for循环后,变量 a等于 9,变量 b的值等于 14。第 4次执行 for循环后,变量 a等于 10,这时退出 for循环,此时变量 b的值等于 14。因而程序输出变量钆 b的值分别为 10

11、,14。22.有以下程序段 int i,n; for(i=0;iA.当产生的随机数 n为 4时结束循环操作B.当产生的随机数 n为 1和 2时不做任何操作C.当产生的随机数 n为 0时结束程序运行 D.for循环语句固定执行 8次解析:解析:rand()函数功能为产生一个随机数,rand()5,则产生 04 之间的任意随机数,当产生的随机数 n为 0时,执行 case 0:exit(0)这条语句,结束程序的运行。23.若有以下程序 main() int a=6,b=0,c=0; for(;a;) b+=a; a-=+c; printf(“d,d,dn“,a,b,c); 则程序的输出结果是(分数

12、:2.00)A.1,14,3B.0,18,3C.0,14,3 D.0,14,6解析:解析:循环体执行三次,a 初值 6,第一次执行循环体,b=6,a=5。继续执行循环体,b=11,a=3,第三次执行循环体,b=14,a=0,循环退出。24.若有以下程序 main()int a=6,b=0,c=0; for(;a&(1)=0);) b+=a; a-=c+; printf(“d,d,dn“,a,b,c); 则程序的输出结果是(分数:2.00)A.6,0,0B.5,6,0C.6,6,1 D.5,6,1解析:解析:循环条件 a&(b=0),a 非零同时 b=0则执行循环体,否则退出。循环体执行一次,此

13、时b=6,a=6,c=1。25.以下叙述中正确的是(分数:2.00)A.对于“for(表达式 1;表达式 2;表达式 3)循环体”首先要计算表达式 2的值,以便决定是否开始循环B.对于“for(表达式 1;表达式 2;表达式 3)循环体”,只在个别情况下才能转换成 while语句C.只要适当地修改代码,就可以将 do-while与 while相互转换 D.如果根据算法需要使用无限循环(即通常所称的“死循环”),则只能使用 while语句解析:解析:while 和 dowhile语句和 for语句很容易进行相互转换。对于 for循环的执行过程如下: 计算表达式 1。计算表达式 2。若其值为非 0

14、,转步骤;若其值为 0,转步骤。执行一次 for循环体。计算表达式 3,转向步骤。结束循环。任何循环都有可能成为死循环。26.若有以下程序#include char*a=“you“; char b=“Welcome you to China!“; main()int i,j=0;char*p; for(i=0;bi!=0;i+) if(*a=bi) p=a; for(j=i;*p!=0;j+) if(*p!=bj)break; p+; if(*p=0)break; printf(“s“,&bi); 则程序的输出结果是(分数:2.00)A.you to China! B.to China!C.me you to China!D.China!解析:解析:程序中循环部分的主要功能是,在字符串 b中寻找是否含有子串 a,如果含有则退出,此时i为子串 a在字符串 b中第一次出现的位置。因此最后的输出函数则从第 i个字符开始一直输出到字符串的末尾。27.以下程序段中的变量已正确定义 for(i=0;iA.*B.*C.*D.* 解析:解析:本题考查循环语句,题中第二个(内层)for 循环之后有一个分号,意思是每次循环中的操作为空,不执行任何操作。再循环结束后执行 printf语句,即只打出一个*。28.有以下程序 main() int i,j; for(i=1;i

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

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1