问题及代码
创建一个5行4列的二维整型数组,通过初始化,为数组中的前两列的10个元素赋初值,然后:
通过键盘输入,使后两列的10个元素获得值;按行序优先输出数组元素;将所有元素值乘以3后保存在数组中;按列序优先输出(输出的第一行是数组中的第一列……,其实输出的就是“转置”);将数组“倒”着输出(即最后一行最后一列的最先输出,第0行第0列的最后输出);输出数组中的所有偶数;输出所有行列下标之和为3的倍数的元素值。/*烟台大学计算机学院 2016 作者: 马春澎 完成日期:2016年12月3日 */ #include <stdio.h> int main( ) { int i,j; //创建数组,为数组中的前两列的10个元素赋初值 int a[5][4]= {{0,1},{4,5},{8,9},{12,13},{16,17}}; //键盘输入后两列10个元素的值 printf("请输入10个整数:\n"); for(i=0; i<5; i++) for(j=2; j<4; j++) scanf("%d",&a[i][j]); //按行序优先输出 printf("数组中的值为:\n"); for(i=0; i<5; i++) { printf("第%d行:",i); for(j=0; j<4; j++) printf("%d\t",a[i][j]); printf("\n"); } //将所有元素值乘以3后保存在数组中 printf("现在将所有元素乘以3倍..."); for(i=0; i<5; i++) for(j=0; j<4; j++) a[i][j]=3*a[i][j]; printf("完成!\n"); //按行序优先输出 printf("行序优先输出:\n"); for(i=0; i<5; i++) { printf("第%d行:",i); for(j=0; j<4; j++) printf("%d\t",a[i][j]); printf("\n"); } //按列序优先输出(见题目描述) printf("列序优先输出:\n"); for(j=0; j<4; j++) { printf("第%d列:",j); for(i=0; i<5; i++) printf("%d\t",a[j][i]); printf("\n"); } //将数组“倒”着输出(见题目描述) printf("倒着输出:\n"); for(i=4; i>=0; i--) { printf("第%d行:",i); for(j=3; j>=0; j--) printf("%d\t",a[i][j]); printf("\n"); } //输出数组中的所有偶数 printf("数组中的偶数:\n"); for(i=0; i<5; i++) for(j=0; j<4; j++) if(a[i][j]%2==0) printf("a[%d][%d]=%d\n",i,j,a[i][j]); //输出所有行列下标之和为3的倍数的元素值 printf("行列下标之和为3的倍数的元素:\n"); for(i=0; i<5; i++) for(j=0; j<4; j++) if((i+j)%3==0) printf("a[%d][%d]=%d\n",i,j,a[i][j]); return 0; }
运算结果
知识点总结
二维数组的综合应用,考察二维数组中的各种变化
学习心得
要注意如何把各组数据之前的第i行输出,以及换行应该所在的位置
