C语言选择题

int a=2,b=3,c=1;
if (a>b)
if(a>c) printf( “%d\n ”,a );
else printf( “%d\n ”,b );
printf(“Over!\n ” );
A) 2 B) 3 C) Over! D) 4

为什么选C,这个程序是怎么执行的?

第1个回答  2013-12-24
#include<stdio.h>
void main()
{int a=2,b=3,c=1;
if (a>b)
{if(a>c) printf( "%d\n ",a );
else printf( "%d\n ",b );
}
printf(“Over!\n ");
}
这是if嵌套的问题,补上大括号就好理解了本回答被提问者采纳
第2个回答  2013-12-24

这个问题很简单啊

你把程序稍微调整一下你就知道了

if(a>b)
    if(a>c)printf();
    else
        printf();
printf("over!\n");

这样整个思路就很清晰了,中间的两个if和else语句是第一个if语句的内部语句,第一个if语句显然不成立,所以不会执行,直接执行最后一个printf,答案出来

第3个回答  2013-12-24
等价于:
int  a=2,b=3,c=1;
if (a>b) //为false, 所以执行else 打印b
{ if(a>c)  printf( “%d\n ”,a ); }
else   printf( “%d\n ”,b ); //if...else终止.
printf(“Over!\n ” );//最终执行

追问

没有打印b

追答

是我说错了, else是就近匹配.

int  a=2,b=3,c=1;
if (a>b) //为false, 所以执行最后一条printg over打印
{
if(a>c)  printf( “%d\n ”,a );
else   printf( “%d\n ”,b ); //if...else终止.
}
printf(“Over!\n ” );//最终执行

追问

谢谢