问几道问题。谢谢大哥,大姐们。
第一道
已知 int x=30,y=50,z=80;以下语句执行后变量x,y,z,的值分别是什么?
if(x>y||x<z&&y>z)
z=x;x=y;y=z;
A:x=50,y=80,z=80 B:x=50,y=30,z=30
C: x=30,y=50,z=80 D:x=80,y=30,z=50
第二道
程序段如下
int k=0;
while(k++<=2); printf("last=%d\n",k);
则执行结果是last=多少?
A:2 B:3 C:4 D:无结果
第三道
执行下面的程序后,a的值为多少?
main()
{int a,b;
for(a=1,b=1;a<=100;a++)
{if(b>=20)break;
if(b%3==1)
{b+=3;
continue;
}
b-=5;
}
}
A:7 B:8 C:9 D:10
第四道
以下程序的输出结果是多少?
#include<stdio.h>
main()
{int i=0,a=0;
while(i<20)
{for(;;) {if((i%10==0) break;else i--;}
i+=11; a+=i;
}
printf("%d\n",a);
}
A:21 B:32 C:33 D:11
第一道的答案是:A
第二道的答案是:C
第三道的答案是:B
第四道的答案是:B
那位大哥,大姐们能够解释一下,谢谢了.问题有点多。刚刚开始学。哈哈。
[解决办法]
第二题的考点在于
while()这里的检测条件,在循环体之前,无论如何都会被检测一次
while(k++<=2);
可以写成这样
while(k++ <= 2){
//空循环体
}
假设现在k已经是2了
那,再经过这个语句时,
k++ <= 还是成立的
于是,K=3
然后,再经过这个语句
此时 3++ <= 2才不符合条件,
但是,K又被++了一次,就是4了
[解决办法]
int x=30,y=50,z=80;
if(x>y||x<z&&y>z) //不满足
z=x; //不执行
x=y; //x=50
y=z; //y=80
//A
int k=0;
while(k++<=2); //k=3时跳出循环,并且k++
printf("last=%d\n",k);
//C
int a,b;
for(a=1,b=1;a<=100;a++)
{if(b>=20)break;
if(b%3==1)
{b+=3;
continue;
}
b-=5; //b除3余数为1时加3,否则减5,b>=20时退出。1%3==1满足,加7次3超过20,a加7次变为8
}
//B
int i=0,a=0;
while(i<20)
{for(;;) {if((i%10==0) break;else i--;}
i+=11; a+=i;
}
printf("%d\n",a);
//过程:
//i=i+11=11 a=a+11=11
//i--=10 i=i+11=21 a=a+21=32(i>20结束)
//B