谁能弄清楚为什么我的循环不能正常工作
Can anyone figure out why my loop is not working properly
这是我的问题:我需要一个遍历 char 数组的循环,并计算有多少人获得了相同的成绩、每个成绩的星星数量(每个分数相同的学生一个)和百分比 (这个问题请无视):
void displayReport(char grade[][MAX_LETTER_SIZE]) {
for (i = 0; i < 12; i++) {
if (grade[i] == "A+") {
A++;
strcat(star[0], sstar);
percentage[i] = percentage[i] + bperecentage;
break;
}
..
比较字符串是用 strcmp
完成的。您当前的方法只是比较地址。
break
字面意思 中断 循环。我想你想要 continue
在这里,它跳转到循环的顶部,执行循环头中指定的操作。
实际上,您根本不需要这些语句中的任何一个,因为如果 if...else if...else
结构的一个子句评估为真,则根本不再考虑其他子句。
percentage
未初始化,所以
percentage[i] = percentage[i] + bperecentage;
是未定义的行为。
strcat
修改了第一个参数指向的缓冲区。由于在您的情况下这些是(空)字符串文字并且可能不会写入字符串文字,因此这是未定义的行为。如果它们是可写的,则无论如何您都需要分配更多内存,因为 typeof("") == char[1]
.
bperecentage
将始终初始化为 0
,因为 1/12 == 0
。使用 1.0f / 12
来触发隐式转换。
顺便说一句,它是 "percentage." 只有 两个 "e"s.
在你的第二个循环中有一个简单的语法错误。调用函数时不能定义数据,我什至不知道其余的是什么意思。
化妆品:
- 一个好的(并且在 C++ 中是强制性的)习惯是 从不 将字符串文字称为
char*
s,而是 const char*
s,除非存储在自动变量中。修改字符串文字是未定义的行为。
毕竟,你的代码错误百出。 读一本关于 C 的好书或教程!
当心:这些是我迄今为止 发现的所有错误。可能还有更多。
这是我的问题:我需要一个遍历 char 数组的循环,并计算有多少人获得了相同的成绩、每个成绩的星星数量(每个分数相同的学生一个)和百分比 (这个问题请无视):
void displayReport(char grade[][MAX_LETTER_SIZE]) {
for (i = 0; i < 12; i++) {
if (grade[i] == "A+") {
A++;
strcat(star[0], sstar);
percentage[i] = percentage[i] + bperecentage;
break;
}
..
比较字符串是用
strcmp
完成的。您当前的方法只是比较地址。break
字面意思 中断 循环。我想你想要continue
在这里,它跳转到循环的顶部,执行循环头中指定的操作。
实际上,您根本不需要这些语句中的任何一个,因为如果if...else if...else
结构的一个子句评估为真,则根本不再考虑其他子句。percentage
未初始化,所以percentage[i] = percentage[i] + bperecentage;
是未定义的行为。
strcat
修改了第一个参数指向的缓冲区。由于在您的情况下这些是(空)字符串文字并且可能不会写入字符串文字,因此这是未定义的行为。如果它们是可写的,则无论如何您都需要分配更多内存,因为typeof("") == char[1]
.bperecentage
将始终初始化为0
,因为1/12 == 0
。使用1.0f / 12
来触发隐式转换。
顺便说一句,它是 "percentage." 只有 两个 "e"s.在你的第二个循环中有一个简单的语法错误。调用函数时不能定义数据,我什至不知道其余的是什么意思。
化妆品:
- 一个好的(并且在 C++ 中是强制性的)习惯是 从不 将字符串文字称为
char*
s,而是const char*
s,除非存储在自动变量中。修改字符串文字是未定义的行为。
毕竟,你的代码错误百出。 读一本关于 C 的好书或教程!
当心:这些是我迄今为止 发现的所有错误。可能还有更多。