简体   繁体   English

我的c函数返回乱码

[英]My c function returns gibberish

So basically whenever I input a grade it gives me back a random symbol, even though I have defined grade. 因此,基本上,每当我输入成绩时,即使我定义了成绩,它也会给我一个随机符号。 Wouldn't it better if i used the value from return grade; 如果我使用return grade;的值会更好吗return grade; but I don't know how to retrieve that character into my main function :< 但我不知道如何将该字符检索到我的主要功能中:<

#include <stdio.h>

char GradeFromPercentage(float percentage);

int main() {
    float percentage1;
    printf("Enter the student's percentage:");
    scanf("%f", &percentage1);
    printf("Student's grade is %c \n", GradeFromPercentage(percentage1));
    return 0;
}

char GradeFromPercentage(float percentage) {
    char grade;
    if (percentage >= 90) {
        grade = "A";
    } else
    if (percentage >= 70) {
        grade = "B";
    } else
    if (percentage >= 50) {
        grade = "C";
    } else
    if (percentage >= 30) {
        grade = "D";
    } else {
        grade = "F";
    }
    return grade;
}

Change the function GradeFromPercentage , you were assigning char* instead of char 更改函数GradeFromPercentage ,您正在分配char*而不是char

char GradeFromPercentage(float percentage)
{

    char grade;
    if (percentage >= 90)
    {
        grade = 'A';
    }
    else if (percentage >= 70)
    {
        grade = 'B';
    }
    else if (percentage >= 50)
    {
        grade = 'C';
    }
    else if (percentage >= 30)
    {
        grade = 'D';
    }
    else
    {
        grade = 'F';
    }
    return grade;
}

You assign strings to a char variable in GradeFromPercentage() . 您可以在GradeFromPercentage()字符串分配给char变量。 You should use character constants with single quotes instead of character strings with double quotes. 您应该使用带单引号的字符常量,而不是带双引号的字符串。

Here is a corrected and simplified version: 这是一个经过纠正和简化的版本:

char GradeFromPercentage(float percentage) {
    if (percentage >= 90) {
        return 'A';
    }
    if (percentage >= 70) {
        return 'B';
    }
    if (percentage >= 50) {
        return 'C';
    }
    if (percentage >= 30) {
        return 'D';
    }
    return 'F';
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM