编写函数,实现将二维数组行、列下标之和为偶数的数组元素输出,并计算这些元素之和。在main函数中验证。要求:二维数组的行数、列数、数组元素均在main函数中由键盘输入。
4条回答 默认 最新
- 技术专家团-小桥流水 2022-03-01 16:46关注
有两种方法,一种是直接定义一个大数组,第二种方法是使用二级指针。
(1)使用大数组的方法:#include <stdio.h> #include <stdlib.h> //定义数组最大范围 #define MAX 100 int main() { int a[MAX][MAX],i,j,sum=0; int row,col; printf("请输入行数和列数:"); scanf("%d %d",&row,&col); printf("请输入%d*%d的二维数组:\n",row,col); for (i=0;i<row;i++) { for (j=0;j<col;j++) { scanf("%d",&a[i][j]); } } //输出元素 for (i=0;i<row;i++) { for (j=0;j<col;j++) { if((i+j)%2==0) { printf("%d ",a[i][j]); sum += a[i][j]; } } } //输出和 printf("\nsum=%d\n",sum); return 0; }
(2)使用二级指针的方式
#include <stdio.h> #include <stdlib.h> int main() { int** a; int i,j,sum=0; int row,col; printf("请输入行数和列数:"); scanf("%d %d",&row,&col); a = (int**)malloc(sizeof(int*)*row); printf("请输入%d*%d的二维数组:\n",row,col); for (i=0;i<row;i++) { a[i] = (int*)malloc(sizeof(int)*col); for (j=0;j<col;j++) { scanf("%d",&a[i][j]); } } //输出元素 for (i=0;i<row;i++) { for (j=0;j<col;j++) { if((i+j)%2==0) { printf("%d ",a[i][j]); sum += a[i][j]; } } } //输出和 printf("sum=%d\n",sum); //释放空间 for(i=0;i<row;i++) { free(a[i]); a[i]=0; } free(a); a=0; return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥20 用雷电模拟器安装百达屋apk一直闪退
- ¥15 算能科技20240506咨询(拒绝大模型回答)
- ¥15 自适应 AR 模型 参数估计Matlab程序
- ¥100 角动量包络面如何用MATLAB绘制
- ¥15 merge函数占用内存过大
- ¥15 Revit2020下载问题
- ¥15 使用EMD去噪处理RML2016数据集时候的原理
- ¥15 神经网络预测均方误差很小 但是图像上看着差别太大
- ¥15 单片机无法进入HAL_TIM_PWM_PulseFinishedCallback回调函数
- ¥15 Oracle中如何从clob类型截取特定字符串后面的字符