然后打印y--,先取y的值0,打印0,然后再自减。
所以这里输出0,选D
29
A 看起来有break. 但是每次赋值i=i%100+1. 对于取余操作,i%100,结果范围是0~99,加一后就是1~100.这样i永远不可能是>100的。于是Break不可能被执行。所以这个是死循环。
B 标准的死循环。没有退出条件,永远执行。
C k初始为1000,第一次执行++k后,k=1001,判断k>=10000失败,退出。于是这个不是死循环,而是只执行一次。
D 注意while(s)由于s非0,所以 这个循环不会退出。而后面的--s,其实并不是循环体。而是循环外的。
30 每次判断i<4后,i再自加。所以当i=4时退出循环,之后再自加,i=5.选C
分类: 电脑/网络 >>程序设计 >>其他编程语言问题描述:
main()
{
int y,x,t
char s,m, p
do
{
scanf("%c",&p)
y=p
if(y==121)
{
printf("y=%d",y)
scanf("%c",&s)
x=s
printf("x=%d",x)
}
else
{
printf("乱来")
scanf("%c",&m)
t=m
printf("t=%d",t)
}
}
while(x==121||t==121)
}
怎么运行到printf("y=%d",y)是我还没输入“s”,他就把x值输出来了,并且x=10,不论怎样t都等于10,怎么回事,各位高手指点下。
解析:
scanf("%c",&p)这句后面加一个getchar()
即
scanf("%c", &p)
getchar()
原因是你输入完p的值后,按了一下回车,p将输入的值接收以后,回车还在缓冲区里,等到scanf("%c", &s)的时候,不用等你输入,因为缓冲区已经有东西了,s就把回车给接收了。要在scanf后面加一个getchar()来吃掉回车。