当前位置: 代码迷 >> C语言 >> 来看看这个for循环是怎么回事?
  详细解决方案

来看看这个for循环是怎么回事?

热度:289   发布时间:2005-02-03 20:08:00.0
来看看这个for循环是怎么回事?

每次程序都会将for循环输出字符数+1次,这是为什么呢? 例如: 输入:a 结果:123123 输入:ab 结果:123123123 #include <stdio.h>

int main(void) { int a,b,c; printf("please enter what you want : "); scanf("%c",&a); while(a!='a') { for(b=3;b>0;b--) /*就是这个循环*/ putchar(b); putchar(a); scanf("%c",&a); return 0; } return 0; }

[此贴子已经被作者于2005-2-3 21:05:08编辑过]

搜索更多相关的解决方案: void  include  please  return  

----------------解决方案--------------------------------------------------------
这位仁兄,恕在下愚昧,我实在看不懂阁下这个程序是为了实现什么目的,怎么又是int,又是putchar的?
----------------解决方案--------------------------------------------------------
没什么目的,只是不知道为什么for会多循环一次.
----------------解决方案--------------------------------------------------------
我也看不明白啊!
----------------解决方案--------------------------------------------------------
刚才就看了你的程序,因为几乎没有找到有一条正确使用的语句,也懒得回。

1。按你所说的现象是不可能存在的,无论你输入什么,for至多执行一次。因为while中有个return,汗,平生第一次看见这种用法.

2.回答你的问题,如果删去这个while中的return,那么,才有可能象你说的,原因是第一个scanf接收"a"这个值,但是,还有一个“回车”留在缓冲区,当执行完

for(b=3;b&gt;0;b--)    /*就是这个循环*/
putchar(b);
putchar(a);

第二个scnaf接收了这个回车

所以实际打印的是:

321(注意:这个是ASCII码的值,不是字符123)a321"回车"(回车不可见)

再看看你程序:

#include &lt;stdio.h&gt;int main(void)
{
int a,b,c;//这里定义为int
printf("please enter what you want : ");
scanf("%c",&amp;a);//而这里当char用
while(a!='a')//因为a是int,所以,你输入'a'也不会与'a'相等
{
for(b=3;b&gt;0;b--)    /*就是这个循环*/
putchar(b);
putchar(a);
scanf("%c",&amp;a);//不知什么原因int当char?
return 0;//平生第一次见到这种用法
}
return 0;//既生亮,何生渝?
}




----------------解决方案--------------------------------------------------------
谢谢! 下次不会再把这种问题贴上来了~~
----------------解决方案--------------------------------------------------------
既生亮,何生渝

恩KNOCKER发明的好句子
----------------解决方案--------------------------------------------------------

----------------解决方案--------------------------------------------------------
#include <stdio.h> int main() { int a; scanf("%c",&a);//记住是scanf("%c",&a);而不是scanf("%d",&a);后者当你输入a时不符值! if(a=='a') printf("OK"); return 0; } knocker 你终于让我找到一个错误了,你看看上面的结果??? 是可以相等的,因为整形和字符型都是按相同的方式进行存储的,在比较的时候应该有一个强制转换(我是这样认为的),所以。。

[此贴子已经被作者于2005-2-6 9:30:46编辑过]


----------------解决方案--------------------------------------------------------
你用的是什么系统?什么编译器?

#include &lt;stdio.h&gt;
int main()
{
    int a ;
   
    for(;;)
    {
        scanf(" %c",&amp;a);
        printf("a=%d  'a'=%d\n",a,'a');
        if(a=='a')
        printf("OK!\n");
        else printf("NO!\n");
    }
   
}


test:

a        &lt;----输入
a=-159  'a'=97     &lt;----不一样
a=-159  'a'=97
NO!
w
a=-137  'a'=97
NO!
a
a=-159  'a'=97
NO!
^C
----------------解决方案--------------------------------------------------------
  相关解决方案