用C语言编写程序, 从键盘上输入若干正整数,输出平均值,当输入0或负数是结束输入
时间: 2023-02-22 08:33:27 浏览: 212
下面是一份示例代码:
```
#include <stdio.h>
int main() {
int num, sum = 0, count = 0;
float avg;
printf("请输入正整数:\n");
while (1) {
scanf("%d", &num);
if (num <= 0) {
break;
}
sum += num;
count++;
}
avg = (float) sum / count;
printf("平均值为:%.2f\n", avg);
return 0;
}
```
简单解释一下:
- 先定义三个变量:num(存储输入的数字),sum(存储数字的总和),count(存储数字的数量)。
- 使用 `while` 循环读取输入的数字。
- 如果输入的数字小于等于0,退出循环。
- 计算平均值 `avg = (float) sum / count`。
- 输出平均值。
相关问题
用c语言写一个程序,要求如下:从键盘上输入若干个正整数(如果遇到负数重新输入),如果遇到0停止输入,然后输出: (1)输入的所有正整数的平均值; (2)高于平均值的正整数的个数。
以下是用 C 语言编写的程序,实现上述要求:
```c
#include <stdio.h>
int main() {
int num, sum = 0, count = 0;
float avg;
printf("请输入正整数,遇到负数重新输入,遇到 0 停止输入:\n");
while (1) {
scanf("%d", &num);
if (num < 0) {
printf("输入了负数,请重新输入:\n");
continue;
}
if (num == 0) {
break;
}
sum += num;
count++;
}
if (count == 0) {
printf("没有输入正整数!\n");
return 0;
}
avg = (float) sum / count;
printf("输入的所有正整数的平均值为:%.2f\n", avg);
int above_avg_count = 0;
printf("高于平均值 %.2f 的正整数有:", avg);
while (1) {
scanf("%d", &num);
if (num < 0) {
printf("输入了负数,请重新输入:\n");
continue;
}
if (num == 0) {
break;
}
if (num > avg) {
above_avg_count++;
}
}
printf("%d 个\n", above_avg_count);
return 0;
}
```
注意,在第一次输入后,程序会一直等待用户输入,直到用户输入 0 才会停止输入。在第二次输入时,同样需要遵守第一次输入的规则:输入正整数,遇到负数重新输入,遇到 0 停止输入。如果输入的正整数个数为 0,则直接输出提示信息,并退出程序。
用c语言编写程序,由键盘输入20个整数,统计其中的正整数、负整数、0分别有多少个?并分别计算其中的正整数、负整数之和以及各自的平均值(结果为浮点型,输出时保留2位小数)。
你可以使用C语言的数组和循环结构来完成这个任务。首先从键盘读取20个整数,然后通过条件判断来区分它们是正数、负数还是零。以下是详细的步骤:
```c
#include <stdio.h>
#include <math.h> // 引入math库以便使用浮点数的round函数
int main() {
int numbers[20];
int count_pos = 0, count_neg = 0, count_zero = 0;
float sum_pos = 0.0, sum_neg = 0.0;
// 读取20个整数
for (int i = 0; i < 20; i++) {
scanf("%d", &numbers[i]);
if (numbers[i] > 0) { // 正整数
count_pos++;
sum_pos += numbers[i];
} else if (numbers[i] < 0) { // 负整数
count_neg++;
sum_neg += numbers[i];
} else { // 零
count_zero++;
}
}
// 计算平均值并四舍五入到两位小数
float avg_pos = round(sum_pos / count_pos * 100) / 100.0;
float avg_neg = round(sum_neg / count_neg * 100) / 100.0;
printf("正整数个数:%d,和:%f,平均值:%.2f\n", count_pos, sum_pos, avg_pos);
printf("负整数个数:%d,和:%f,平均值:%.2f\n", count_neg, sum_neg, avg_neg);
return 0;
}
```
注意,由于浮点数的精度问题,我们使用`round`函数来四舍五入平均值到两位小数。
阅读全文
相关推荐














