24小时热门版块排行榜    

CyRhmU.jpeg
查看: 2148  |  回复: 11

暖雪儿

木虫 (小有名气)

时飞: 回帖置顶 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);
}

» 本帖已获得的红花(最新10朵)

11楼2012-03-23 11:04:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

时飞

银虫 (小有名气)

送鲜花一朵
引用回帖:
11楼: Originally posted by 暖雪儿 at 2012-03-23 11:04:13:
1.#inculd<stdio.h>
main()
{int x=8;
for(;x>0;x--)
{if(x%3) {printf("%d,',x--);continue;}
printf("%d,",--x);
}
}
该程序如何运行?每一个怎么出来的?   答案8,5,4,2
先x ...

表示一下谢谢
12楼2012-03-24 08:09:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 时飞 的主题更新
信息提示
请填处理意见