#include <stdio.h>
void chuShiHua(int hangShu,int lieShu,int arr[hangShu][lieShu]);
void bianLiShuZu(int hangShu,int lieShu,int arr[hangShu][lieShu]);
int max(int hangShu,int lieShu,int arr[hangShu][lieShu]);
int avg(int hangShu,int lieShu,int arr[hangShu][lieShu]);
int maxHang(int hangShu,int lieShu,int arr[hangShu][lieShu]);
double maxHangavg(int hangShu,int lieShu,int arr[hangShu][lieShu]);
int main(int argc, const char * argv[]) {
//让用户输入行数和列数
printf("请输入行数和列数空格分开");
int hangShu = 0 ,lieShu = 0;
scanf("%d%d",&hangShu,&lieShu);
//定义一个二维数组
int arr[hangShu][lieShu];
//初始化
chuShiHua(hangShu, lieShu, arr);
//遍历数组
// bianLiShuZu(hangShu, lieShu, arr);
//求最大值
printf("数组中最大值为%d\n",max(hangShu, lieShu, arr));
//求平均值
printf("二维数组的平均值为%d\n",avg(hangShu, lieShu, arr));
//求行数总和的最大值
printf("二维数组中一行总和最大为%d\n",maxHang(hangShu,lieShu,arr));
//行数总和最大值的平均值
printf("二维数组中一行总和最大的平均值为%.2lf\n",maxHangavg(hangShu,lieShu,arr));
return 0;
}
/**
* 求二维数组中 行最大值的平均值
*
* @param hangShu 行数
* @param lieShu 列数
* @param arr 二维数组
*
* @return 平均值
*/
double maxHangavg(int hangShu,int lieShu,int arr[hangShu][lieShu]){
return maxHang(hangShu, lieShu, arr)/lieShu*1.0;
}
/**
* 求二维数组中 行最大值 的那一行的最大值
*
* @param hangShu 行数
* @param lieShu 列数
* @param arr 二维数组
*
* @return 行数最大值
*/
int maxHang(int hangShu,int lieShu,int arr[hangShu][lieShu]){
int max = INT32_MIN;
for (int i = 0 ; i < hangShu; i++) {
int a = 0;
for (int j = 0 ; j < lieShu; j++) {
a+=arr[i][j];
}
if (a > max) {
max = a;
}
}
return max;
}
/**
* 数组的平均值
*
* @param hangShu 行数
* @param lieShu 列数
* @param arr 二维数组
*
* @return 平均值
*/
int avg(int hangShu,int lieShu,int arr[hangShu][lieShu]){
int sum = 0;
for (int i = 0 ; i < hangShu; i++) {
for (int j = 0 ; j < lieShu; j++) {
sum+=arr[i][j];
}
}
return sum/(hangShu*lieShu);
}
/**
* 找出数组中的最大值
*
* @param hangShu 行数
* @param lieShu 列数
* @param arr 二维数组
*
* @return 最大值
*/
int max(int hangShu,int lieShu,int arr[hangShu][lieShu]){
int a = INT32_MIN;
for (int i = 0 ; i < hangShu; i++) {
for (int j = 0 ; j < lieShu; j++) {
if (arr[i][j] > a) {
a = arr[i][j];
}
}
}
return a;
}
/**
* 让用户对数组进行初始化
*
* @param hangShu 行数
* @param lieShu 列数
* @param arr 二维数组
*/
void chuShiHua(int hangShu,int lieShu,int arr[hangShu][lieShu]){
for (int i = 0 ; i < hangShu; i++) {
printf("请输入第%d行的数据一共%d个,用空格分开",i+1,lieShu);
for (int j = 0 ; j < lieShu ; j++) {
scanf("%d",&arr[i][j]);
}
}
}
/**
* 遍历数组
*
* @param hangShu 行
* @param lieShu 列数
* @param arr 二维数组
*/
void bianLiShuZu(int hangShu,int lieShu,int arr[hangShu][lieShu]){
for (int i = 0 ; i < hangShu; i++) {
for (int j = 0 ; j < lieShu ; j++) {
printf("%d",arr[i][j]);
}
printf("\n");
}
}
|
|