C语言DO循环与IF还有后增

Python022

C语言DO循环与IF还有后增,第1张

28 其实 这个初始值不重要。由于do while的判断条件是while(--y)所以退出循环时,必然是y=0

然后打印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()来吃掉回车。