几个C语言选择结构小问题,请高手指教

2025年03月23日 14:37
有3个网友回答
网友(1):

1.
#include
main()
{int a=100;
if(a>100) printf("%d\n",a>100);
else printf("%d\n",a<=100);
}
这段程序代码的功能是进行一个判断,首先对整型变量a赋值为100,之后进行判断,经过判断a并不满足if语句中的条件,所以执行else语句,在printf语句中,是将a<=100这个表达式的值(1)输出,所以本程序的运行结果是:
1
注意:有回车换行
2.
当a=1,b=2,c=3时,以下if语句执行后,a,b,c中的值分别为___
if(a>c)
b=a;a=c;c=b;
根据这个程序的运行,首先对a、b、c分别赋值1、2、3,在进行了if语句后,a并不大于c,所以直接跳过b=a这条语句转而执行a=c;c=b,所以最终的结果是:
a=3,b=2,c=2
3.若变量已正确定义,
x=0;y=2;z=3;
switch(x)
{case 0:switch(y==2)
{case 1:printf("*");break;
case 2:printf("%");break;
}
case 1:switch(z)
{case 1:printf("$");
case 2:printf("*");break;
default:printf("#");
}
}
这段程序主要考察的是对switch这种分支判断语句的掌握,主要的要点在于:在switch语句的执行过程中,对满足的case语句执行,如果在case语句后没有break语句,则会顺序执行至switch语句结束或下一个case的break,只要你明白了这一点,那么这个程序就很简单了。
首先,对x进行判断,x=0则执行case 0语句,而在switch(y==2)中括号内的值为1,所以又执行case 1,输出了一个"*"之后,遇到break跳出switch语句,进入外层……等等
这样就能得出这一段程序代码的运行结果:
*#

网友(2):

#include
main()
{int a=100;
if(a>100) //条件为假不执行
printf("%d\n",a>100);
else printf("%d\n",a<=100); //else 被执行,a,<=100为真,
输出1,
}
2.
当a=1,b=2,c=3时,以下if语句执行后,a,b,c中的值分别为___
if(a>c) //条件为假,不执行,仍为原值.
b=a;a=c;c=b;

3.若变量已正确定义,
x=0;y=2;z=3;
switch(x)
{case 0:
switch(y==2) //条件为真,值为1
{
case 1:printf("*");break;//这句被执行
case 2:printf("%");break;
}
case 1:switch(z)
{case 1:printf("$");
case 2:printf("*");break;
default:printf("#");
}
}

网友(3):

1、输出a<=100 因为a=100 所以if中的条件a>100不成立 不执行if后面的语句 执行else语句 即:打印出a<=100

2、a b c的值不变 因为a=1 c=3 a>c不成立 所以不执行下面的if语句 所以a b c 的值不发生改变

3、输出结果是 *# 因为x=0 所以最开始执行case 0 又因为y==2成立 即为真值1 所以执行下面的case 1 打印出*
因为上一个语句的case 0后面没有break语句 所以将会接着执行下面的case 1 z=3 所以执行default 打印出#
所以最后结果是*#