【例6】(2004年4月)以下程序中与语句k=a>b? (b>c?1:0):0功能等价的是( )。
A. if((a>b)&&(b>c))k=1; B. if((a>b)||(b>c)) k=1;
else k=0;; else k=0;
C. if (a<=b) k=0; D. if(a>b) k=1;
else if (b<=c) k=1;
else if (b else k=0;
【答案】A
【考点解析】三目运算符:(条件表达式)?(条件为真时的表达式):(条件为假时的表达式),分析题目给出的表达式可知如果a>b和b>c同时为真k=1,否则k=0。明显选项A符合条件。
二、填空题:
【例10】(2003年4月)若有以下程序
main()
{
int a=4,b=3,c=5,t=0;
if(a
if(a
printf("%d %d %d\n",a,b,c);
}
执行输出结果是 。
【答案】5 0 3
【考点解析】根据C语言选择结构if语句知道,当条件成立时,程序将执行其后的一条语句或一个语句块。当条件不成立时,程序将跳过if语句后的语句或语句块,然后继续执行。在本题中,我们先计算第一个if后面的表达式a
【例12】(2004年4月)有以下程序
main()
{
int n=0,m=1,x=2;
if(!n)x-=1;
if(m)x-=2;
if(x)x-=3;
printf("%d\n",x);
}
执行后输出结果是 。
【答案】-4
【考点解析】在本题中,是多个if构成的选择结构。!n=!0为真执行x=x-1=2-1=1,m=1,而m又为真,执行x=x-2=1-2=-1,再x的值为真,执行x=x-3=-1-3=-4。
4.3循环结构
一、选择题:
【例1】(2002年4月)以下程序中,while循环的循环次数是( )。
main()
{
int i=0;
while(i<10)
{
if(i<1) continue;
if(i==5)break;
i++;
}
……
}
A. 1 B. 10
C. 6 D. 死循环,不能确定次数
【答案】D
【考点解析】在题目中,首先给整型变量i赋初始值为0,接着进行循环语句while判断,判断为真则进入循环体,在循环体中执行选择结构的if语句,这里有两个if语句,第一个if成立,则执行重新回到while语句重新判断,因为变量i的值没有发生改变,则程序会一直在这两条语句间执行,而造成死循环。
【例2】(2002年4月)以下程序的输出结果是( )。