Switch语句中的浮点数据类型

Switch语句中的浮点数据类型,c,visual-studio,function,switch-statement,C,Visual Studio,Function,Switch Statement,我正在为一个更大的程序创建一个函数,该函数将获取一个字母等级,该字母等级被输入并存储在程序其他地方的数组中,然后为该字母等级分配一个等级点(即a=4.0,B=3.0等),稍后将在另一个函数中使用,根据存储在另一个数组中的课程时数计算总GPA 我之所以选择使用switch语句,是因为我从以前的编程中熟悉它们,但如果可能的话,我愿意使用更好的方法来完成这项任务。我得到的当前错误是“switch语句不完整” 必须使用字符或整数值。这里是开关(等级[0])或类似的东西 float GradePoints

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

我之所以选择使用switch语句,是因为我从以前的编程中熟悉它们,但如果可能的话,我愿意使用更好的方法来完成这项任务。我得到的当前错误是“switch语句不完整”


必须使用字符或整数值。这里是
开关(等级[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;
   }
浮动等级点(字符等级[])
{
浮点数=0.0;
int len=sizeof(grades)/sizeof(grades[0]);

对于(int i=0;i一次处理每个等级1。将函数原型更改为:

float GradePoints(char grades[])


并将switch语句更改为
switch(grade)
。然后在循环中为5个等级中的每个等级调用
GradePoints
函数。

这与浮点变量或浮点值类型无关,但与如何使用
grades[]
作为
开关中的表达式
。这应该会产生一个非常大的编译器错误。你读过吗?它说了什么?我还建议你花一些时间,学习如何创建一个。因此,由于我有5个不同的等级要评估,我可以使用一个变量(x)吗然后让它在整个过程中递增?@AndrewC.:是的,你可以在方法中循环,甚至在方法内部循环also@AndrewC.:检查答案…很可能这就是你想要的
float GradePoints(char grade)
{
 ...
 swicth(grade)
 {
    ...
 }
 return point;
}

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