二级C语言。。看下面程序。。

#include<stdio.h>
void main()
{
int k=5,n=0;
do
{
switch(k)
{
case 1:case 3:n+=1;k--;break;/*此行看不懂*/
default:n=0;k--;
case 2:case 4:n+=2;k--;break;/*此行看不懂*/
}
printf("%d",n);
}
while(k>0&&n<5);
}
求输出结果,感觉程序好乱,一点也看不懂,特别是上面我标注的两行。。求详细解释下每行的意思。。。switch语句用的太凌乱了。。。谢谢!

swtich语句如果有2个不同的case执行相同的操作,可以简写为:
case 1:
case 2:
语句;

首先 k = 5,case1 case3不满足,执行default,n= 0, k=4
default没有break,继续向下执行case2 case4
n=2,k=3,然后break,输出n的值2
然后判断k>0和n<5都是满足的,继续循环;
k = 3, 满足case3,执行n=3,k=2,然后break
输出n的值3
继续判断k>0和n<5,满足,继续循环;
k = 2, 满足case2,执行n=5,k=1,然后break
输出n的值5
判断k>0和n<5,不满足,结束
输出结果为235
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-12-19
#include<stdio.h>
void main()
{
   int k=5,n=0;
   do
   {
    switch(k)
    {
    // 下面这些写法是简洁写法,比较经典。90年代时的程序员比较喜欢这种风格。
    case 1:case 3:n+=1;k--;break;/*此行是当k等于1或者3时就执行n+=1和k--*/
    default:n=0;k--;
    case 2:case 4:n+=2;k--;break;/*此行是当k等于2或者4时就执行n+=2和k--*/
    }
    printf("%d",n);
   }
   while(k>0&&n<5);
}

相似回答