| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 565 人关注过本帖
标题:C++ 初学者关于 getline 的问题
只看楼主 加入收藏
urBABAinlaw
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-9-9
结帖率:0
收藏
已结贴  问题点数:20 回复次数:5 
C++ 初学者关于 getline 的问题
大家好,我的问题是这个程序的第一个for loop里面只能输入第一次的信息,第一次循环后就会自动跳过接下来输入流程直接到最后结果,实在不知道该怎么办。求救呀!!!!
#include <iostream>

using namespace std;

int main()
{
    const int size1 = 5, size2 = 4;
    char check;

    string student[size1];
    int grade[size1][size2];

    for(int c=0; c<=4; c++)
    {
        cout<< "Student" << c+1 << " name: ";
        getline(cin,student[c]);


        cout << "Grade: ";
        do
        {
            check = 'y';
            for(int d=0; d<=3; d++)
            {
                cin >> grade[c][d];
                if(grade[c][d]<0 || grade[c][d]>100)
                    check = 'n';
            }

            if(check == 'n')
            {
                cout << "Invalid grade. Enter again.\n";
                cout << "Grade: ";
            }
        }while(check == 'n');

    }

    int sum;
    double average;
    char letter;

    for (int c=0; c<=4; c++)
    {
        sum = 1;
        for(int d=0; d<=3; d++)
            sum += grade[c][d];
        average = sum/4.00;

        if(average>=90 && average <=100)
            letter = 'A';
        else if(average>=80 && average<90)
            letter = 'B';
        else if(average>=70 && average<80)
            letter = 'C';
        else if(average>=60 && average<70)
            letter = 'D';
        else if(average>=0 && average<60)
            letter = 'F';

        cout << "Student name: " << student[c]<<endl;
        cout << "Average grade: " << average<<endl;
        cout << "Letter grade: " << letter<<endl;
        cout << "----------------------------";
        cout << endl;
    }
}
搜索更多相关主题的帖子: include 信息 
2014-09-09 08:41
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:10 
输入成绩并回车后,你的代码取走了成绩,但『回车』还在。
于是你的 getline(cin,student[c]); 成功,但内容为空。
2014-09-09 08:56
urBABAinlaw
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-9-9
收藏
得分:0 
我发现问题是出现在输入分数时的cin了, 如果我用空格像 87 98 67 56 再回车就会出错, 但是如果每输入一个分数就回车就会正常运行。请问做什么可以让我像87 98 67 56输入分数?
2014-09-09 08:58
urBABAinlaw
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-9-9
收藏
得分:0 
回复 2 楼 rjsp
那我应该做什么呢? 是用cin.ignore()吗?
2014-09-09 08:59
urBABAinlaw
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-9-9
收藏
得分:0 
我已经解决这个问题了。 谢谢版主
2014-09-09 09:12
stop1204
Rank: 9Rank: 9Rank: 9
来 自:福建省
等 级:贵宾
威 望:22
帖 子:295
专家分:1151
注 册:2013-9-8
收藏
得分:10 
其实 你输入 87 98 67 56   跟一个个输入是没区别的
cin 会跳过空格与换行符
cin 会把87抽取,然后进行下一句代码.等到第二个cin的时候会把98抽取.

hl928452957@gmail点com

2014-09-10 07:59
快速回复:C++ 初学者关于 getline 的问题
数据加载中...
 
   



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

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