首页 > 解决方案 > 有人可以帮我处理我的 if else 语句吗

问题描述

这是我的主要功能

#include <stdio.h>

void getScore();
int calcScore(int a, int b, int c);
int calcGrade();

int main(){
    calcgrade();
    return 0;
}

我的第二个功能是获取用户的输入

void getScore()
{
     int Ave, score1, score2, score3;
     printf("\t\tENTER TEST SCORES <0-100>\n");
     printf("Enter test score 1:\t");
     scanf("%d", &score1);
     printf("Enter test score 2:\t");
     scanf("%d", &score2);
     printf("Enter test score 3:\t");
     scanf("%d", &score3);
     Ave = calcScore(score1, score2, score3);
}

我的第三个功能是计算分数

int calcScore(int a, int b, int c)
{
    int Ave, Div;
    Ave = a+b+c;
    Div = Ave / 3;
    return Ave, Div;
}

现在我的第四个功能和主要问题是我的 if else 语句

int calcGrade()
{
    int score1, score2, score3, Ave;
    getScore();
    if (Ave>=90)
        printf("\t\t Your Final Grade is: A");
    else if (Ave>=70 && score3>=90)
        printf("\t\t Your Final Grade is: A");
    else if (Ave>=70 && score3<=89)
        printf("\t\t Your Final Grade is: B");
    else if (Ave>=50 && score2>=70 && score3>=70)
        printf("\t\t Your Final Grade is: C");
    else if (Ave>50 && score2<=69 && score3<=69)
        printf("\t\t Your Final Grade is: D");
    else(Ave<50);
        printf("\t\t Your Final Grade is: F");
}

问题是,当我运行程序时,它不执行 if else 语句,而是继续打印 else 语句。

标签: c

解决方案


在函数中声明的变量在该函数范围内是局部的,即使它们与在其他函数中声明的变量共享相同的标识符。AveingetScoreAveincalcScore不是同一块内存。

要在函数之间传递值,您可以使用函数参数和返回值,就像使用calcScore.

应该注意的是,您不能从一个函数返回多个值,并且 return Ave, Div;实际上将返回逗号分隔列表中的最后一个值。

要从函数“返回”多条数据,您可以使用指针作为函数参数,将值放置在内存位置(就像这样scanf做一样)。

此外:

else(Ave<50);
    printf("\t\t Your Final Grade is: F");

else没有条件部分。这是一个 else 语句,它的主体是 statement (Ave<50),一个没有副作用的操作。该printf调用与else.


一个例子。请注意onetwo, 和three已经是getScores函数中的指针,因此可以直接传递给scanf.

#include <stdio.h>

void getScores(int *one, int *two, int *three) {
    printf("\t\tENTER TEST SCORES <0-100>\n");
    printf("Enter test score 1:\t");
    scanf("%d", one);
    printf("Enter test score 2:\t");
    scanf("%d", two);
    printf("Enter test score 3:\t");
    scanf("%d", three);
}

int calcAverage(int a, int b, int c) {
    return (a + b + c) / 3;
}

void calcGrade(void) {
    int score1, score2, score3, avg;

    getScores(&score1, &score2, &score3);
    avg = calcAverage(score1, score2, score3);

    if (avg >= 90)
        printf("\t\t Your Final Grade is: A\n");
    else if (avg >= 70 && score3 >= 90)
        printf("\t\t Your Final Grade is: A\n");
    else if (avg >= 70 && score3 <= 89)
        printf("\t\t Your Final Grade is: B\n");
    else if (avg >= 50 && score2 >= 70 && score3 >= 70)
        printf("\t\t Your Final Grade is: C\n");
    else if (avg > 50 && score2 <= 69 && score3 <= 69)
        printf("\t\t Your Final Grade is: D\n");
    else if (avg < 50)
        printf("\t\t Your Final Grade is: F\n");
}

int main(void) {
    calcGrade();
}

推荐阅读