| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 758 人关注过本帖
标题:写了一个打分的程序,定义 float a[10],从键盘上输入分值,要求分值在 0~1 ...
只看楼主 加入收藏
babyd
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2014-5-17
结帖率:0
收藏
已结贴  问题点数:20 回复次数:8 
写了一个打分的程序,定义 float a[10],从键盘上输入分值,要求分值在 0~10 分之间。但是如果输入的是数字之外的字符,系统就会崩掉,这个该怎么处理?
写了一个打分的程序,定义float a[10],从键盘上输入分值,要求分值在0~10分之间。但是如果输入的是数字之外的字符,系统就会崩掉,这个该怎么处理????求帮助~~~~
搜索更多相关主题的帖子: 键盘 
2014-06-10 23:54
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9008
专家分:53957
注 册:2011-1-18
收藏
得分:5 
但是如果输入的是数字之外的字符,系统就会崩掉,这个该怎么处理?
------ 你是想实现“如果输入的是数字之外的字符,系统就会崩掉”这个功能?
还是想解决掉“如果输入的是数字之外的字符,系统就会崩掉”这个bug?
如果是后者,那说明你的代码有问题。既然是代码的问题,你不贴代码,神仙也猜不出来。
2014-06-11 08:19
律吕调阳
Rank: 2
等 级:论坛游民
威 望:2
帖 子:16
专家分:93
注 册:2014-6-9
收藏
得分:5 
scanf("%*c%*[^\n]");
2014-06-11 09:33
babyd
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2014-5-17
收藏
得分:0 
回复 2 楼 rjsp
我是想解决这个Bug,这是循环打分的代码,有判断的部分,我想知道该怎么改才能解决这问题
float a[10];
for (int i = 0; i < 10; i++)
{
 cout << "第" << i + 1 << "项:";
 cin >> a[i];
 for (; a[i] < 0 || a[i]>10;){
 cout << "不符合打分要求,请重新打分:";
 cin >> a[i];
  }
}
2014-06-11 15:05
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:5 
for(;a[i]<0||a[i]>10;)改成while(a[i]<0||a[i]>10)看能不能解决
2014-06-11 15:15
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:0 
如果不能解决,试一下for(;a[i]<0||a[i]>10;)改成while((float)a[i]<0||(float)a[i]>10)看它招不招。
2014-06-11 15:37
i80286
Rank: 6Rank: 6
等 级:侠之大者
威 望:5
帖 子:99
专家分:428
注 册:2013-9-30
收藏
得分:5 
for (; a[i] < 0 || a[i]>10 || !cin;)
{
  cin.clear();
    cin.sync();
  cout << "不符合打分要求,请重新打分:";
  cin >> a[i];
}
2014-06-11 15:50
babyd
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2014-5-17
收藏
得分:0 
回复 6 楼 yangfrancis
不行啊,解决不了,它会一直输出cout的那句话
2014-06-11 17:04
律吕调阳
Rank: 2
等 级:论坛游民
威 望:2
帖 子:16
专家分:93
注 册:2014-6-9
收藏
得分:0 
#include <iostream>
using namespace std;

int main()
{
    int i = 0;
    float a[3];
    while (1)
    {
        if (cin >> a[i])
        {
            if (a[i] >= 0.0&&a[i] <= 10.0)
                i++;
            if (i>=3)
                break;
            continue;
        }
        
        cin.clear();
        cin.sync();
        continue;
    }

    for (int i = 0; i<3; i++)
        cout << a[i] << endl;
    system("pause");
    return 0;
}
试试看行不行
2014-06-11 19:09
快速回复:写了一个打分的程序,定义 float a[10],从键盘上输入分值,要求分值在 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012736 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved