【问题标题】:For loop not letting me change inputFor循环不允许我更改输入
【发布时间】:2015-01-21 17:38:43
【问题描述】:

这个程序的重点是让用户输入一定数量的学生的成绩,从 A、B、C、D 或 F 的成绩范围内输入到 50 岁。最后,程序是应该显示每个年级有多少学生。每当我测试以下代码时,我为 for 循环输入的任何内容每次都会重复,这样如果我输入它来执行 3 年级的学生,我为学生 1 输入的任何字母对于每个学生来说都是相同的等级,所以如果一个学生得 A,他们都得 A。我还必须在这个程序中使用数组,因为它是针对大学的。抱歉,如果没有足够的信息,这是我第一次发帖。

#include<iostream>
#include<iomanip>
#include<string>
void gradeTotals();
using namespace std;
int x,z,a=0,b=0,c=0,d=0,f=0,i=0;
char grade[50];
int main()
{

cout<<"Please enter the number of students"<<endl;
cin>>x;
for (i=0;i<x;i++)
{
    int y;
    y=i+1;
    cout<<"Please enter a letter grade of A,B,C,D, or F for student "<<y<<endl;
    cout<<"All grades must be uppercase"<<endl;
    cin>>z;
    grade[i]=z;
    gradeTotals();
}
}
void gradeTotals()
{
    if (grade[i]=='A')
    {
        a++;
    }
    else if (grade[i]=='B')
    {
        b++;
    }
    else if (grade[i]=='C')
    {
        c++;
    }
    else if (grade[i]=='D')
    {
        d++;
    }
    else if (grade[i]=='F')
    {
        f++;
    }
cout<<a<<endl;
cout<<b<<endl;
cout<<c<<endl;
cout<<d<<endl;
cout<<f<<endl;
}

【问题讨论】:

  • 为什么要对存储字符的双精度数组进行分级?
  • 另外:grade[i]='F' 使用的是赋值,而不是比较。
  • 你忘了问问题。你讲了一个故事,展示了一些代码,然后就停下来了。该按钮被标记为“”是有原因的。
  • z 是一个整数。你期望它如何保持字母等级?
  • 对不起,我的问题是如何做到这一点,所以我的 for 循环让我可以为每个下标输入一个新值。

标签: c++ arrays for-loop


【解决方案1】:

您的 if 语句似乎没有达到您的预期。例如:

if (grade[i]='B')
{
    // This code will *always* execute
}

您应该使用双精度等于== 来比较一个值,而单等于= 来分配一个值。


(附加代码更改后编辑)

在 for 循环中,您尝试使用 cin 读取单个字符。但是,由于z 是一个整数,cin 正在寻找一个有效的整数,而该整数恰好不包括“A”或“B”等。

也许您应该尝试使用getline()get()

【讨论】:

  • 我改变了它,但最后的值都没有增加,这让我意识到我的代码可能有更多的混乱。但我的主要问题 for 循环仍然没有任何帮助。
【解决方案2】:

问题在于您的输入变量为int,采用char

当你执行cin &gt;&gt; z;时,用户输入的字符被&gt;&gt; operator识别为无效输入,因此不会提取该字符。

因此,z 没有得到任何值,字符留在流中,&gt;&gt; operator 继续无法提取字符,直到循环结束。

因此,您可以通过将输入变量设置为 char 来解决您的问题。

这里有一个link,可帮助您更好地了解如何避免将来出现此类问题。

感谢您的阅读。

【讨论】:

    猜你喜欢
    • 2013-10-21
    • 1970-01-01
    • 2012-05-14
    • 1970-01-01
    • 1970-01-01
    • 2021-03-22
    • 2016-07-27
    • 2023-03-12
    • 2018-07-09
    相关资源
    最近更新 更多