#include <stdio.h>
#include<iso646.h>
void start_arr(int M, int N, double arr[M][N]);
double average_arr( int num, double arr[]);
double all_average( int M, int N, double arr[M][N] );
double max( int M, int N, double arr[M][N] );
void print_arr( int M, int N, double arr[M][N]);
int main(void)
{
printf("Please input three rows numbers, one row contains five numbers: ");
double ar[3][5];
start_arr( 3, 5, ar);
printf("The average of the rows are :\n");
printf("%g\n", average_arr( 5, ar[0]));
printf("%g\n", average_arr( 5, ar[1]));
printf("%g\n", average_arr( 5, ar[2]));
printf("The all numbers' average is :");
printf("%g\n",all_average(3, 5, ar));
printf("The biggest number is :");
printf("%g", max( 3, 5, ar));
return 0;
}
void start_arr(int M, int N, double arr[M][N]){
int i,
j;
for ( i = 0; i < M; i++){
for ( j = 0 ; j < N; j++){
scanf("%lf", &arr[i][j]);
}
}
}
double average_arr( int num, double arr[]){
int i;
double average,
sum = 0;
for ( i = 0; i < num; i++){
sum += arr[i];
}
average = sum/num;
return average;
}
double all_average( int M, int N, double arr[M][N] ){
int i,
j;
double average,
sum = 0;
for ( i = 0; i < M; i++){
for ( j = 0; j < N; j++){
sum += arr[i][j];
}
}
average = sum/( M * N);
return average;
}
double max( int M, int N, double arr[M][N] ){
int i,
j;
double max;
for ( i = 0; i < M; i++){
for ( max = arr[0][0], j = 0; j < N; j++){
if ( max < arr[i][j]){
max = arr[i][j];
}
}
}
return max;
}
void print_arr( int M, int N, double arr[M][N]){
int i,
j;
for ( i = 0; i < M; i++){
for ( j = 0; j < N; j++){
printf("arr[%d][%d]: %g\n", i, j, arr[i][j]);
}
}
}
感受颇深,我今天写代码犯了不少错误,还有一些感悟,总结一下:
1.封装函数的时候返回值的类型一定要与所定义的变量的类型一致,否则会报错,或者程序进行自动类型转换,使得结果与预想的结果不符;
2.变长数组即数组的维度由变量决定,此时若变长数组作为函数形参时,决定变长数组维度的变量必须要定义在数组的前面;
3.定义一个二维数组也即定义一个指向数组的指针,当需要表示数组中的某个元素时,使用数组表示法更方便;
4.定义一维数组时中括号中的数组长度可省,若省了,则编译器会自动计算数组的大小(使用sizeof运算符可以算出数组大小),如果创建一个稍后再填充的数组,则必须在声明时指定大小。而定义二维乃至更高维时,最左边中括号的维度可以省,其他一律不能省;
5.声明二维数组时,如果写上第一维度的数,也是有效声明,但是编译器会忽略该值:
例:int sum ( int ar[3][4], int rows); //有效声明,但是3会被忽略
int sum ( int ar[][4], int rows); //标准形式