用c语言做一个程序:产生30个[-50,50]之间的随机整数,将它们输出(每行显示5个数),并求出其中正数、负数、0的个数,以及它们的平均值(平均值取2位小数)。
时间: 2023-12-14 17:38:15 浏览: 81
下面是用 C 语言编写的程序,实现了题目要求的所有功能:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int nums[30];
int positive_count = 0, negative_count = 0, zero_count = 0;
int i;
double positive_sum = 0, negative_sum = 0, zero_sum = 0;
srand(time(NULL)); // 使用当前时间作为随机数种子
// 生成随机数并统计个数和和值
for (i = 0; i < 30; i++) {
nums[i] = rand() % 101 - 50; // 产生[-50, 50]之间的整数
if (nums[i] > 0) {
positive_count++;
positive_sum += nums[i];
} else if (nums[i] < 0) {
negative_count++;
negative_sum += nums[i];
} else {
zero_count++;
zero_sum += nums[i];
}
}
// 输出随机数
printf("随机数:");
for (i = 0; i < 30; i++) {
printf("%5d", nums[i]);
if ((i + 1) % 5 == 0) {
printf("\n ");
}
}
printf("\n");
// 输出统计结果
printf("正数个数:%d 平均值:%.2f\n", positive_count, positive_count > 0 ? positive_sum / positive_count : 0);
printf("负数个数:%d 平均值:%.2f\n", negative_count, negative_count > 0 ? negative_sum / negative_count : 0);
printf("0的个数:%d 平均值:%.2f\n", zero_count, zero_count > 0 ? zero_sum / zero_count : 0);
return 0;
}
```
代码中使用了 `srand()` 函数和 `rand()` 函数来生成随机数,并使用了 `time(NULL)` 函数作为随机数种子,以保证每次运行程序时生成的随机数都不同。
程序首先定义了一个数组 `nums` 来存储生成的随机数,同时定义了三个变量 `positive_count`、`negative_count` 和 `zero_count` 分别用来统计正数、负数和 0 的个数,以及三个变量 `positive_sum`、`negative_sum` 和 `zero_sum` 分别用来存储正数、负数和 0 的和,便于后续计算平均值。
程序使用 `for` 循环来生成随机数,同时统计个数和和值。生成的随机数保存在数组 `nums` 中。
接着,程序使用 `for` 循环来输出随机数,每行显示 5 个数。
最后,程序使用 `printf()` 函数输出统计结果,包括正数、负数和 0 的个数以及它们的平均值。在计算平均值时需要注意判断分母是否为 0,以避免除以 0 的错误。
阅读全文