2 wananluoye wananluoye 于 2017.09.18 09:51 提问

定义一个int类a,输入a,怎样使在键盘输入非数字字符时提示错误并重新输入?

void CRecord::InputOutputRecord()//增加支出数据
{
int year,month,day;
double output;
char purpose[20];
cout<<"\n请输入日期:(例如:2012 2 29)";
cin>>year>>month>>day;

while(!IsDateRight(year,month,day))
{
    cout<<"\n日期不正确!请重新输入:(例如:2012 2 29)";
    cin>>year>>month>>day;
}
cout<<"\n请输入支出金额:";
cin>>output;
cout<<"\n请输入支出用途:";
cin>>purpose;

CFinance*pfinance=new CFinance;
pfinance->SetFinance(year,month,day,0,output,purpose);
CNode*pnode=new CNode;
pnode->InputData(pfinance);
list.Insert(pnode);
cout<<"\n添加成功!\n"<<endl;
list.CalBalance();

}
bool IsDateRight(int year,int month,int day)//判断日期是否正确的函数
{
if(year3000)return false;
if(month12)return false;
int DaysInMonth;
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:DaysInMonth=31;
break;
case 4:
case 6:
case 9:
case 11:DaysInMonth=30;
break;
case 2:
{
if((year%4==0&&year%100!=0)||year%400==0)DaysInMonth=29;
else DaysInMonth=28;
break;
}
}
if(dayDaysInMonth)return false;
if(day>0&&day<=DaysInMonth)return true;
return false;
}
输入日期时如果输字母程序就崩了,,,

2个回答

caozhy
caozhy   Ds   Rxr 2017.09.18 10:43

可以用
do
{
cin >> n;
}
while (n合法性判断);

wananluoye
wananluoye 就是那个合法性判断不知道怎么弄,
10 个月之前 回复
qq_38204686
qq_38204686   2017.09.18 12:23

先输入到字符串中进行判断 符合即赋值给a

qq_38204686
qq_38204686 回复阿玖就是恒久啊: 简单点就是先输入到string 再即判断每个字符是否是否大于0 小于9 再转换成数字即可
10 个月之前 回复
wananluoye
wananluoye 怎么判断啊……
10 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
习题 8.16 输入一个字符串,内有数字和非数字字符,将其中连续的数字作为一个整数,依次存放到一数组a中。统计共有多少个整数,并输出这些数。
C程序设计(第四版) 谭浩强 习题8.16 个人设计习题 8.16 输入一个字符串,内有数字和非数字字符,例如:A123x456 17960? 302tab5876将其中连续的数字作为一个整数,依次存放到一数组a中。例如,123放在a[0],456放在a[1]。。。。。。统计共有多少个整数,并输出这些数。代码块:#include &lt;stdio.h&gt; #include &lt;math.h&gt; void ou
尝试一个新的函数int_input(),当用户输入整数的时候返回正常,否则提示出错并要求重新输入。
# -*- coding: utf-8 -*-def int_input(prompt=""): while True: try: int(input(prompt)) break except ValueError: print ("出错,您输入的不是整数!")int_input("请输
输入一个字符串,内有数字和非数字字符,例如 A123x456 17960? 302tab5876 操作:将连续的数字作为一个整数,一次存放到一数组a中,例如123存放在a【0】中,456放在a【1】中
#include &amp;lt;stdio.h&amp;gt; #include &amp;lt;stdlib.h&amp;gt; #define max 10 /* 输入:输入一个字符串,内有数字和非数字字符,例如 A123x456 17960? 302tab5876 操作:将连续的数字作为一个整数,一次存放到一数组a中,例如123存放在a【0】中,456放在a【1】中…… 结果输出:统计共有多少个整数,并输出这些数*/ /...
从键盘输入一个整形数n,如果输入正确的话,输出10-n后的值,如果输入错误的话输出“not int” 最后输出end
題目內容: 从键盘输入一个整形数n,如果输入正确的话,输出10-n后的值,如果输入错误的话输出“not int” 最后输出end 输入输出说明: 输入: asd 输出: not int end import java.util.Scanner; public class Main { public static void main(String[] a
输入一个字符串内有数字和非数字字符,将连续的数字作为一个整数,存到数组a中,统计整数的个数,并输出这些数
#include using namespace std; int main() {  int statistic(char *,int *);  char str[50],*pstr;  int a[10],*pa,len;  int m=0;  pstr=str;  pa=a;  cout  gets(str);  cout  len=strlen(str);  
从键盘输入一系列以$为结束符的字符串,然后对其中的非数字字符计数,并显示输出结果
从键盘输入一系列以$为结束符的字符串,然后对其中的非数字字符计数,并显示输出结果。 运行结果正确,并注有较为详细的注释 轻松学习汇编语言
Python:练习题(列表推导式、词频统计、异常处理、正则表达式等)
题目涉及到的知识点 表达式与函数:题目1、2 列表切片、推导式:题目3.1、3.2、5 函数:题目4、5 词频统计:题目6、7、8 类与对象:题目8 异常处理:题目9、10 正则表达式:题目7、8、11、12 文件读写:题目10、11、12 1. 任意定义三个数(有整型和浮点型),通过比较判断,输出其最大者。a=5 b=6 c=4.0if a>b: if a>c: prin
输入一个字符串,取出其中的整数(实现代码)
输入一个字符串,内含所有数字和非数字字符。将其中连续的数字作为一个整数,依次存放到一个数组中,统计共有多少个整                                                                                                        数,并输出这些数 题目:输入一个字符串,内含
请检查下面的程序,找出其中的错误并改正,然后上机调试,使之能正常运行,从键盘输入,检查输出
请检查下面的程序,找出其中的错误并改正,然后上机调试,使之能正常运行,从键盘输入,检查输出
汇编语言: 从键盘上输入一系列以$为结束符的字符串,然后对其中的非数字字符计数,
从键盘上输入一系列以$为结束符的字符串,然后对其中的非数字字符计数,并显示 计数结果。 data segment buf db 101,?,101 dup (?) data endsstack segment stack dw 20h dup(?) top label word stack endscode segment assume ds:data,cs:code,ss:stack