来看看这个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编辑过]
----------------解决方案--------------------------------------------------------
这位仁兄,恕在下愚昧,我实在看不懂阁下这个程序是为了实现什么目的,怎么又是int,又是putchar的?
----------------解决方案--------------------------------------------------------
没什么目的,只是不知道为什么for会多循环一次.
----------------解决方案--------------------------------------------------------
我也看不明白啊!
----------------解决方案--------------------------------------------------------
刚才就看了你的程序,因为几乎没有找到有一条正确使用的语句,也懒得回。
1。按你所说的现象是不可能存在的,无论你输入什么,for至多执行一次。因为while中有个return,汗,平生第一次看见这种用法.
2.回答你的问题,如果删去这个while中的return,那么,才有可能象你说的,原因是第一个scanf接收"a"这个值,但是,还有一个“回车”留在缓冲区,当执行完
for(b=3;b>0;b--) /*就是这个循环*/
putchar(b);
putchar(a);
第二个scnaf接收了这个回车
所以实际打印的是:
321(注意:这个是ASCII码的值,不是字符123)a321"回车"(回车不可见)
再看看你程序:
#include <stdio.h>int main(void)
{
int a,b,c;//这里定义为int
printf("please enter what you want : ");
scanf("%c",&a);//而这里当char用
while(a!='a')//因为a是int,所以,你输入'a'也不会与'a'相等
{
for(b=3;b>0;b--) /*就是这个循环*/
putchar(b);
putchar(a);
scanf("%c",&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 <stdio.h>
int main()
{
int a ;
for(;;)
{
scanf(" %c",&a);
printf("a=%d 'a'=%d\n",a,'a');
if(a=='a')
printf("OK!\n");
else printf("NO!\n");
}
}
test:
a <----输入
a=-159 'a'=97 <----不一样
a=-159 'a'=97
NO!
w
a=-137 'a'=97
NO!
a
a=-159 'a'=97
NO!
^C
----------------解决方案--------------------------------------------------------