产生30个[-50,50]之间的随机整数,将它们输出(每行显示5个数),并求出其中正数、负数、0的个数,以及它们的平均值(平均值取2位小数)。
时间: 2024-03-07 18:48:18 浏览: 139
和上一个问题类似,只需要将随机数的范围改为`[-50, 50]`即可,具体实现如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int nums[30]; // 存储随机数的数组
int i, pos = 0, neg = 0, zero = 0; // pos: 正数个数,neg: 负数个数,zero: 零的个数
float sum = 0.0, avg; // sum: 数字总和,avg: 平均值
srand(time(0)); // 初始化随机数种子
// 产生随机数并统计结果
for (i = 0; i < 30; i++) {
nums[i] = rand() % 101 - 50; // 产生-50到50之间的随机整数
if (nums[i] > 0)
pos++;
else if (nums[i] < 0)
neg++;
else
zero++;
sum += nums[i];
}
// 输出结果
printf("随机数如下:\n");
for (i = 0; i < 30; i++) {
printf("%3d ", nums[i]);
if ((i+1) % 5 == 0)
printf("\n");
}
printf("\n正数个数:%d,负数个数:%d,零的个数:%d\n", pos, neg, zero);
avg = sum / 30.0;
printf("平均值为:%.2f\n", avg);
return 0;
}
```
在上面的代码中,我们使用`rand() % 101 - 50`来产生-50到50之间的随机整数,并统计正数、负数、零的个数以及数字总和。最后输出随机数,正数、负数、零的个数,以及平均值。注意在输出随机数时,我们使用`(i+1) % 5 == 0`来判断是否需要换行。
阅读全文