【问题标题】:Float Data Type in Switch StatementSwitch 语句中的浮点数据类型
【发布时间】:2018-04-04 11:23:15
【问题描述】:

我正在为一个更大的程序创建一个函数,该函数将采用输入并存储在程序其他地方的数组中的字母等级,然后为该字母等级分配一个成绩点(即 A = 4.0, B = 3.0 等),稍后将在另一个函数中使用它来根据存储在另一个数组中的课程时间计算总 GPA。

我选择使用 switch 语句是因为我在以前的编程中对它们很熟悉,但如果可能的话,我愿意接受更好的方法来完成这项任务。我得到的当前错误是“switch statement not integral”。

float GradePoints(char grades[])
{
float points = 0.0;

switch (grades[])
{
case 'A':
    points = 4.0;
    break;

case 'B':
    points = 3.0;
    break;

case 'C':
    points = 2.0;
    break;

case 'D':
    points = 1.0;
    break;

case 'F':
    points = 0.0;
    break;
}

return points;
}

【问题讨论】:

标签: c visual-studio function switch-statement


【解决方案1】:

您必须使用字符或整数值。这里switch(grades[0]) 或类似的东西。

float GradePoints(char grades[])
{
float points = 0.0;
int len = sizeof (grades) / sizeof (grades[0]); 
    for(int i=0;i<len;i++){

        switch (grades[i])
        {
        case 'A':
            points+= 4.0;
            break;

        case 'B':
            points+= 3.0;
            break;

        case 'C':
            points+= 2.0;
            break;

        case 'D':
            points+= 1.0;
            break;

        case 'F':
            points+= 0.0;
            break;
        }
    }
    return points;
   }

或者,您可以将函数的参数保留为 char,然后执行必要的操作:-

float GradePoints(char grade)
{
 ...
 swicth(grade)
 {
    ...
 }
 return point;
}

..
for(int i=0;i<len;i++)
   points+=GradePoints(grades[i]);

另外一件事并非针对任何问题。当您编写函数时,请尝试给出一个有意义的名称。它在以后的大项目中有所帮助。

例如,如果您使用我之前展示的函数,您可以将其命名为calculateTotalGrade(..)

如果你像第二个那样做,那么使用名称gradePoint() 而不是gradePoints()。这将使您的代码更具可读性。您可以浏览代码并了解正在执行的操作。

【讨论】:

  • 那么,由于我有 5 个不同的等级要评估,我可以使用一个变量 (x),然后让它在整个过程中递增吗?
  • @AndrewC.: 是的,你可以循环遍历方法,甚至可以在方法内部循环
  • @AndrewC.:检查答案......很可能这就是你想要的
【解决方案2】:

一次处理每个年级 1。更改您的函数原型:

float GradePoints(char grades[])

float GradePoints(char grade)

并将您的 switch 语句更改为 switch(grade)。然后为你的 5 个成绩循环调用你的 GradePoints 函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-17
    • 2013-10-27
    • 2012-05-26
    • 1970-01-01
    • 2019-04-12
    • 2019-04-01
    • 2014-11-01
    • 1970-01-01
    相关资源
    最近更新 更多