二级C问题~急~谢谢

来源:百度知道 编辑:UC知道 时间:2024/06/15 19:57:48
#include<stdio.h>
main()
{int k=5,n=0;
while(k>0)
{switch(k)
{default : break;
case 1 : n+=k;
case 2 :
case 3 : n+=k;
}
k--;
}
printf("%d\n",n);
}
结果为什么是7?
尤其是case 2 :
后面什么都没有代表什么?
谢谢

首先 while 后面的括号里 只执行k>0 如果k>0为假 即k<=0 循环结束
然后看里面的switch ; case后面如果没有break 则继续往下执行.
本程序开始时 k=5 和 k=4的时候 switch里面没有对应的case 所以都执行default:break 即跳出此次switch 执行k-- 在执行k=3之前 n的值没变 还是0
现在 k=3 执行case 3 : n+=k; 此时n=n+k=0+3=3 然后执行k-- 即k=3-1=2 然后继续switch(2) 此时case 2 : 后面什么都没有 即没有break 则继续往下执行case 3 : n+=k; 此时n=n+k=2+3=5 然后k-- k=1 再执行switch(1) case 1 : n+=k; n=n+k=5+1=6 case 2 : (无语句执行 直接跳过) case 3 : n+=k; n=n+k=6+1=7 k-- k=0 此时不再符合while循环 则循环结束 执行printf("%d\n",n); n=7 所以结果就是7 不知道说的明不明白 如果有什么不明白的 可以再问我