main()
{
int a=0,i
for(i=1;i<5;i++)
{
switch(i)
{
case 0:
case 3:a+=2;
case 1:
case 2:a+=3;
default:a+=5;
}
}
printf("%d\n ",a);
}
A. 31 B. 13
C. 10 D. 20
【答案】A
【考点解析】在本题中,首先定义了一个整型变量a值为0,接着执行for循环语句,循环为5次,每一次的循环都执行选择结构的switch语句,而这个switch语句是根据i的值来对变量a进行操作,而这个switch语句并没有结合break语句,所以它是会继续执行当前语句下面的case,分别当i为1时,a=a+3+5=8;当i=2时,a=a+3+5=16;当i=3时,a=a+2+3+5=26;其余的为a=a+5=31,即答案为31。
【例3】(2002年4月)以下程序的输出结果是( )。
#include
main()
{
int i=0,a=0;
while(i<20)
{
for(;;)
{
if((i)==0) break;
else i--;
}
i+=11;a+=i;
}
printf("%d\n",a);
}
A. 21 B. 32
C. 33 D. 11
【答案】B
【考点解析】本题目中,首先定义整型变量i值为0和a值为0,接着进行循环while语句的判断,通过判断进入循环体;在这里有一个省略全部表达式的for语句,因为for语句没有表达式,所以它的循环是一定执行的,即如果没有执行break语句,它会进入死循环。在for语句的循环体里有一个选择结构,当变量i是小于10的数,就退出for语句的循环,否则执行i减1。执行完while语句后,调用printf函数输出变量a的值。
【例5】(2003年4月)有以下程序
main()
{
int i=0,s=0;
do
{
if(i%2)
{
i++;continue;
}
i++;
s+=i;
}
while(i<7);
printf("%d\n",s);
}
执行后输出结果是
A. 16 B. 12