gpt4 book ai didi

c - 从 C 中的 if 语句返回一个字符串

转载 作者:行者123 更新时间:2023-11-30 20:47:55 26 4
gpt4 key购买 nike

我试图让函数通过 if 语句从数组返回正确的 char 值,但不断收到以下错误
从返回类型为“char”的函数返回“char *”,无需强制转换即可从指针生成整数

这是函数

    ...
char GradeFromPercentage(float x)
{
char y[5][1];
y[1] == "A";
y[2] == "B";
y[3] == "C";
y[4] == "D";
y[4] == "F";

if (x >= 90)
{
return y[0];
}
else if (x >= 70)
{
return y[1];
}
else if (x >= 50)
{
return y[3];
}
else if (x >= 30)
{
return y[4];
}
else if (x < 30)
{
return y[5];
}
return 0;
}
...

最佳答案

哇啊,这里到处都是错误!!

如果你想存储单个字符的数组,只需将其定义为:

char y[5];

现在,接下来有一些问题:

y[1] == "A";
y[2] == "B";
y[3] == "C";
y[4] == "D";
y[4] == "F";

除了明显使用比较运算符 (==) 而不是赋值 (=) 之外,您还尝试将字符串文字分配给一个 char 数组。您不能在变量定义之外执行此操作。但我断言您不想使用字符串。您还错过了 y[0] 并在 y[4] 上加倍。

由于我已经更改了您的数组定义,因此我们需要字 rune 字(单引号)。让我们解决所有这个问题:

y[0] == 'A';
y[1] == 'B';
y[2] == 'C';
y[3] == 'D';
y[4] == 'F';

但是打字太多了...为什么不在一行中定义它,既节省您的手指又使您的代码更紧凑(实际上更具可读性):

char y[5] = { 'A', 'B', 'C', 'D', 'F' };

下一个问题是您返回 'F' 分数的 y[5] ,这是不好的 - 这是在数组外部访问:记住索引是从零开始的,因此有效索引范围为 0 到 4(含)。您需要检查所有索引,因为其中一些索引是错误的。

<小时/>

我的最后一点是基于风格的事情,你可以接受也可以放弃。与其使用这个大的 if 语句,为什么不将所有的截止分数放入一个数组中......将其滚动到我到目前为止提到的所有其他内容中,您最终会得到这样的结果:

char GradeFromPercentage(float score)
{
const char grades[5] = { 'A', 'B', 'C', 'D', 'F' };
const float scores[5] = { 90.f, 70.f, 50.f, 30.f, -FLT_MAX };
for (int i = 0; i < 5; i++)
{
if (score >= scores[i]) return grades[i];
}

// It should not ordinarily be possible to reach here, but you should
// return something anyway. It's possible to get here if you supply
// a score of `NaN`. You may choose to return an invalid grade, or
// 'F' or whatever.
return '\0';
}

关于c - 从 C 中的 if 语句返回一个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53439666/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com