c语言编程,包括二维数组的输入,最大最小值,转置和对角线求和

有急用,谢谢了... 有急用,谢谢了 展开
 我来答
金色潜鸟
2018-05-27 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5692万
展开全部
(1) 输入2维数组的行数,列数,动态分配数组。或者你声明一个足够大的数组,不做动态分配
(2)输入 数据,按一行一行的顺序。
(3)假定 最大最小的初值 等于 a[0][0], 然后遍历数组,谁大于max 就变更为max新值,谁小于min 就变更为min新值,
(4)如果 NR==NC, 是方阵,可以用 a[j][i]=a[i][j]; 的方法转置。否则要开一个 NC*NR的矩阵做转置。
(5)求主副对角线之和,若 n 为奇数,求总和时,注意要扣除 重复点(交叉点)元素值。
#include <stdio.h>

main(){
int **a; // a[NR][NC] -- *a[NR] -- a[j][i]
int i,j,NR,NC,n;
int max,min,sum=0,t;
printf("input array N_row N_col:\n");
scanf("%d %d",&NR,&NC);
a = (int **) malloc(sizeof(int *) * NR);
for (j=0;j<NR;j++) a[j] = (int *) malloc(sizeof(int) * NC);
printf("================\n");
printf("input %d * %d array data:\n",NR,NC);
for (j=0;j<NR;j++) for (i=0;i<NC;i++) scanf("%d",&a[j][i]);
printf("================\n");
max=min=a[0][0];
for (j=0;j<NR;j++) for (i=0;i<NC;i++){
if (a[j][i]>max) max=a[j][i];
if (a[j][i]<min) min=a[j][i];
}
printf("max=%d; min=%d\n",max,min);
printf("================\n");
printf("befre:\n");
for (j=0;j<NR;j++) {
for (i=0;i<NC;i++) printf("%d ",a[j][i]); printf("\n");
}
printf("after:\n");
for (i=0;i<NC;i++){
for (j=0;j<NR;j++) printf("%d ",a[j][i]); printf("\n");
}
if (NR==NC){
n = NR;
printf("================\n");
for (j=0;j<n;j++)
for (i=0;i<j;i++){t=a[j][i];a[j][i]=a[i][j];a[i][j]=t;};
printf("after:\n");
for (j=0;j<n;j++) {
for (i=0;i<n;i++) printf("%d ",a[j][i]); printf("\n");
}
printf("================\n");
sum=0;
for (j=0;j<n;j++)for (i=0;i<n;i++) if (i==j) sum=sum+a[j][i];
for (j=0;j<n;j++)for (i=0;i<n;i++) if (i==n-j-1) sum=sum+a[j][i];
if (n%2==1)sum=sum-a[n/2][n/2];
printf("2 dia sum=%d\n",sum);
}
return 0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式