【发布时间】:2020-03-30 01:12:59
【问题描述】:
我正在尝试使用此代码来确保如果输入负值,它将被识别为无效输入并要求用户重新输入分数。
我不确定为什么没有找到它,但我相信这可能与我的数组索引有关。这是我的代码:
#include <stdio.h>
#include <string.h>
double quiz_1(){
int test_scores[3];
double result;
printf("Please Enter The Students Test Score (e.g. 85 65 75): ");
for (int i = 0; i < (sizeof test_scores / sizeof test_scores[0]); i++) {
if(scanf("%d", &test_scores[i]) < 0){
printf("\nInvalid Input\nPlease Enter The Students Test Score (e.g. 85 65 75): ");
i = 0;
}
}
result = (test_scores[0] * 0.2) + (test_scores[1] * 0.3) + (test_scores[2] * 0.5);
printf("\nThe Student's Final Grade is %.2f", result);
return 0;
}
int main() {
quiz_1();
return 0;
}
【问题讨论】:
-
成功时,scanf 函数返回成功填充的项目数(在您的情况下可能为 1)。它不会返回它填充的第一个项目的整数值。
-
请注意,将
if中的i重置为0意味着循环后递增到i,因此下一个循环以i == 1开始。您可能需要使用i = -1;。