产生30个1-50,s01之间的随机整数,将它们输出(每行显示5个数),并求出其中正数、负数、口的个数,以及它们的平均值(平均值取2位小数)。
时间: 2024-03-07 08:48:16 浏览: 45
1-23092622303S01.doc
可以使用循环和随机数函数来实现这个问题,具体实现如下:
```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() % 51 - 25; // 产生-25到25之间的随机整数
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;
}
```
在上面的代码中,我们首先使用`srand()`函数初始化随机数种子,然后使用`rand()`函数产生30个-25到25之间的随机整数,并统计正数、负数、零的个数以及数字总和。最后输出随机数,正数、负数、零的个数,以及平均值。注意在输出随机数时,我们使用`(i+1) % 5 == 0`来判断是否需要换行。
阅读全文