第三次随堂测试:新增三题
(2009-04-08 11:28:34)
标签:
for表达式stdio.hif杂谈 |
分类: C语言程序设计 |
【题3.1】若i为整型变量,则以下循环执行次数是 。
for(i=2;i==0;) printf(“%d”,i--);
A)无限次
【题3.2】下面有关for循环的正确描述是 。
A)for循环只能用于循环次数已经确定的情况
B)for循环是先执行循环体语句,后判断表达式
C)在for循环中,不能用break语句跳出循环体
D)for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来
【题3.3】以下for循环的执行次数是 。
for(x=0,y=0;(y=123)&&(x<4);x++)
A)是无限循环
【题3.4】执行语句for(i=1;i++<4;);后变量i的值是 。
A)3
【题3.5】有一堆零件(100到200之间),如果分成4个零件一组的若干组,则多2个零件;若分成7个零件一组,则多3个零件;若分成9个零件一组,则多5个零件。下面程序是求这堆零件总数,请选择填空。
【题3.6】以下程序运行后,a和b的值分别为:
分析:两个%%在一起时,合并为一个%输出。
【题3.7】下面程序的运行结果是 。
【题3.8】下面程序的运行结果是 。
【题3.9】下面程序段的运行结果是 。
for(x=3;x<6;x++) printf((x%2)?(“**%d”):(“##%d\n”),x);
【题3.10】以下正确的描述是(
A.continue语句的作用是结束整个循环的执行
B.只能在循环体内和switch语句体内使用break语句
C.在循坏体内使用break语句或continue语句的作用相同
D.从多层循环嵌套中退出,只能使用goto语句
【题3.11】分析以下程序的输出结果是
#include<stdio.h>
main()
{
int a,y;
a=10;y=0;
do
{a+=2;y+=a;
if(y>50)break;
}
while(a=14);
printf("%d,%d\n",a,y);
}
分析:因为do {} while();是先执行后判断!上题中while条件中是a=14始终为真,而且每循环一次后就赋值为14,直到y>50时才跳出循环! 本题的关键点在于do...while语句不是靠while(a=14)条件跳出循环的,而是靠break语句跳出,因为while(a=14)是赋值语句而不是判断语句,它是一个永真式。
【题3.12】对for(表达式1;;表达式3)可理解为 。
参考答案:第1-10题:BDCCD
【题3.13】执行以下程序后,输出结果是多少?
main()
}
答案:10
分析:
当k=2,k<6时,执行语句{s=1;for(j=k;j<6;j++) s+=j;},因为后面的for语句总是执行s=1,可以不管s的值;
当k=4,k<6时,执行语句{s=1;for(j=k;j<6;j++) s+=j;},得出s=4,j=5;条件成立,继续执行s+=j;那么s=5+5=10;当j=6时,条件不成立,结束本次循环;
当k=6时,条件不成立,整个循环结束。
所以s的值为10。
【题3.14】执行以下程序后,结果是多少?
main()
}
答案:20
分析:
for的嵌套是最内层的变化次数最多。用变量跟踪法分析以上程序:
i
第一次循环如下:
1
1
1
1
1
第二次循环如下:
5
5
5
5
5
第三次循环如下:
9
9
9
9
9
第四次循环如下:
13
13
13
13
13
也就是说,第一个for循环了4次,每循环一次里面的第二个for就循环5次,共循环了20次,m的初值为0,那输出m的值就为20了。
【题3.15】分析以下程序的运行结果。
main()
答案:
0
0
0
0
1
1
1
1
分析:
i
0
0
0
0
1
1
1
1
以上程序等同于以下写法,这样会容易看些: