黑客X档案官方论坛's Archiver

wyzhack 发表于 2007-3-12 18:40

vc++ do while循环问题

[code]#include <stdio.h>
#include <stdlib.h>
void main()
{
char shuru;
do
{

printf("\n请输入字符:");
scanf("%c",&shuru);

} while(shuru!='s');
printf("输入正确!");

}[/code]

这个代码哪里不对啊 为什么我在输入一个不是s的字符的时候会显示两行“请输入字符”?

[[i] 本帖最后由 破风 于 2007-3-13 21:56 编辑 [/i]]

郁闷扫情郎 发表于 2007-3-13 19:11

你把while前的{去掉试试

wyzhack 发表于 2007-3-13 19:39

谢谢了

云砉生 发表于 2007-3-14 10:38

up
回车或空格也作为ascii字符被读入,你也可以考虑滤掉

xyq560787 发表于 2007-3-15 15:46

fflush(stdin);    清空键盘缓存 具体有什么用,
有谁可以讲解一写么:face18

jifengnan 发表于 2008-4-23 18:35

楼主有才啊!

大姐,您真是太有才了,您这个问题问的真是太好了。
你这个程序不就是要实现这个情况吗?——当输入s时,输出“输入正确”;当输入非s字符时,输出“请输入字符”,要求继续输入。
你这个问题和下面这个问题类似:
有一段程序:
int a;
a = 1+1;
printf("%d",a);
为啥这个程序的输出结果总是2呢?高手帮帮忙啊……

jifengnan 发表于 2008-4-23 18:39

时间有点久了, 不过我还是再回复一下。
do-while循环是先做后判断,所以先输出一个"请输入字符",结果你输入的不是s,于是判断,不是s,满足条件——shuru!=s,于是继续循环,又输出一个"请输入字符".

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.