关于C语言基础的问题,要求解过程8

来源:百度知道 编辑:UC知道 时间:2024/05/21 13:02:59
1.以下程序运行的结果是多少?
main()
{int a=0,b=0,c;
if(a>b)c=1;
else if(a=b)c=0;
else c=-1;
printf("%d\n",c);}
2.以下程序运行的结果是多少?
main()
{ int a=0,b=4,c=5;
switch(a==0)
{case 1:switch(b<0)
{case 1:printf("@"); break;
case 0:printf("!"); break;}
case 0:switch(c==5)
{case 0:printf("*"); break;
case 1:printf("#"); break;
default:printf("%");} break;
default:printf("&");}}
两个题目的答案分别是-1和!#,为什么?

1.以下程序运行的结果是多少?
main()
{int a=0,b=0,c;
if(a>b)c=1; //0>0假,不执行
else if(a=b)c=0; //b附值给a,因为b是0,所以a也是0。附值语句返回a,也就是0,所以条件判断也假,不执行
else c=-1; //执行
printf("%d\n",c);} //结果是-1

2.以下程序运行的结果是多少?
main()
{ int a=0,b=4,c=5;
switch(a==0) //a是0,a==0返回1
{case 1:
switch(b<0) 执行这条,b=4,所以b<0返回假也就是0
{case 1:printf("@"); break;
case 0:printf("!"); break; } 跳到这里打印!
因为这里没有break,所以继续走下去
case 0:
switch(c==5) c=5真,返回1
{case 0:printf("*"); break;
case 1:printf("#"); break; 跳到这里打印
default:printf("%");} break;
default:printf("&");}}
两个题目的答案分别是-1和!#,为什么?

ps:
以后整理一下格式吧

1、因为a=b,所以执行的是else if(a=b)c=0; 语句,结果为0
2、因为a=0,所以第一个switch(a==0)的条件为真,所以执行case 1:switch(b<0) ,然后由于b=4,所以switch(b<0) 的条件为假