VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2223|回复: 17

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

[复制链接]

2

主题

12

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
发表于 2020-2-24 17:30:02 | 显示全部楼层 |阅读模式
一个程序, 想只能输入数字, 不能输入其他的字符~? 如果输入其他的字符就出现错误消息

怎么改? 最好是加个FUNCTION功能.


#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
        cout<<"\n Please enter the start year:  ";
        cin>>year1;
        cout<<"\n Please enter the End Year:  ";
        cin>>year2;
       


        //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;
}
回复

使用道具 举报

0

主题

25

帖子

19.00

积分

新手上路

Rank: 1

积分
19.00
发表于 2020-5-10 22:00:01 | 显示全部楼层
C語言作法
用getchar,ungetc
再scanf就好了
回复

使用道具 举报

0

主题

55

帖子

44.00

积分

新手上路

Rank: 1

积分
44.00
发表于 2020-5-14 21:30:02 | 显示全部楼层
唉,还是用BCB给做个小界面吧,代码更简单。
回复

使用道具 举报

0

主题

37

帖子

28.00

积分

新手上路

Rank: 1

积分
28.00
发表于 2020-5-17 13:45:01 | 显示全部楼层
查阅库函数isdigit(),可以判断一个字符是不是数字
回复

使用道具 举报

0

主题

37

帖子

28.00

积分

新手上路

Rank: 1

积分
28.00
发表于 2020-5-20 16:15:01 | 显示全部楼层
cout<<"\n Please enter the start year:  ";

while(true){
        if(kbhit()){
                char ch=getch();
       
                if(ch==13)
                        break;

                if(isdigit(ch)){
                        cin.putback(ch);
                        cout<<ch;
                }
                else{
                        cout<<"not number"<<endl;
                        exit(0);
                }
        }
}

cin>>year1;
cin.clear();

加入这段,我试验了一下,还有不少问题,慢慢探索把。
回复

使用道具 举报

1

主题

39

帖子

27.00

积分

新手上路

Rank: 1

积分
27.00
发表于 2020-5-24 19:00:01 | 显示全部楼层
        int d12;

while ( !(cin >> d12) )
{
     cout << "除了阿拉伯,其他人都不认,重输!" << endl;
         cin.clear();
         cin.ignore( 1000, '\n' );
         
}

cout << d12 << endl;
回复

使用道具 举报

1

主题

39

帖子

27.00

积分

新手上路

Rank: 1

积分
27.00
发表于 2020-5-24 19:15:01 | 显示全部楼层
        int d12;

while ( !(cin >> d12) )
{
     cout << "除了阿拉伯,其他人都不认,重输!" << endl;
         cin.clear();
         cin.ignore( 1000, '\n' );
         
}

cout << d12 << endl;
回复

使用道具 举报

0

主题

55

帖子

44.00

积分

新手上路

Rank: 1

积分
44.00
发表于 2020-5-24 22:30:01 | 显示全部楼层
主体思路
while(getline(cin, s))
{
for(int i = 0; i < s.size(); ++i)
{
    if (!isdigit(s[i]))
    {
       cout << "除了阿拉伯,其他人都不认,重输!" << endl;
       ...
    }
}
}
回复

使用道具 举报

2

主题

12

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
 楼主| 发表于 2020-6-11 21:30:01 | 显示全部楼层
看不太懂,我是初学C++的, 好多命令我没有看过啊,能插入到我的程序当中不? 谢谢
回复

使用道具 举报

1

主题

6

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-6-13 19:45:02 | 显示全部楼层
char k;
while(cin>>k&&k<='9'&&k>='0')
cout<<k<<endl;
回复

使用道具 举报

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

本版积分规则

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

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