#c语言# 请教有关于 “字符串中的字符无效” 的问题

img

这里我是想用字符所在的行数放到计算中,但是出现了这个问题,编译器就看不到这些字符了,就不能返回相应的行数,这个问题我苦恼了很久,网上说在监视名字那里后面加上 s8 也无济于事。 了解应该怎么办的人请不吝赐教呀!

下面是程序:

#include <stdio.h>
#include <ctype.h>

float compute_GPA(char[], int);

int main(void)
{
    char ch;
    char grades[10] = { '\0' };

    printf("\n\t Input your 10 grades: ");

    int index = 0;
    while ((ch = getchar()) != '\n') {
        if (ch == ' ') {
            continue;
        }
        grades[index++] = toupper(ch);
    }

    printf("\n\t GPA: %.2f ", compute_GPA(grades, 10));

    printf("\n\n");
    return 0;
}

float compute_GPA(char grade[], int length)
{
    int value = 0;

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

    for (int i = 0; i < length; i++) {
        for (int j = 0; j < 5; j++) {
            if (grade[i] == grade_value[j]) {
                value += j;
            }
        }
    }

    return ((float)value / (float)length);
}

第32行:if (grade[i] == grade_value[j][0])
grade是一维数组,grade_value是二维数组

觉得有用的话采纳一下哈