用do while循环求平均值c语言
时间: 2024-10-24 18:04:51 浏览: 6
在C语言中,可以使用do-while循环来求解一组数的平均值,因为do-while循环保证至少会执行一次循环体,适合需要先读取数据再判断是否结束的情况。以下是一个简单的例子:
```c
#include <stdio.h>
int main() {
int num;
float sum = 0.0, avg;
do {
printf("请输入一个数字(输入-1结束): ");
scanf("%d", &num);
// 检查输入是否为-1,如果是则跳出循环
if (num == -1)
break;
// 累加数值到总和
sum += num;
} while (1); // 因为do-while总是至少执行一次,所以这里设置条件1
// 计算平均值并打印结果
avg = sum / (float) num_of_numbers; // 假设已经有一个变量num_of_numbers记录了输入的数字个数
printf("这组数的平均值是: %.2f\n", avg);
return 0;
}
```
相关问题
用C语言编程 输入若干正整数,0代表输入结束。将该组数据排序后去掉最大的两个数和最小的两个数后再求平均值,即掐头 去尾法求平均值。
以下是用C语言编写的程序,实现了输入一组正整数,排序后去掉最大和最小的两个数,然后求平均值的功能:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int nums[100]; // 用数组存储输入的正整数
int n = 0; // 记录输入的正整数个数
int sum = 0; // 记录去掉最大和最小的两个数后的和
int i;
// 循环读入正整数,直到输入0为止
do {
scanf("%d", &nums[n]);
n++;
} while (nums[n-1] != 0);
// 对输入的正整数进行排序(使用冒泡排序)
for (i = 0; i < n-1; i++) {
int j;
for (j = 0; j < n-1-i; j++) {
if (nums[j] > nums[j+1]) {
int temp = nums[j];
nums[j] = nums[j+1];
nums[j+1] = temp;
}
}
}
// 计算去掉最大和最小的两个数后的和
for (i = 2; i < n-2; i++) {
sum += nums[i];
}
// 计算平均值并输出
printf("平均值为:%.2f\n", (float)sum / (n-4));
return 0;
}
```
程序中用到了冒泡排序的算法,这里简单解释一下:首先从第一个元素开始,依次比较相邻两个元素的大小,如果前面的元素比后面的元素大,则交换它们的位置;这样一趟下来,最大的元素就被排到了最后面。然后再从第一个元素开始,重复上述步骤,但不包括已经排好的最后一个元素。这样重复n-1趟,就可以把所有元素按从小到大的顺序排好了。
1.某选秀节目有十个评委,选手的得分为十个评委评分后的平均分,试编程实现评分功能,即输入评委给出的10个分数,输出平均分。(分别用while、do while实现)用C语言并且带有程序分析
以下是使用 while 循环实现的程序:
```c
#include <stdio.h>
int main() {
int scores[10];
int i = 0;
float sum = 0;
while (i < 10) {
printf("请输入第 %d 个评委的分数:", i+1);
scanf("%d", &scores[i]);
sum += scores[i];
i++;
}
float average = sum / 10;
printf("选手的平均分数为:%.2f", average);
return 0;
}
```
程序分析:
1. 定义一个包含 10 个元素的整型数组 `scores`,用于存储每个评委的分数;
2. 定义一个变量 `i`,用于记录当前输入的评委分数的下标;
3. 定义一个变量 `sum`,用于记录所有评委分数的总和;
4. 使用 while 循环,当 `i < 10` 时,循环执行以下操作:
1. 提示用户输入第 `i+1` 个评委的分数;
2. 使用 `scanf` 函数读取用户输入的整数,并存储到 `scores[i]` 中;
3. 将 `scores[i]` 的值累加到 `sum` 中;
4. 将 `i` 的值加 1,以便下一次输入下一个评委的分数;
5. 计算平均分数,即将 `sum` 除以评委的数量 10,得到平均分数 `average`;
6. 使用 `printf` 函数输出平均分数。
以下是使用 do while 循环实现的程序:
```c
#include <stdio.h>
int main() {
int scores[10];
int i = 0;
float sum = 0;
do {
printf("请输入第 %d 个评委的分数:", i+1);
scanf("%d", &scores[i]);
sum += scores[i];
i++;
} while (i < 10);
float average = sum / 10;
printf("选手的平均分数为:%.2f", average);
return 0;
}
```
程序分析:
与使用 while 循环实现的程序类似,只是将 while 循环改为 do while 循环。这样做的好处是,可以先执行一次循环体中的语句,再判断循环条件是否满足。因此,在使用 do while 循环时,保证循环体至少被执行一次。
阅读全文