关于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/07/08 17:51:55
![关于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:](/uploads/image/z/13376436-60-6.jpg?t=%E5%85%B3%E4%BA%8EC%E8%AF%AD%E8%A8%80%E7%9A%84%E4%B8%A4%E9%81%93%E9%A2%98%3F%E8%AF%B7%E7%9F%A5%E9%81%93%E7%9A%84%E4%BA%B2%E7%BB%99%E6%88%91%E8%AF%B4%E4%B8%80%E4%B8%8B%E8%BF%99%E4%B8%A4%E9%81%93%E9%A2%98%E7%9A%84%E7%AD%94%E6%A1%88%2C%E9%A1%BA%E4%BE%BF%E7%BB%99%E6%88%91%E8%AE%B2%E8%AE%B2%E4%B8%BA%E4%BB%80%E4%B9%88%3F1%E3%80%81%E5%8F%88%E4%BB%A5%E4%B8%8B%E7%A8%8B%E5%BA%8F%23includemain%28%29%7Bint+x%3D1%2Cy%3D0%2Ca%3D0%2Cb%3D0%3Bswitch%28x%29%7Bcase+1%3Aswitch%28y%29%7Bcase+0%3Aa%2B%2B%3Bbreak%3Bcase+1%3Ab%2B%2B%3Bbreak%3B%7Dcase+2%3Aa%2B%2B%3Bb%2B%2B%3Bbreak%3Bcase+3%3A)
关于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