【问题标题】:How to check array inputs are positive if in for loop如果在for循环中,如何检查数组输入是否为正
【发布时间】: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;

标签: c arrays for-loop input


【解决方案1】:

scanf 返回成功填充的参数列表的项目数。我想你的意思是测试if (test_scores[i] &lt; 0)

【讨论】:

  • 所以,我已将我的代码更改为 if(test_scores[i] &lt; 0) 并将 scanf("%d", &amp;test_scores[i]); 保留在其上方。它第一次工作,但在尝试再次做负数后它不使用验证码
  • 我很抱歉。这是由于i = 0 而应该是i = -1 就像乔纳森说的那样。谢谢
猜你喜欢
  • 1970-01-01
  • 2020-02-03
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 2018-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多