当前位置: 首页 > 知识库问答 >
问题:

我想我的C课本给我的开关语句有一个小错误

督辉
2023-03-14
#include <iostream>

using namespace std;

int main()
{

    int grade;
    int aCount;
    int bCount;
    int cCount;
    int dCount;
    int fCount;

    cout << "Enter the letter grades." << endl
        << "Enter the EOF character to end input." << endl;

    while ((grade = cin.get()) != EOF)
    {

        switch (grade)
        {
        case 'A':
        case 'a':
            aCount++;
            break;

        case 'B':
        case 'b':
            bCount++;
            break;

        case 'C':
        case 'c':
            cCount++;
            break;

        case 'D':
        case 'd':
            dCount++;
            break;

        case 'F':
        case 'f':
            fCount++;
            break;

        case '\n':
        case '\t':
        case ' ':
            break;

        default:
            cout << "Incorrect letter grade entered." << "Enter a new grade." << endl;
            break;
        }
    }

    cout << "\n\nNumber of students who received each letter grade:"
        << "\nA: " << aCount
        << "\nB: " << bCount
        << "\nC: " << cCount << "\nD: " << dCount << "\nF: " << fCount << endl;

    system("PAUSE");
    return 0;
}

这是我的C教科书提供的一个精确代码。当我通过复制这些代码然后编译来练习这些switch语句代码时,我的Visual Studio 2010 express keep给了我一个错误,说“正在使用未分配的帐户…”这同样适用于fCount。这个程序应该从键盘上读取从A到F的任何字母,然后增加识别出的任何字母。我认为应该有

共有2个答案

丌官浩旷
2023-03-14

建议您初始化正在使用它的变量。某些编译器甚至不会在编译之前给您发出警告,而是为您的未初始化变量分配一些“垃圾值”。

在这个场景中,将变量初始化为0就足够了(就像其他用户提到的那样)。

    int grade=0;
    int aCount=0;
    int bCount=0;
    int cCount=0;
    int dCount=0;
    int fCount=0;

顺便说一下,“cin.get()”可以像cin一样工作

这取决于您想如何使用它。cin.get可用于提取:

  • 单字符
  • 多个字符,并将其存储为c字符串(char数组)或
  • 将它们存储到流缓冲对象中

从输入流。

您可能会意识到cin。get无法接受数字,因此如果您接受字符或字符串的输入,则可以。但在将来,如果您希望它接受数字,只需使用cin即可

使用cin的示例。得到()

char cStr[50];
cin.get(cStr,5); //It will take n-1 characters
cout << cStr;

//Input: abcde
//Output: abcd

谭铭
2023-03-14

当您声明变量时,请尝试将其值设置为0,如下所示:

int grade = 0;
int aCount = 0;
int bCount = 0;
int cCount = 0;
int dCount = 0;
int fCount = 0;

这将确保在使用变量之前,实际上正在为变量赋值。

然后试着运行它,我打赌它会工作!

 类似资料:
  • 我仍然得到我的头周围laravel雄辩。我想雄辩地写下以下的问题 我雄辩地尝试了以下方法: 但我得到了这个错误: SQLSTATE[HY093]:无效的参数号(SQL: SELECT*from tableA WHERE id=5 ANDgrade_id=?) 我仔细阅读了拉威尔的文件,但没有找到任何能完全回答我问题的东西。请帮忙

  • 我想与Firebase连接,但我有一个错误:"无法解析Android应用程序模块gradleconfig.resolvegradle构建问题和/或重新同步."和我检查我的gradle.

  • 我想为我画的画举办一个活动。 目前,我用wxPython绘制矩形, 我想连接按钮一样的链接。 有可能吗? 如果可能的话,请给我建议。 下面是我的代码。

  • 问题是,我正在测试一个方法,但它给我一个404错误,我已经把我的承载令牌在我的请求中,这是合乎逻辑的,因为我需要把头“授权”。当我在《邮差》中提出这个要求时,它给了我很好的结果。我有什么不及格的? monedaServiceTest.java: 输出控制台:

  • 我刚刚开始学习,我的输出似乎接受第二个if语句为真,即使我的输入大于200。我已经在这里呆了几天了,如果这里有人愿意检查我的代码,那对我来说是很好的。 这是我的代码:

  • 它给出了一个错误: 无效语法:打印srt([5,2,4,1,3])