关于C语言的两道题?请知道的亲给我说一下这两道题的答案,顺便给我讲讲为什么?1、又以下程序#incl

发布时间:2021-02-23 08:13:47

关于C语言的两道题?请知道的亲给我说一下这两道题的答案,顺便给我讲讲为什么?1、又以下程序#incl

网友回答

答案已运行验证
第一题为D,其中printf(a=%d,b=%d\n,a,b)句末少分号;
第二题为2345,其中程序中default;应该改成default:
以上都是语法错误,所以我自行地改了.
以下是具体分析:
第一题switch(x)
{case 1:
// 这里是满足条件的,即x=1所以进入执行switch(y)
{ // 这里是判断y的值
case 0:a++;break;
//这里满足,即y=0,所以执行a=a+1,即a=1.并且跳出case 1:
b++;break; //因为跳出了,所以这里不执行
}//刚才的break只能跳出一个大括号,到这里,继续执行.因为对于switch这种语句,只要前面有个case满足了要求,后面的case里的语句都要执行,直到遇见break,跳出
case 2:a++;b++;break;
//所以这里执行后,a=a+1,b=b+1,即a=2,b=1,然后又见break,跳出case 3:a++;b++;
//已跳出}最后printf输出 a=2,b=1
第二题首先你应该明白do while语句的特点是先执行再判断条件,即若条件满足,则返回到do的起始位置,若不满足.则跳出循环
do{switch(k)
{ case 1:case 3:n+=1;break; //需要说明的是,这里连续两个case的意思是,或.即只要k=1或3就满足条件.
default:n=0;k--;//default的意思是前面的case都不对,那就进入执行,这里执行完后,n=0,k-1=4
case 2:case 4:n+=2;k--;break;
//满足条件,因为k=4,所以执行.n+2=2,k-1=3并跳出}printf(%d,n);
输出n,即2}while(k>0&&n0&&n0&&n0&&n
以上问题属网友观点,不代表本站立场,仅供参考!