任何人都可以找出我的循环无法正常工作的原因

时间:2015-11-27 14:29:47

标签: c if-statement for-loop logic

这是我的问题:我需要一个循环通过一个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;
                }
                ..                

1 个答案:

答案 0 :(得分:4)

  1. 使用strcmp比较字符串。您当前的方法只是比较地址。

  2. break字面上打破循环。我想你想要continue,跳转到循环的顶部,执行循环头中指定的操作。
    实际,您根本不需要任何这些语句,因为如果if...else if...else结构的一个子句评估为true,则其他语句根本不再被考虑。

  3. percentage未初始化,所以

    percentage[i] = percentage[i] + bperecentage;
    

    是未定义的行为。

  4. strcat修改了第一个参数指向的缓冲区。由于这些(空)字符串文字在您的情况下并且字符串文字可能无法写入,因此它是未定义的行为。如果它们是可写的,那么无论如何都需要分配更多内存,因为typeof("") == char[1]

  5. bperecentage将始终初始化为0,因为1/12 == 0。使用1.0f / 12来触发隐式转换 顺便说一句,它的百分比。&#34;只有两个&#34; e&#34; s。

  6. 在你的第二个循环中有一个普通的语法错误。在调用函数时无法定义数据,我甚至不知道其余的含义。

  7. <强>化妆品

    1. 良好(并且在C ++中强制要求)习惯是从不将字符串文字称为char* s,而将const char* s称为{{1}} s,除非存储在自动变量中。修改字符串文字是未定义的行为。
    2. 毕竟,你的代码充满了错误。 阅读一本关于C的好书或教程!
      要注意:这些都是我迄今为止发现的错误。可能会有更多。