首页 > 试题广场 > 有以下程序 #include "stdio.h&
[单选题]
有以下程序 
 #include "stdio.h"  
 main() 
 { 
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("%d\n",c); 
 } 

 程序运行后的输出结果是( )?
  • 3
  • 5
  • 7
  • 9
推荐
选A。该题考察的是switch 语句必须遵循下面的规则:
  • 当被测试的变量等于 case 中的常量时,case 后跟的语句将被执行,直到遇到 break 语句为止。
#include "stdio.h"  
void main() 
 {
    int c=0,k; 
    for(k=1;k<3;k++) 
    switch(k) 
    {
        default:c+=k;   //第一次循环k=1,c=1,没有遇到break继续执行
        case 2:c++;     //c++后,c=2
        break;   //遇到break结束,switch 终止。第二次循环k=2,执行case 2后,c=3,遇到break终止。k=3结束循环
        case 4:c+=2;
        break; 
    
    printf("%d\n",c); 
 } 
编辑于 2019-06-26 14:43:26 回复(0)
int main()
{
   int c=0,k;
   for(k=1;k<3;k++)
    switch(k)
   {
       default: c+=k;cout<<c<<","<<endl;
       case 2:
           c++;
           cout<<c<<","<<endl;
       break;
       case 4:c+=2;
       break;
   }
   cout<<c<<endl;
    return 0;
}
运行这个程序发现输出是
1,
2,
3,
3

由输出来分析:在k=1时,第一次执行了default 后又执行了case 2  所以,k=1时c加了两次
k=2时k加了一次
所以选A

发表于 2019-06-25 16:59:02 回复(0)