欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C语言:编写函数,计算二维数组中正数的平均值和负数的个数,通过两个全局变量返回

程序员文章站 2022-03-10 12:09:48
...

题目来源:大工慕课 链接
作者:Caleb Sung

题目要求

编写函数,计算二维数组中正数的平均值和负数的个数,通过两个全局变量返回
a.主函数中定义一个3行4列的二维数组,数组元素类型不限,在程序中对数组元素进行赋值
b.主函数中输出该二维数组(显示为3行4列)、正数的平均值以及负数的个数

提示

根据题意我们要随机生成12个数字赋值给a[3][4], 不过采用srand(time(NULL))生成随机种子后再使用rand()来生成随机数只能生成正的随机数。
对于这个问题我们可以利用这样的方法解决:

a[i][j] = (rand()%100+0) - 50;

可以理解为生成-50到50之间(含)的整数。

参考代码

为防止计算平均数时结果带有小数,应当将average定义为float等类型。

#include<stdio.h>

int count=0;
float average=0;

void summary(int a[3][4]){
    int sum=0, i, j;
    for(i=0; i<3; i++)
        for(j=0; j<4; j++){
            if(a[i][j] > 0)
                sum += a[i][j];
            else
                count++;
        }
    average = sum/12;
}

void main(){
    int a[3][4], i, j;
    srand(time(NULL));
    for(i=0; i<3; i++)
        for(j=0; j<4; j++)
            a[i][j] = (rand()%100+0) - 50;
    printf("随机生成的数组为:\n");
    for(i=0; i<3; i++)
        for(j=0; j<4; j++){
            printf("%d\t", a[i][j]);
            if(j == 3){
                printf("\n");
        }
    }
    summary(a);
    printf("\n数组中全部正数的平均值为:%.2f\n数组中全部负数的数量为:%d", average, count);
}