VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
12
返回列表 发新帖
楼主: iskiller

一个程序, 想只能输入数字, 不能输入其他的字符~?

[复制链接]

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-6-14 00:15:01 | 显示全部楼层
isdigit()
回复

使用道具 举报

1

主题

8

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-6-15 21:45:01 | 显示全部楼层
#include <iostream.h>
#include <conio.h>


int main () {
        //declare and initialise variables
        int year1=0;
        int year2=0;
        int countyear=0;
        //Display the "introduction"
        cout<<"\n ---------Count Leap Year Program---------";
       
        //obtain and input of the start year and end year from the user
        while(1)
        {
                cout<<"\n Please enter the start year:  ";
                cin>>year1;
                if(!cin)
                {
                        cout<<"your input is incorrect!!"<<endl;
                        cin.clear();
                        cin.ignore(1024,'\n');
                        continue;
                }
                break;
               
        }
        while(1)
        {
                cout<<"\n Please enter the end year:  ";
                cin>>year2;
                if(!cin)
                {
                        cout<<"your input is incorrect!!"<<endl;
                        cin.clear();
                        cin.ignore(1024,'\n');
                        continue;
                }
                break;
               
        }
       
       
        //loop through the leap years from start year and end year
        for (int i = year1; i <=year2; i++) {
                //year can be divide by 4 left 0, and year can be divide by 100 not equal to 0 or year can be divide by 400 is a leap year. otherwise will not display the years.
                if ((i%4==0)&&(i%100!=0)||(i%400==0)){
                        //display the leap years that user has input
                        cout <<"\n"<< i;
                       
                        // add the current input to the total
                        ++countyear<<i;
                }
        }
        cout <<"\n The number of Leap year is: "<<countyear<<" of leap years";
        cout<<"\n\n Program finished........";
       
       
        getch();
       
        return 0;
}
回复

使用道具 举报

2

主题

12

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
 楼主| 发表于 2020-7-7 01:30:01 | 显示全部楼层
太谢谢楼上的啦!
能帮忙解释一下这个话的意思不?

if(!cin)
                {
                        cout<<"your input is incorrect!!"<<endl;
                        cin.clear();
                        cin.ignore(1024,'\n');
回复

使用道具 举报

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-7-8 18:45:01 | 显示全部楼层
呵呵,直接调用识别数字函数就可以了
回复

使用道具 举报

0

主题

3

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-8-26 22:15:01 | 显示全部楼层
5楼的把“exit(0); ”行注释掉就ok了。
回复

使用道具 举报

0

主题

3

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-8-26 22:30:01 | 显示全部楼层
嗯,是的,还是有错误。
回复

使用道具 举报

0

主题

3

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-8-26 22:45:01 | 显示全部楼层
12楼的还是有bug
回复

使用道具 举报

0

主题

4

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-8-26 23:00:01 | 显示全部楼层
[code=C/C++]
        INT8U key,lastkey;
        INT8U err;
        INT32U root,a,b,n;
        char str[33];
        INT32U sum=0;
        int times=0;
        for (;;) {
                if (PC_GetKey(&key)==TRUE){
                        if(key==0x1B)PC_DOSReturn();
                        if(key>47&&key<58&×<11||key==8){
                                if(times==0){
                                        PC_DispStr(27,5,"            ",DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);
                                        PC_DispStr(26,6,"            ",DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);
                                }
                                if(key!=8){
                                        ++times;
                                        PC_DispChar(27+times,5,key,DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);
                                        sum=sum*10+key-48;
                                        lastkey=key;
                                }
                                if(key==8&×>0){
                                        PC_DispChar(27+times,5,' ',DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);
                                        sum=(sum-lastkey+48)/10;
                                        times-=1;
                                }
                        }
                }
                if(key==13){
                        PC_DispStr(5,6,"Result Of The Number:",DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);
                        if(times==0){
                                PC_DispStr(26,6,"            ",DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);
                                PC_DispStr(27,5,"            ",DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);
                        }
                        a=3;n=2;
                        for(;a<=sum;a+=2){
                                OSSemPend(FuncSem,0,&err);
                                root=(INT32U)sqrt((double)a);
                                OSSemPost(FuncSem);
                                for(b=3;;){
                                        if(a%b==0)break;
                                        b+=2;
                                        if(b>root){++n;break;}
                                }
                        }
                        if(sum==1||sum==2)n-=1;
                        if(sum==0)n=0;
                        OSSemPend(FuncSem,0,&err);
                        ultoa(n, str, 10);
                        OSSemPost(FuncSem);
                        PC_DispStr(29,6,str,DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);                       
                        sum=0;times=0;
                }
        }
[/code]
取自我大三时写的例子:uC/OS-II环境下的质数计算。不必具体看懂,大意是你输入非数字不做响应,PC_GetKey()该函数直接将按键存入实参。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表