丰乐亭记修之来此:关于C++字符输入的问题

来源:百度文库 编辑:高考问答 时间:2024/04/28 10:56:54
我想让我编的程序实现当你输入一个字符(只有一个字符,比如一个字母或者一个数字)时,不需要按回车就可以赋给变量?
如:
#include<iostream.h>
#include<time.h>
int main()
{
cout<<"Input the letter occured:";
char letters[26]={'a','b','c',... ...'z'};
char letter,input;
for(int i=1;i<=100;i++){
letter=letters[rand()%26];
cout<<letter
cin>>input;
if(input==letter)
cout<<"You are great!";
else
cout<<"Bad job!";
}
return 0;
}
这里临时写了个简单的算是小练习的程序吧,不过有个严重的缺点就是每出现一个字母后客户需要输入对应字母 并 按 回 车!!!这样一来程序就显的很不成熟了.
我想解决的问题就是如何不需要按回车就可以让程序识别出你输入的字符呢?????
知道的大哥大姐们请TELL ME啊... ...

我测试了一下,可以用<conio.h>的getch函数,但是这个函数不能和cin,cout一起用,而且输入的字符也不会显示出来,不过只要在读入之后,再打印出来就可以了。

我改了一下你的程序,大概这个样子,测试过了,还不错:)

#include<time.h>
#include<stdlib.h>
#include<conio.h>
int main()
{
printf("Input the letter occured:\n");
char letters[26]={'a','b','c','d','e','f','g',
'h','i','j','k','l','m','n',
'o','p','q', 'r','s','t',
'u','v','w', 'x','y','z' };
char letter,input;
for(int i=1;i<=100;i++){
letter=letters[rand()%26];
//cout<<letter;
printf("%c",letter);
//cin>>input;

input=getch();
printf("%c\n",input);

if(input==letter)
printf("You are great!\n");
else
printf("Bad job!\n");
}
return 0;
}

我理解你的意思了
不过从技术的角度说你用Cin来实现这一功能是不现实的
因为必须有回车来说明输入结束
正常的你想要的结果的做法是监听键盘

在程序开始修改终端属性就OK,结束后恢复终端属性,使用getch,getche等函数的副作用比较大,其结果视系统和具体终端设置而定,可以试验一下各种终端