我今天活见鬼了,我写了很多小程序,今天却遇到了这样的问题

chenfeng3000 2001-10-04 10:43:37
我今天活见鬼了,我写了很多小程序,今天却遇到了这样的问题
我简直被疯了:我本意是想每次输入字符chinput 回车后 x31=x31+1
并回显,我的期望数据是:
w
x=0
f
x=1
g
x=2
q
退出循环。
int x31=0;
char chinput
do
{
scanf("%c",&chinput);
printf("x=%d",x31++);
}while(chinput!='q');
可是天不作美,我得到的数据却是这样的:
w
x=1 x=2
f
x=3 x=4
g
x=5 x=6
q
每次循环却作了两次printf()函数,并且 printf()还要先于scanf()
执行,我真的很笨,我试了 pascal,truboC 又试着用 WHile ,for(;;)
结果都失败了,。大家救救我啊!我在此向您表示39分的感激,问题解决了
分数我一定一定给。拜托了!!!

...全文
127 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
daobei 2001-10-06
  • 打赏
  • 举报
回复
还是去C那边问吧.
:)
daobei 2001-10-06
  • 打赏
  • 举报
回复
我看不懂,我还不会C了
:(
zeng_zhh 2001-10-05
  • 打赏
  • 举报
回复
沒錯,當用scanf時,是接受所有鍵盤輸入,回車它也會看成一個字符,解決方法可以如ozw 所說.
foolflyfish 2001-10-05
  • 打赏
  • 举报
回复
不可能吧
ozw 2001-10-05
  • 打赏
  • 举报
回复
#include <stdio.h>

int main()
{
int x31=0;
char chinput;
while(chinput!='q')
{
scanf(" %c",&chinput); //%c前面加个空格就行了
printf("x=%d\n",++x31);
}
return 0;
}
ozw 2001-10-05
  • 打赏
  • 举报
回复
或者系统把printf也当作一次输入
ozw 2001-10-05
  • 打赏
  • 举报
回复
你的问题原因:回车也是一次输入!

meteor_liang 2001-10-05
  • 打赏
  • 举报
回复
佩服OZW的功底,估计是计算机专业出生的!

实在值得晚辈学习!
AFIHA 2001-10-05
  • 打赏
  • 举报
回复
检测回车键
pengcheng 2001-10-05
  • 打赏
  • 举报
回复
gz
langzhi 2001-10-05
  • 打赏
  • 举报
回复
up
goldsun 2001-10-05
  • 打赏
  • 举报
回复
ok
MonkeyLin 2001-10-05
  • 打赏
  • 举报
回复
不会C
xuqiang007 2001-10-04
  • 打赏
  • 举报
回复
我不会C,瞎蒙的。
int x31=0;
char chinput
do
{
scanf("%c",&chinput);
x31++; //注意
printf("x=%d",x31);
}while(chinput!='q');
要么可能是这样,当然还是瞎蒙的。
int x31=0;
char chinput
do
{
scanf("%c",&chinput);
printf("x=%d",++x31);//注意
}while(chinput!='q');

chenfeng3000 2001-10-04
  • 打赏
  • 举报
回复
不可能吧!这只是关于程序设计的基本功,不过我今天确实无法解释上面的现象
progame 2001-10-04
  • 打赏
  • 举报
回复
我也搞不懂,怎么看都不知
Jneu 2001-10-04
  • 打赏
  • 举报
回复
C语言的小程序怎么到VB来问了

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧