91【2009年3月选择题第20题】以下程序段中的变量已正确定义: for(i=0;i<4;i++,i++)
for(k=l;k<3;k++);printf(\; 程序段的输出结果是________。 A)******** B)**** C)** D)*
参考答案:D
【解析】 本题考察for循环语句,注意第二个for语句的后面有一个分号,即printf函数不属于循环体,无论循环执行多少次,printf(\语句只执行一次。因此,本题正确答案为D)。
5.6 几种循环的比较
92【2009年3月选择题第22题】设变量已正确定义,以下不能统计出一行中输入字符个数(不包含回车符)的程序段是________。
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)项与A)项的判断相似,仅为是否将读入的数据赋值给一个变量,因此并不影响判断结果;C)想用for循环来判断,与B)项的判断完全相同,可以统计出输入字符个数;D)项中ch=getchar()是给变量ch赋初值,如果输入回车,则程序只循环一次,如果输入一个非回车的字符,则程序进入死循环。因此,本题正确答案为D)。
5.7 break语句和continue语句
93【2011年3月选择题第19题】有以下程序
#include
scanf(\,&s); while(s>0) { switch(s)
{ case 1:printf(\,s+5);
case 2:printf(\,s+4);break; case 3:printf(\,s+3);
default:printf(\,s+1);break; }
scanf(\,&s); } }
运行时,若输入123450<回车>,则输出结果是
26
A)6566456 B)66656 C)66666 D)6666656 参考答案:A 【解析】switch语句执行完一个case后面的语句后,流程控制转移到下一个case语句继续执行,遇到break会跳出本次循环。本题中输入1时会输出65,输入2时会输出6,输入3时会输出64,输入4时会输出5,输入5时会输出6,在输入0时不满足循环条件,程序执行结束。
94【2011年3月选择题第20题】有以下程序段 int i,n;
for(i=0;i<8;i++) { n=rand()%5; switch(n) { case 1:
case 3:printf(\,n);break; case 2:
case 4:printf(\,n);continue; case 0: exit(0); }
printf(\,n); }
以下关于程序段执行情况的叙述,正确的是 A)for循环语句固定执行8次
B)当产生的随机数n为4时结束循环操作 C)当产生的随机数n为1和2时不做任何操作 D)当产生的随机数n为0时结束程序运行 参考答案:D 【解析】当产生的随机数n为1或2时,由于没有遇到break,因此程序将分别顺序执行case 3与case 4;当n为3时,程序输出n的值后跳出switch语句;当n为4时,程序输出n的值后将继续执行下一次循环;当n为0时,程序执行exit函数结束运行。
95【2010年3月选择题第20题】有以下程序 #include
{ int i,j,m=1; for(i=1;i<3;i++) { for(j=3;j>0;j--) {if(i*j>3)break; m*=i*j; } }
printf(\}
程序运行后的输出结果是
A)m=6 B)m=2 C)m=4 D)m=5 参考答案:A
27
【解析】第一次循环i=1,j=3和j=2时都能执行m*=i*j,此时得到m的值为6;然后进行第二次循环i=2,j=3时会执行break语句,内部循环直接结束,此时i再加1,也会导致退出外部循环,所以最终结果m的值为6。
96【2009年9月选择题第18题】有以下程序: #include
{ int c=0,k;
for (k=1;k<3;k++) switch(k)
{ default: c+=k; case 2:c++;break; case 4:c+=2;break; }
printf(\,c); }
程序运行后的输出结果是________。 A)3 B)5 C)7 D)9 参考答案:A
【解析】 第一次循环时,k=1,在switch语句中,先执行default后面的语句,即c=c+k=1,因为没有break语句,所以不会跳出switch结构,会接着执行case2后面的语句,即c=c+1=2,然后跳出switch;第二次循环时,k=2,直接执行case2后面的语句,即c=c+1=3,然后跳出switch语句,结束循环,执行输出语句。
97【2009年3月选择题第28题】以下函数按每行8个输出数组中的数据: void fun(int *w,int n) { int i;
for(i=0;i printf(\,w[i]); } printf(\; } 下划线处应填入的语句是________。 A)if(i/8==0)printf(\B)if(i/8==0)continue; C)if(i%8==0)printf(\D)if(i%8==0)continue; 参考答案:C 【解析】 在C语言循环语句中continue用来跳出当次循环,因此B)项和D)项不正确。if(i/8==0)是指当i除以8的得数等于0,即i的值小于8时,打印换行,因此A)项不正确。if(i%8==0)是指当i除以8的余数等于0,即当间隔8个数时,打印换行,因此选项C)正确。 28 98【2009年3月填空题第9题】以下程序运行后的输出结果是__【9】__。 #include { int k=1,s=0; do{ if((k%2)!=0)continue; s+=k; k++; }while(k>10); printf(\=%d\\n\,s); } 参考答案:s=0 【解析】continue语句用于跳出本次循环,直接进行下一次循环。进行if判断时k的值为1不能够被2整除,因此执行continue退出本次循环,不对s进行任何操作,直接进行循环条件判断,此时k的值为1不满足循环条件,退出while循环,输出s的值为0。\\ 29 第6章 数组 6.1 一维数组的定义和引用 99【2011年9月填空题第9题】以下程序运行后的输出结果是__【9】__。 #include { int i,n[]={0,0,0,0,0}; for(i=1;i<=2;i++) { n[i]=n[i-1]*3+1; printf(\,n[i]); } printf(\; } 参考答案:14 【解析】考查for循环的基础知识,当i=1时,a[1]为1,输出为1,当i=2时,a[2]为1*3+1=4,所以输出为4,最终输出为14。 100【2011年9月填空题第13题】以下程序运行后的输出结果是__【13】__。 #include { int n[2],i,j; for(i=0;i<2;i++) n[i]=0; for(i=0;i<2;i++) for(j=0;j<2;j++) n[j]=n[i]+1; printf(\,n[1]); } 参考答案:3 【解析】该题先是初始化数组n[2]中的元素全部赋值为0,然后执行两层for循环,当i=0,j=0,a[0]为1、a[1]为0,当j=1时,a[0]为1、a[1]为2;当i=1,j=0,a[0]为3、a[1]为2,当i=1,j=1时,a[0]为3、a[1]为3。 101【2011年3月填空题第11题】已知a所指的数组中有N个元素。函数fun的功能是,将下标k(k>0)开始的后续元素全部向前移动一个位置。请填空。 void fun(int a[N],int k) { int i; for(i=k;i 参考答案:i-1 【解析】本题中要将数组元素向前移动一个位置,就要使a[i]赋值给前一个元素a[i-1]。 102【2011年3月填空题第13题】以下程序运行后的输出结果是 【13】 。 #include 30 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库二级C语言笔试考点相关真题(答案解析版)(6)在线全文阅读。
相关推荐: