c++关于键入数字和字母的问题

#include <iostream>
#include <stdlib.h>
#include <ctime>
using namespace std;

int main()
{
int i,m,a,b,c,q;
int n;
q=0;
srand(time(NULL));
for(i = 0;i < 10;i++)
{
a =1+ rand() % 19;
b =1+ rand() % 19;
c =1+ rand() % 19;
m=a+b-c;

if((a+b-c<20)&&(a+b-c>0)&&(a+b<20)&&(a+b>0)&&(a!=b)&&(b!=c)&&(a!=c))
{ cout<<i+1<<" :"<<a<<"+"<<b<<"-"<<c<<"=";
cin>>n;
/*if((n>='a'&&n<='z')||(n>='A'&&n<='Z'))
{cout<<"请输入正确的数字"<<endl;
cin>>n;
}*/

if(m==n)
{ q++;
cout<<"正确"<<endl;
}
else
cout<<"错误"<<endl;
}
else i--;
}

cout<<endl<<"最终成绩(满分10分):"<<q<<endl;

return 0;
}

当输入的意外是字母时候,比如 键入 a。 int n, 将产生整个十道题全部错误,当改成char n, 又会导致n只能是 0~9的数。所以并没有找到具体的解决办法。希望大虾能够给予指导。

如果你的程序能运行话 那么解决这个问题只要将
n的输入进行判断就行。
所以 在输入n之后 即
/*if((n>='a'&&n<='z')||(n>='A'&&n<='Z'))
{cout<<"请输入正确的数字"<<endl;
cin>>n;
的注解 用while((n>='a'&&n<='z')||(n>='A'&&n<='Z'))
{cout<<"请输入正确的数字"<<endl;
cin>>n;}替换 判断追问

我的分不能给你,因为你没有懂我的意思,就是int 不可以被赋值为字母,所以你的改的语法没有解决我的问题。

温馨提示:内容为网友见解,仅供参考
无其他回答

c++关于键入数字和字母的问题
{cout<<"请输入正确的数字"<<endl;cin>>n;}替换 判断

C++:键入m和n,生成mxn矩阵并填整数,输出矩阵的奇数行。咋写(不得用pri...
\/\/#include "stdafx.h"\/\/vc++ 6.0? Maybe should add this line.include <iostream> include "math.h"include "time.h"using namespace std;int main(int argc,char *argv[]){ int a[99][99],m,n,i,j;cout << "Please enter m & n(1<m,n<100)...\\n";if((cin >> m >...

请看这个程序.为什么调试的时候键入数字,回车之后,命令提示符自动关闭...
DEVC++这个编译器学习C++是很好的工具,因为这款编译器只支持 标准C++的 回到楼主的新问题:其实在标准C++里面,main()必须定义为int类型哦 建议楼主看C++ Primer这本书,可以进入标准C++的领域 而使用VC习惯的人,是很难懂的标准C++的 在VC里面,VC编译器对于C也是兼容的,而devC++不行 拿楼主无语了...

c++求教!从键盘键入一个小写字母,将它转换为大写字母
cout<<"请输入小写字母"<<endl;system("pause");} 这样应该就好了,你if里的条件写的不正确,if的{}用的也有些问题,要注意呀。希望对你有帮助,望采纳谢谢。

C++将某字符串中的数字和字母下标为偶数的字符的ascii值加1,例如ab...
楼主说是下标为偶数的字符加1,与所举例子不一致,我就当是下标为偶数的吧即i=i+2 include <stdio.h> include <string.h> void main(){ char str[100];printf("input the string:\\n");gets(str);int i,len;len =strlen(str);for(i=0;i<len;i=i+2){ if (str[i]>='A'&&str[...

c++为什么只有一个输入语句,但是要键入两次才能输出
可能你使用了getchar 之类的字符获取函数。所以需要接收两次回车。请附上代码。因为scanf里面加了\\n 就表示你在输入数字后还需要输入一次回车。请去掉\\n 。\\n用于printf语句中

c++代码问题~为什么只会执行一次
在scanf("%c",&a);中的%前加一个空格,写成scanf(" %c",&a);就行了。"%c"把回车('\\n')也是当作字符的。它只接收一个字符,而你键入字符后必须有个回车才能生效,这个回车被留在缓冲区,被第二个scanf接收了,你没看见黑框框中的最后一个F:\\>前空了一行吗?那就是第二个scanf接收的...

C++中从键盘方向键的读取问题!~求高手指点!
cmd = 0: 当cmd是0,bioskey()返回下一个在键盘键入的值(它将等待到按下一个键)。它返回一个16位的二进制数,包括两个不同的值。当按下一个普通键时,它的低8位数存放该字符的ASCII码,高8位存放该键的扫描码;对于特殊键(如方向键、F1~F12等等),低8位为0,高8位字节存放该键的扫...

把从键盘上键入的一串数字和正负号转换成等价的数字值,并打印出来...
你这程序应该有问题吧,首先,你定义的是s[5]这个字符数组,然后用s=getcher();这个s应该改成一个字符型数据char s;,而不应该定义s[5];再有,是getchar而不是cher;它是表示接收从键盘输入的,赋给字符s if(s=='+'||s=='-')这个是条件所接收的字符为'+'或为'-'中间的||是逻辑或。...

C++ 怎么实现上下文菜单
允许为菜单项输入控件名。控件名是标识符,仅用于访问代码中的菜单项;它不会出现在菜单中。“索引”可指定一个数字值来确定控件在控件数组中的位置。该位置与控件的屏幕位置无关。“快捷键”允许为每个命令选定快捷键。“帮助上下文 ID”允许为 context ID 指定唯一数值。在 HelpFile 属性指定的帮助...

相似回答