|
|
时飞: 回帖置顶 2012-03-24 08:08:29
1.#inculd
main()
{int x=8;
for(;x>0;x--)
{if(x%3) {printf("%d,',x--);continue;}
printf("%d,",--x);
}
}
该程序如何运行?每一个怎么出来的? 答案8,5,4,2
先x=8,判断x%3=2,为真,输出8,然后x值减1为7,然后做for循环的判断再减1,x=6;
判断x%3=0,为假,然后做for循环的判断再减1,x=5;
判断x%3=2,为真,输出5,然后x值减1为4,然后做for循环的判断再减1,x=3;
判断x%3=0,为假,然后做for循环的判断再减1,x=2;
判断x%3=2,为真,输出2,然后x值减1为1,然后做for循环的判断再减0,x=3;
for判断x>0不成立,退出for循环,执行完毕。
2.mian()
{int y=10;
while(y--);printf("y=%d\n",y);
}
循环结构但是循环什么都不做,循环结束后输出y的值,但因为是后--所以可不可以这样理解y==1,y--.当y==1时,依旧成立,y=0,0==1不成立,但是y--还要进行,y=-1
3.for(i=0;i<4;i++)
for(k=1;k<3;k++);
printf("*";
我认为该输出8个* 答案只有一个* 为什么???
这个的原因是你在第二个for玄幻的后面加了“;”,循环结构但是循环什么都不做,所以只输出一个 *。
4.#inculd
main()
{char s[]={"012xy"};int i, n=0;
for(i=0;s!=0;i++) \*我认为i=0时就该结束了*\
if(s>'a'&&s<='z')n++;
printf("%d\n",n);
}
答案:2 为啥????
字符串的结束符是“\0”,计算机存储是按ASCII码存的,0的ASCII码是30h,不是0的,要想按你说的,你可将其改为
#include
void main()
{
char s[]="012xy";
int i,n=0;
for(i=0;s!='\0';i++) //我认为i=0时就该结束了
if((s>'a')&&(s<='z'))
n++;
printf("%d\n",n);
} |
|