14 2维数组练习
Posted abel2020
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了14 2维数组练习相关的知识,希望对你有一定的参考价值。
/* 该程序练习二维数组 用户输入3组数,每组5个, (3行5列数组) 计算每组平均值 计算每行平均值 计算所有数的平均值 找出所有数的最大值 可以使用如下数组测试 a[3][5] = {{11,12,13,14,15}, {21,22,23,24,15}, {31,32,33,34,35}}; 想象,a有三个一维数组组成(竖着排的11,21,31),每个数组有5个数组组成。 *a 是一个地址,即 &a[0] 。a是指针的指针,指向第一行(也指向行中的第一个),a+1向下 移动一行 *(a+1) 代表第二行,即a [1] ,即 21,22,23,24,15 *((*a+1)+2) ==第二列第3个即23 感觉二维数组的指针太难了。。。 */ #include <stdio.h> #define ROW 3 #define COL 5 //声明函数 void prs(void); void av_row(double ar[][COL], int row); //计算每行平均值 void av_col(double ar[][COL], int row); //计算每列平均值 void av_all(double ar[][COL], int row); void find_big(double ar[][COL], int row); main() { double a[ROW][COL]; int r, c; ////-------------------输入部分: ---------------------------------- // 用户输入3组数,每组5个 printf("please input 15 numbers: "); for (r = 0; r < ROW; r++) for (c = 0; c < COL; c++) scanf_s("%lf", &a[r][c]); //// 测试数组: //double a[ROW][COL] = { // {11,12,13,14,15}, // {21,22,23,24,15}, // {31,32,33,34,35} //}; //// 测试输入 // { 11.1 1.2 1.23 -1.4 14.5 92.1 111.1 22.3 233.4 0.01 13.1 33.2 3.3 33.4 35.9 } //显示数组 printf("You array is : "); for (r = 0; r < ROW; r++) { for (c = 0; c < COL; c++) printf("%.2lf ", a[r][c]); printf(" "); } prs(); //调用计算 av_row(a, ROW); //计算每行平均值 av_col(a, ROW); //计算每列平均值 av_all(a, ROW);//计算总平均值 find_big(a, ROW); //找最大数 } // ---------------------- 下面计算 ---------------------- //// //计算每组平均值 //void avcol(double (*p)[COL],int row) void av_row(double ar[][COL], int row) { int r, c; double av; double sum = 0.0; for (r = 0; r < row; r++) { sum = 0.0; //不能少,每轮循环重置; for (c = 0; c < COL; c++) { sum += ar[r][c]; av = sum / COL; } printf("Row%d sum=%.0f, av= %.2f ", r + 1, sum, av); } prs(); } //计算每列平均值 void av_col(double ar[][COL], int row) { double sum = 0.0; double av; int c, r; for (c = 0; c < COL; c++) { double sum = 0.0; for (r = 0; r < row; r++) { sum += ar[r][c]; av = sum / row; } printf("col%d sum=%.0f, av= %.2f ", c + 1, sum, av); } prs(); }; //计算所有数的平均值 void av_all(double ar[][COL], int row) { double sum = 0.0; double av = 0; int c, r; for (c = 0; c < COL; c++) for (r = 0; r < row; r++) sum += ar[r][c]; av = sum / ROW / COL; printf(" ALL sum=%.0f, av= %.2f ", sum, av); prs(); } //找出所有数的最大值 void find_big(double ar[][COL], int row) { double big; int c, r; for (c = 0; c < COL; c++) { double sum = 0.0; for (r = 0; r < row; r++) { big = ar[0][0]; if (big < ar[r][c]) big = ar[r][c]; } } printf("The biggest num is %.2f ",big); return 0; } void prs(void) { printf(" ******************************* "); }
以上是关于14 2维数组练习的主要内容,如果未能解决你的问题,请参考以下文章
在一个无序整数数组中,找出连续增长片段最长的一段, 增长步长是1。Example: [3,2,4,5,6,1,9], 最长的是[4,5,6]