C语言------读取用户输入并存储在二维数组中,假设用户所输入的都是正确的值

#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); //标准形式

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值