下面程序的运行结果是: #include <stdio. h> main(). switch(i%5) {case 0:printf("* ");break; case 1

下面程序的运行结果是:
#include <stdio. h>
main().
switch(i%5)
{case 0:printf("* ");break;
case 1 :printf("#");break;
default :printf("\n");
case 2 :printf("&");
}
A)#&&&* B) #& C) # D)#&
& &
& &*
答案 B 完全不懂 求解释

程序都没定义变量i的取值范围,看结果的话应该是1-5吧。
1%5 = 1 ; 2%5 = 2;3%5 = 3 ;4%5 =4 ;5%5 = 0;
case语句判断先找有的值,也就是0,1,2有,直接跳转执行case x:后面的语句,有break则结束,无break则继续执行下面的语句(无论有没有case,default)。
case 后面没有匹配的结果的话,就找default去执行,比如结果3,没有case 3:那么就执行default,执行完没有break的话,继续向下执行。也就是如果执行了default的话,因为没有遇到break,所以会连case 2:一起执行一次。这就是为什么答案B每个换行之后都会输出&
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-08-18
该程序用的是switch多分支选择结构;
当i%5得到的值为0时,输出"*",程序结束;
当i%5得到的值为1时,输出"#",程序结束;
如果得到的值不是0和1时,光标移至下行,没有结果输出;
如果得到的值是2时,输出"&",程序结束。。。

————————我也是新手,以上只是个人分析步骤,望您采纳~~~
第2个回答  2011-08-19
没有定义i值,怎么看程序呢!~~~
那就解释一下此程序吧
等同于:
if(i%5==0)
printf("*");
else if(i%5==1)
printf("#");
else if(i%5==2){
printf("&");
printf("\n");
}
else
printf("\n");
我估计你的问题有一个for循环没复制过来
第3个回答  2011-08-17
i的值是什么?
这道题出的没什么意思,一般不会把switch 语句的 default 写到中间去,都是在最后一个。本回答被网友采纳

...#include <stdio. h> main(). switch(i%5) {case 0:printf("*...
程序都没定义变量i的取值范围,看结果的话应该是1-5吧。1%5 = 1 ; 2%5 = 2;3%5 = 3 ;4%5 =4 ;5%5 = 0;case语句判断先找有的值,也就是0,1,2有,直接跳转执行case x:后面的语句,有break则结束,无break则继续执行下面的语句(无论有没有case,default)。case 后面没有匹...

#include”stdio.h” main() { int i=5; switch(i) { case 5:i+=1...
printf("%d", i); \/\/ 输出 9 如果有 break;case 5:i+=1;break;case 6:i+=2; default:i+=1;输出 6

#include<stdio.h> int main(){ char nb; int i = 0; int l = 0; f...
switch判断和if判断重复了,这样就会先满足case的条件,然后再判断是不是满足if的条件,只有两个都满足才会+1,就不对了。要么用switch判断,要么用if判断就行了

#include<stdio.h> main() { int s = 0,i; for(i = 0;i<5;i++) {...
当i=0时,进入case 0分支,直接break 当i=1时,进入case 1分支,分别执行s+=1;s+=2;s+=3;,后s值为6 当i=2时,进入case 2分支,分别执行s+=2;s+=3;,后s值为11 当i=3时,进入case 3分支,分别执行s+=3;,后s值为14 当i=4时,进入default分支,分别执行s+=5;,后s值为19 ...

...#include <stdio.h> main() { int a = 1,b = 2; printf ("%d\\n...
1.a= b+ c 所以表达式值为非零,为真,执行printf ("###\\n");2.自增运算符后缀,所以先引用,后自增,m为2,m>2为假,然后m自增一值为3,执行else部分,m+2=5 7.注意是x=2 ,是=,赋值号,也就是x被赋值为2,表达式非零,为真执行y= y+2;8.i为10,所以到case 10部分i+=1;i值为11...

#include<stdio.h> void main() {int i; for(i=0;i<3;i++) switch(i...
\/ i=0时从case 0开始输出 因为没有break所以case0 之后的语句都执行 所以输出000 i=1时,输出default部分 所以1 i=2时,从case2开始,之后的语句也执行 输出22 运行结果是:000122 \/

main() {int a=0,i; for(i=1;i<5;i++) { switch(i) { case0: case3:a...
include <stdio.h> 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("a=%d\\n",a);} 计算步骤:i=1,走case 1:没break,下面都会执行,a+=3;此时a=3,执行a+=5,a=8 i=2,走case 2:a+=3;...

当程序运行到scanf函数的时候直接跳过,不给我输入的机会,然后运行结果...
当程序运行到scanf函数的时候直接跳过,不给我输入的机会,然后运行结果输出 #include<stdio.h>voidread(int);intmain(){chari;printf("pleaseinputanumber:\\n");scanf("%d",&i);read(i);return0;}voidread(intp){switch(a){case0:printf("ling");break;case1:p... #include <stdio.h>void read(...

#include <stdio.h> main() { int a; float b,c; loop: printf("请...
include<stdio.h> int main(){ int i;float C,F;loop:printf("please input a number(1\/2)\\n");printf("1.摄氏温度转化为华氏温度\\n2.华氏温度转化我摄氏温度\\n");scanf("%d",&i);switch(i){ case 1: printf("请输入摄氏温度: ");scanf("%f",&C);printf("摄氏温度为 %f\\n",...

C语言2题
include<stdio.h> main(){ int i;printf("请输入星期\\n");scanf("%d",&i);switch(i){ case 1:printf("Monday\\n");break;case 2:printf("Tuesday\\n");break;case 3:printf("Wednesday\\n");break;case 4:printf("Thursday\\n");break;case 5:printf("Friday\\n");break;case 6:...

相似回答