关于C语言的两道题?请知道的亲给我说一下这两道题的答案,顺便给我讲讲为什么?1、又以下程序#includemain(){int x=1,y=0,a=0,b=0;switch(x){case 1:switch(y){case 0:a++;break;case 1:b++;break;}case 2:a++;b++;break;case 3:
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/28 00:09:06
关于C语言的两道题?请知道的亲给我说一下这两道题的答案,顺便给我讲讲为什么?1、又以下程序#includemain(){int x=1,y=0,a=0,b=0;switch(x){case 1:switch(y){case 0:a++;break;case 1:b++;break;}case 2:a++;b++;break;case 3:
关于C语言的两道题?请知道的亲给我说一下这两道题的答案,顺便给我讲讲为什么?
1、又以下程序
#include
main()
{
int x=1,y=0,a=0,b=0;
switch(x)
{
case 1:
switch(y)
{
case 0:a++;break;
case 1:b++;break;
}
case 2:a++;b++;break;
case 3:a++;b++;
}
printf("a=%d,b=%d\n",a,b)
}
程序运行结果是
A、a=1,b=0 B、a=2,b=2 C、a=1,b=1 D、a=2,b=1
2、有以下程序
main()
{
int k=5,n=0;
do
{
switch(k)
{case 1:case 3:n+=1;break;
default;n=0;k--;
case 2:case 4:n+=2;k--;break;
}
printf("%d",n);
}while(k>0&&n
关于C语言的两道题?请知道的亲给我说一下这两道题的答案,顺便给我讲讲为什么?1、又以下程序#includemain(){int x=1,y=0,a=0,b=0;switch(x){case 1:switch(y){case 0:a++;break;case 1:b++;break;}case 2:a++;b++;break;case 3:
答案已运行验证
第一题为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