C语言求详解

main()
{int k=5,n=0;
while(k>0)
{switch(k)
{defaule:break;
case 1:n+=k:
}
k--;
}
printf("%d\n",n);
}
main()
{int k=5,n=0;
while(k>0)
{switch(k)
{defaule:break;
case 1:n+=k:
case 2:
case 3:n+=k
}
k--;
}
printf("%d\n",n);
题目打错了,不好意思

第1个回答  2013-03-27
这个详解是什么意思啊。。。最终结果是不是n=1啊。。。while中,有个switch!最开始,k=5,没有这种情况,default,然后k=k--1=4,再switch,还是没有,default,k=k-1=4-1=3,以此下去,最后k=1时switch,执行case 1:n+=k,即n=n+k=0+1=1,然后k=k-1=1-1=0,此时不符合k>0,跳出while语句,执行printf,,所以,最终结果是,n=1!!!!我是菜鸟一个哦,不知道是不是
第2个回答  2013-03-27
#include<stdio.h>//使用printf函数必须要include stdio.h
main()
{
int k=5,n=0;//定义k和n为整型变量,并初始化
while(k>0)//当k>0时执行循环体
{
switch(k)//根据k的值选择执行程序
{
default:break;//defaule错了,应该是default
case 1:n+=k;//把k后面的冒号改为分号
}
k--;//k=k-1
}
printf("%d\n",n);//将n的值输出
}追问

根据k的值选择程序这里不太明白,不知道怎么选择的,请解释一下,谢谢,k=5,是不是先自减啊

追答

如果k=5,因为case语句里没有5这个值,所以执行default后面的语句,即break,跳出switch语句;然后执行k--,此时k=4,也是继续执行default后面的break语句,跳出switch语句;然后执行k--,此时k=3,所以执行case 3后面的语句,即n+=k,结果就是n=3;然后执行k--。如此继续下去……你可以看看这个,可以对switch语句有更深刻的了解。http://see.xidian.edu.cn/cpp/html/39.html

追问

那答案怎么是7啊,我算来算去都不是7的

追答

k=5时,n不变;
k=4时,n不变;
k=3时,n=n+k=3;
k=2时,n=n+k=5;
k=1时,n=n+k=6,n=n+k=7;
如果你在每个case语句后面加上break语句就不会这样了。那个链接里面的内容好好看看吧,有好处的。http://see.xidian.edu.cn/cpp/html/39.html

本回答被提问者和网友采纳
第3个回答  2013-03-27
首先k=5,代入while循环,满足,switch(5):无法找到匹配,于是执行break;接着k-1=4;switch(4),也是继续break……直到k=1,switch(1),此时执行n+=k;即n=n+k=0+1,k再-1,变为0.跳出while循环,然后输出n的值。答案是1
第4个回答  2013-03-27
main()
{int k=5,n=0;//整数型定义,并赋值
while(k>0)//当k>0时执行下列内容
{switch(k)//对k
{defaule:break;//没有满足时跳出
case 1:n =k://1时,n=n k
}
k--;//k-1
}
printf("%d\n",n);//输出n的值
}
相似回答