执行以下程序后,输出的第一行是?,输出的第一行是?

来源:百度知道 编辑:UC知道 时间:2024/05/18 01:08:17
main()
{
char x='A';
int y=0;
while (x++<68||++y<5){
int x=100;
x++;
printf ("x=%\ndy=%y\n",x,y);
}
详细点,可怜可怜我吧
题目是错了吧 我问了同学 多了int x=100;

输出的第一行应该是:
101
0
你程序的最后一句肯定写错了,应该是printf ("x=%d\ny=%d\n",x,y);
这个问题的关键是:
1.第一次执行while (x++<68||++y<5)时,先计算x<68的值,当然为1,所以条件成立,执行循环。但要注意:关系运算符||,当先一项已为1,1“或”任何数都为1,所以子表达式++y<5是不执行的,即y的值是不自增的!!!之后执行x++
2.进入循环体后,循环体花括号内又定义了另一个变量x,此变量x的作用范围只是循环体花括号内,同时,因为“强龙不压地头蛇”,所以在循环体内的x指的是地头蛇x!!!因此要输出的x=100+1=101,而y=0!

main()
{
char x='A';
int y=0;
while (x++<68||++y<5){
int x=100;
x++;
printf ("x=%\ndy=%y\n",x,y);
} //少了:}
正确为:
main()
{
char x='A';
int y=0;
while (x++<68||++y<5){
int x=100;
x++;
printf ("x=%\ndy=%y\n",x,y);
}
}
程序输出结果为:
x=%
dy=%y
楼上的朋友回答是不对的,因为:printf ("x=%\ndy=%y\n",x,y); 一句中的%后没有任何的控制输出。