再请教二级的题目
来源:百度知道 编辑:UC知道 时间:2024/06/01 13:15:30
1:以下程序的输出结果是
#define M(x,y,z) x*y+z
main()
{ int a=1,b=2, c=3;
printf("%d\n", M(a+b,b+c, c+a));
}
A) 19 B) 17 C) 15 D) 12
答案是D,请问为什么啊?
还有这个
2:以下程序的输出结果是
main()
{ int a=0,i;
for(i=;i<5;i++)
{ switch(i)
{ case 0:
case 3:a+=2;
case 1:
case 2:a+=3;
default:a+=5;(这个是什么意思啊??)
}
}
printf("%d\n",a);
}
A) 31 B) 13 C) 10 D) 20
答案是A
#define M(x,y,z) x*y+z
main()
{ int a=1,b=2, c=3;
printf("%d\n", M(a+b,b+c, c+a));
}
A) 19 B) 17 C) 15 D) 12
答案是D,请问为什么啊?
还有这个
2:以下程序的输出结果是
main()
{ int a=0,i;
for(i=;i<5;i++)
{ switch(i)
{ case 0:
case 3:a+=2;
case 1:
case 2:a+=3;
default:a+=5;(这个是什么意思啊??)
}
}
printf("%d\n",a);
}
A) 31 B) 13 C) 10 D) 20
答案是A
1,M(a+b,b+c, c+a)展开为 a+b * b+c + c+a
=1+2*2+3+3+1=12
2,default:表示默认处理,就是以上case都不满足时候的处理。
以为里面没有加break,所以上面的满足的情况下,其下的全部语句都执行。
结果是
i=1时 a +3+5=8
i=2时 a +3+5=16
i=3时 a +2+3+5=26
i=4时 a +5=31
太乱