作者:123 | 来源:互联网 | 2024-11-26 12:01
题目描述
给定一系列数字字符串,要求计算所有有效数字的平均值,并对无效输入进行错误提示。
分析
解决该问题的关键在于如何正确地识别并处理输入的数据。主要步骤包括:读取输入,使用 sscanf 将字符串转换为浮点数,再用 sprintf 将浮点数格式化回字符串以检查其有效性。如果输入的数字超出范围(-1000 到 1000)或格式不正确,则应输出错误信息;否则,将其计入总和和计数器中,最后根据计数器的值输出相应的平均值或错误信息。
代码示例
#include
int main() {
int n;
scanf("%d", &n);
double sum = 0.0;
int count = 0;
char input[105], formatted[105];
while (n--) {
scanf("%s", input);
double value;
if (sscanf(input, "%lf", &value) == 1 && value >= -1000 && value <= 1000) {
sprintf(formatted, "%.2f", value);
if (strcmp(input, formatted) == 0) {
sum += value;
count++;
} else {
printf("ERROR: %s is not a legal number\n", input);
}
} else {
printf("ERROR: %s is not a legal number\n", input);
}
}
if (count == 0) {
printf("The average of 0 numbers is Undefined\n");
} else if (count == 1) {
printf("The average of 1 number is %.2f\n", sum);
} else {
printf("The average of %d numbers is %.2f\n", count, sum / count);
}
return 0;
}