C语言:输入一系列正整数(大于零的整数),并以-1作为结束标志,求平均值。要求使用while循环
时间: 2024-10-23 21:09:18 浏览: 74
在C语言中,你可以通过一个`while`循环来实现这个功能。下面是一个示例代码片段,它会让用户输入一系列正整数,直到遇到`-1`作为结束标志,然后计算它们的平均值:
```c
#include <stdio.h>
int main() {
int num, sum = 0, count = 0;
float average;
printf("请输入正整数 (输入 -1 结束): ");
// 使用while循环接收输入
while (scanf("%d", &num) == 1 && num != -1) { // scanf用于获取输入
sum += num; // 累加数值
count++; // 计数器加一
}
// 检查是否有输入,避免除以0的情况
if (count > 0) {
average = (float)sum / count; // 计算平均值并转换为浮点数
printf("平均值是: %.2f\n", average); // 打印结果,保留两位小数
} else {
printf("没有输入正整数。\n");
}
return 0;
}
```
在这个程序中,用户每输入一个正整数,我们就将其添加到`sum`中并增加计数器`count`。当输入 `-1` 或者不是整数时,`scanf`函数将返回0,循环就会终止。
相关问题
c语言用【while】【不固定次数】求平均值 题目描述 输入一系列正整数(大于0的整数),并以-1作为结束标志,求平均值(要求保留2位小数) 输入 输入一系列整数 输出 平均值。如果输入仅有-1,则输出:NO
在C语言中,使用`while`循环来计算不固定次数的正整数平均值,可以按照以下步骤编写程序:
```c
#include <stdio.h>
#include <math.h>
int main() {
int num, sum = 0, count = 0;
double average;
printf("请输入一系列正整数(大于0的整数),输入 -1 结束:\n");
while (scanf("%d", &num) == 1 && num != -1) { // 当读取到非-1的整数时继续循环
sum += num; // 累加每个数
count++; // 数量计数器加一
}
if (count > 0) {
average = (double) sum / count; // 计算平均值,注意将sum转换成double类型
printf("平均值为: %.2f\n", average); // 保留两位小数输出结果
} else {
printf("NO\n"); // 输入仅有一个 -1 的情况
}
return 0;
}
```
在这个程序中,用户逐次输入整数,直到遇到 `-1` 为止。每次输入都会累加到总和 `sum` 中,并增加计数器 `count`。最后,如果输入了不止一个数字,会计算平均值并输出;否则只输出 "NO"。
用c语言编程以下问题:输入一批正整数,以'0'作为结束标志,统计数据个数、累计和,求平均值,找出最大值和最小值。
在C语言中,你可以使用`scanf`函数读取用户输入的正整数,直到遇到'0'为止。接下来,我们需要几个变量来存储数据的数量、总和、最大值和最小值。以下是一个简单的程序实现:
```c
#include <stdio.h>
#include <stdlib.h> // 需要包含此头文件以使用malloc
int main() {
int num, count = 0, sum = 0, max = INT_MIN, min = INT_MAX; // INT_MIN和INT_MAX是C标准库中的常量,代表整数类型的最小和最大值
int* numbers = NULL; // 初始化一个动态数组来存储数字
// 循环读入数字,直到遇到'0'
while (scanf("%d", &num) == 1 && num != 0) {
count++;
sum += num;
// 更新最大值和最小值
if (num > max) {
max = num;
} else if (num < min) {
min = num;
}
// 动态扩容数组,如果满了就再分配更大的内存
if (count == (numbers != NULL ? count * 2 : 1)) {
numbers = realloc(numbers, sizeof(int) * (count *= 2)); // realloc用于动态调整数组大小
}
numbers[count - 1] = num; // 将数值添加到数组中
}
// 结束后释放内存
free(numbers);
// 计算平均值
double average = (double)sum / count;
printf("Count: %d\n", count);
printf("Sum: %d\n", sum);
printf("Average: %.2f\n", average); // 输出保留两位小数
printf("Max: %d\n", max);
printf("Min: %d\n", min);
return 0;
}
```
注意:在这个程序中,我们使用了动态内存管理函数`malloc`和`realloc`来处理输入的数据。当数据不再需要时,记得使用`free`释放内存。
阅读全文