从键盘输入9个不同的整数,存入一个3行3列的二维数组中,找出每一列最大元素,并输出其行,列下标

急,急,急,期待高手,需要用c语言的,谢谢~
2024-11-22 10:03:50
推荐回答(2个)
回答1:

#include
void main(){
int a[3][3],i,j,max,hang[3],lie[3];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
for(i=0;i<3;i++){
for(j=0;j<3;j++)
printf("%d,",a[i][j]);
printf("\n");
}
for(i=0;i<3;i++){
max=a[0][i];
hang[i]=0;
lie[i]=i;
for(j=0;j<3;j++)
if(max max=a[j][i];
hang[i]=j;
lie[i]=i;
}
}
for(i=0;i<3;i++)
printf("第%d列最大的数是第%d行,第%d列\n",i+1,hang[i]+1,lie[i]+1);
}

回答2:

#include

int a[3][3];

void input(){
int i=1, b[9], c, j, flag,k;
while(i<10){
printf("请输入第%d个数: ", i);
scanf("%d", &c);
flag = 0;
for(j = 0; j if(b[j]==c) { /*保证输入的数都是不同的*/
i--;
flag=1;
printf("这个数已经输过啦!\n");
break;}
}
if(!flag) b[i-1] = c;
i++;
}

for(k=0;ke<3;k++){
for(j=0;j<3;j++){
a[k][j] = b[3*k+j];
printf("%d\t",a[k][j]);
}
printf("\n");
}

}

int max(int x, int y, int z){
int t = x>y?x:y;
return t>z?t:z;
}

int maxValue(int d[3][3], int k, int *m, int *n){/*求第k列的最大值和行列号*/
int s;
for(s=0;s<3;s++){
if(d[s][k]==max(d[0][k],d[1][k],d[2][k])){
*m = s; *n =k; return d[s][k];
}
}
}

int main(){
input();
int i, m, n;
for(i=0;i<3;i++)
printf("第%d列的最大值是%d,行下标是%d,列下标是%d\n",i+1,maxValue(a,i,&m,&n),m,n);
return 0;
}