gpt4 book ai didi

c - 如果输入非整数,则程序无限循环,并且不接受复数数字输入

转载 作者:行者123 更新时间:2023-11-30 18:34:16 26 4
gpt4 key购买 nike

分配的任务是询问值的数量,然后最后输出最小值、最大值和平均值,此时我已经用完了错误修复

#include <stdlib.h>
#include <stdio.h>
#include <math.h>

int main()
{
int ErrorDetection = 1;
char valCounter;
int valnumber;
int Incrementer;
int StoredValue;
int MinimumValue = 100;
int MaximumValue = 0;
float Average;
int AddToStored;
int Sum = 0;

printf("MIN, MAX, and MEAN CALCULATOR\n\n");

while (ErrorDetection != 0)
{
printf("How many values are to be entered?\n");
scanf("%s", &valCounter);

if (valCounter > '0' && valCounter < '9') {
ErrorDetection = 0;
}
else {
ErrorDetection = 1;
printf("INPUT ERROR!\n");
}
valCounter = valCounter - 47;
}

for (Incrementer = 1; Incrementer < valCounter; Incrementer++)
{
ErrorDetection = 1;

while (ErrorDetection != 0) {
printf("Value %d: ", Incrementer);
scanf(" %d", &StoredValue);

if (StoredValue > 0 && StoredValue < 9) {
ErrorDetection = 0;
}
else {
ErrorDetection = 1;
printf("INPUT ERROR!\n");
continue;
}
}

if (StoredValue > MaximumValue) {
MaximumValue = StoredValue;
}
if (StoredValue <= MinimumValue) {
MinimumValue = StoredValue;
}
Sum = Sum + StoredValue;
}

valCounter = valCounter - 1;
Average = (float)Sum / (float)valCounter;

printf(
"Minimum value is %d, maximum value is %d, and average value is %g.\n",
MinimumValue, MaximumValue, Average
);
}

如果你输入一个 2 位数字,事情就会开始崩溃,但同时,如果我允许多个数字答案,我不知道如何进行错误检查,因为我使用 ASCII 转换来检查输入是否正确是否为数字。

最佳答案

您在这里有未定义的行为。

     char valCounter;

scanf("%s", &valCounter);

您已将 valCounter 声明为 char 类型,但尝试读取 string 类型。

因此将 scanf 更改为。

scanf("%c", &valCounter);
<小时/>

我建议您将 valCounter 声明为 int

int valCounter;
scanf("%d", &valCounter);

在这种情况下,您的 if 将变为。

if ((valCounter > 0) && (valCounter < 9)) 

你不需要

valCounter = valCounter - 47; //remove

此外,您的 for 循环应该从 0 而不是 1 开始

for(Incrementer = 1 ; Incrementer < valCounter; Incrementer++)

应该是

for(Incrementer = 0 ; Incrementer < valCounter; Incrementer++)

关于c - 如果输入非整数,则程序无限循环,并且不接受复数数字输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52651348/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com