这是我的问题:我需要一个循环通过一个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;
}
..
答案 0 :(得分:4)
使用strcmp
比较字符串。您当前的方法只是比较地址。
break
字面上打破循环。我想你想要continue
,跳转到循环的顶部,执行循环头中指定的操作。
实际,您根本不需要任何这些语句,因为如果if...else if...else
结构的一个子句评估为true,则其他语句根本不再被考虑。
percentage
未初始化,所以
percentage[i] = percentage[i] + bperecentage;
是未定义的行为。
strcat
修改了第一个参数指向的缓冲区。由于这些(空)字符串文字在您的情况下并且字符串文字可能无法写入,因此它是未定义的行为。如果它们是可写的,那么无论如何都需要分配更多内存,因为typeof("") == char[1]
。
bperecentage
将始终初始化为0
,因为1/12 == 0
。使用1.0f / 12
来触发隐式转换
顺便说一句,它的百分比。&#34;只有两个&#34; e&#34; s。
在你的第二个循环中有一个普通的语法错误。在调用函数时无法定义数据,我甚至不知道其余的含义。
<强>化妆品强>
char*
s,而将const char*
s称为{{1}} s,除非存储在自动变量中。修改字符串文字是未定义的行为。毕竟,你的代码充满了错误。 阅读一本关于C的好书或教程!
要注意:这些都是我迄今为止发现的错误。可能会有更多。