| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1014 人关注过本帖
标题:[求助]为什么出现两行输入提示?(已经解决)
只看楼主 加入收藏
为了c
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2005-2-2
收藏
 问题点数:0 回复次数:8 
[求助]为什么出现两行输入提示?(已经解决)
教材上的例子,将大写字母转为小写,我加了一个循环语句,结果屏幕上出现两行提示“Please input again:”,请各位大侠帮忙看看为什么会这样? #include "stdio.h" #include "ctype.h" main() {char x,y; x=getchar(); while (isupper(x)==0) {printf("Please input again:\n"); scanf("%c",&x);} /*换成x=getchar()也一样*/ y=x+32; printf("%c %d\n",x,x); printf("%c %d\n",y,y); getch(); } 谢谢2-5楼朋友的回答,用其他方法也能完成这个转换。 我的问题是:为什么会出现两行提示? (2005.02.20) 问题原因如下: 1、scanf("%c",&x)语句表示只能接受1个字符,而输入一个字符后需要“回车”确认, 相当于输入了2个字符。 2、在循环语句中如果第一个字符不是大写字母,则第二个字符“回车” 自动被“scanf”接受(第二个字符也不是大写字母),所以会连续出现两行提示语句。 3、将原语句改为scanf("%2c",&x) 或scanf(" %c",&x)即可解决问题。如果超出1个字符, 仍然会出现原来的问题。 谢谢8楼的兄弟!(2005.02.26)

[此贴子已经被作者于2005-2-26 13:48:17编辑过]

搜索更多相关主题的帖子: 提示 输入 
2005-02-17 23:01
ysfabm
Rank: 1
等 级:新手上路
威 望:1
帖 子:274
专家分:0
注 册:2004-11-9
收藏
得分:0 
这样就可以了!
#include "stdio.h"
#include "ctype.h"
main()
{char x,y;
x=getchar();
while (isupper(x)==0)
{{printf("Please input again:\n");
scanf("%c",&x);}   /*换成x=getchar()也一样*/
y=x+32;
printf("%c %d\n",x,x);
printf("%c %d\n",y,y);}
getchar();
}

精诚所至,
       金石为开!
      PLM技术社区: [url=http://www.]www.[/url] 最专业的PLM技术讨论社区。
2005-02-18 07:58
Antigloss
Rank: 1
等 级:新手上路
帖 子:109
专家分:0
注 册:2004-12-30
收藏
得分:0 

#include <stdio.h> #include <ctype.h>

main() { char x,y; x=0;

while (isupper(x)==0){ printf("Please input again:\n"); x=getchar(); getchar(); y=x+32; printf("%c %d\n",x,x); printf("%c %d\n",y,y); } } =============== 这样就可以了

2005-02-18 15:23
呆派祖师
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2005-1-30
收藏
得分:0 
#include &lt;stdio.h&gt;
main()
{
char x,y;
x=getchar();
y=x-'A'+'a';
printf("%c %d\n",x,x);
printf("%c %d\n",y,y);
}

2005-02-19 19:29
mengge
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2005-2-10
收藏
得分:0 
#include "stdio.h"
main
{
char x,y;
x=getchar();
if (x&gt;='A'&amp;&amp;x&lt;='Z') printf("%c",x);
else y=x-32;
 printf("%c",y);
getch()
}
2005-02-20 03:51
为了c
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2005-2-2
收藏
得分:0 
以下是引用ysfabm在2005-2-18 7:58:30的发言: 这样就可以了! #include "stdio.h" #include "ctype.h" main() {char x,y; x=getchar(); while (isupper(x)==0) {{printf("Please input again:\n"); scanf("%c",&x);} /*换成x=getchar()也一样*/ y=x+32; printf("%c %d\n",x,x); printf("%c %d\n",y,y);} getchar(); }
谢谢版主回答,不过仍然不对

2005-02-20 13:15
呆派祖师
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2005-1-30
收藏
得分:0 
经测试,没有问题
#include&lt;stdio.h&gt;
main()
{
char x,y;
while((x=getchar())!='\n'){
if(x&gt;='a'&amp;&amp;x&lt;='z')    putchar(x);
else { y=x-'A'+'a';     putchar(y);   }
}
}

[此贴子已经被作者于2005-2-20 20:18:36编辑过]



2005-02-20 20:17
myth42
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2005-2-18
收藏
得分:0 

程序我看了一下,和下面的程序属同一个问题: 就是接收了输入字符后的回车作为输入。呵呵! 解决方法:1. 将while里面的 scanf("%c", &x); 改为 scanf(" %c", &x); 就是在%c前加一个空格以不接收类似空格之类的字符。 2.可以和下面这处程序解决方法一样。在此不再重复,呵呵。

引用:

帮我找看错在那里啊[求助]

我一个刚学C的小鸟,做拉一个“计算两个数并且显示出来”的程序。调试的时候就是不能显示,我找不到是什么原因

/* 原程序我修改了一下个人的风格,内容没有变 建议作者多看一下编程风格和规范方面的书籍 */ #include "stdio.h" main() { /*定义变量,a,b为输入数据,c为输出结果,d为运算符号*/ int a,b,c; char d; /*do循环判断输入的a,b都不为0*/ do { printf("please put in the first num\n"); scanf("%d",&a); printf("please put in the second num\n"); scanf("%d",&b); if (a*b==0) printf("doing is wrong\n"); } while (a*b==0);

/* 出错在这里:当你输入第二个数的时候,要用回车确认,此时标准输入流(stdin)中包括“b的输入值”和“回车” 而"scanf("%d", b);"这一个语句只接收了“b的输入值”, “回车”则仍在stdin中,下一句"d = getch();"所接收到的是“回车”,而不是你输入的运算符. */

/*获取输入的运算符号*/ printf("please put in the char"); /* 解决方法:1.在此加多一句 "d = getchar();" 以接收掉“回车”; 2.在此加多一句 "fflush(stdin)" 以刷新标准输入流stdin; */ d=getchar(); d=toupper(d); /*选择语句判断根据所输入的运算符号,选择运算和打印*/ switch (d) { case '+' : c=a+b; printf("c=a+b=%d+%d=%d",a,b,c); break; case '-' : c=a-b; printf("c=a-b=%d-%d=%d",a,b,c); break; case '*' : c=a*b; printf("c=a*b=%d*%d=%d",a,b,c); break; case '/' : c=a/b; printf("c=a/b=%d/%d=%d",a,b,c); break; case '%' : c=a%b; printf("c=a%b=%d%%d=%d",a,b,c); break; }

[此贴子已经被作者于2005-2-20 22:02:34编辑过]


我是风中的一粒尘,为寻找雾里的那滴露而飘泊,虽然我孤独,但我快乐!!!!
2005-02-20 21:59
为了c
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2005-2-2
收藏
得分:0 
谢谢8楼的兄弟,问题解决!

2005-02-26 13:12
快速回复:[求助]为什么出现两行输入提示?(已经解决)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029439 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved