C语言面试题分享(4)

一、下列程序的输出结果是________。

int main(void)
{
    
      
	int a=0,b=0,c=0;
	if(++a>0||++b>0)++c;
		printf("\na=%d,b=%d,c=%d",a,b,c),
}

A)a=0,b=0,c=0 B)a=1,b=1,c=1

C)a=1,b=0, c=1 D)a=0, b=1,c=1

答案:C
评析:
“||”是或运算,它有个特点需特别注意,当“||”运算符左边的表达式的值为真时,则程序就不再对“||”右边的表达式的值进行运算,而是使得整个表达式的值直接为真。
题中的++b>0没有执行
同理的还有“&&”是与运算,当“&&”运算符左边的表达式的值为假时,则程序就不再对“&&”右边的表达式的值进行运算,而是使得整个表达式的值直接为假。

二、下列程序的输出结果是_________。

int main(void)
{
    
      
	int i;

	for(i=1;i+1;i++)
	{
    
      
		if(i>4){
    
    printlf("%d",i++);break;}
	}
	printf(“%d”,i++)}

A)55 B)56

C)程序错误,没有输出 D)循环条件永远为真,死循环

答案:B
评析:本程序中有个for循环,但注意到for循环的条件是“i+1”,也就是只要i+1的值为真(非零值均为真),就执行循环。当i=1的时,i+1的值为真,判断if条件不成立,执行i++,循环体一共执行5次,循环体输出的值为5。退出for循环后外部的printf打印i的值为6,而最终main函数执行完i的值为7。

参考:https://www.jobui.com/mianshiti/it/cyuyan/4639/

猜你喜欢

转载自blog.csdn.net/weixin_44788542/article/details/111739137