c - 有人可以帮我处理我的 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 语句。
解决方案
在函数中声明的变量在该函数范围内是局部的,即使它们与在其他函数中声明的变量共享相同的标识符。Ave
ingetScore
和Ave
incalcScore
不是指同一块内存。
要在函数之间传递值,您可以使用函数参数和返回值,就像使用calcScore
.
应该注意的是,您不能从一个函数返回多个值,并且
return Ave, Div;
实际上将返回逗号分隔列表中的最后一个值。
要从函数“返回”多条数据,您可以使用指针作为函数参数,将值放置在内存位置(就像这样scanf
做一样)。
此外:
else(Ave<50);
printf("\t\t Your Final Grade is: F");
else
没有条件部分。这是一个 else 语句,它的主体是 statement (Ave<50)
,一个没有副作用的操作。该printf
调用与else
.
一个例子。请注意one
,two
, 和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();
}
推荐阅读
- python - super() 方法只初始化一些参数
- git - 将项目文件夹导入 gitbucket
- javascript - 如何在我自己的按钮中触发 mxGraph 放大和缩小功能?
- elasticsearch - 使用 Persistent Volume 在 Kubernetes 上部署 Elasticsearch
- php - 密码哈希返回密码不匹配
- angular - 如何在 Angular 4 中更改 Bootstrap 模态内容的背景颜色
- php - 除了我这里有什么之外,还有一种更简单的方法来编写 laravel 雄辩的模型吗?
- json - 如何在 GraphQL 中返回 json 字符串作为响应
- excel - 如何修复这个excel公式?
- php - 使用 PHP API 对 Google Drive 电子表格中的工作表进行排序