输入一个3*4的数组,先找出每一行中的最大元素,再分别除该行中的所有元素,最后输出数组.

要求:定义和调用函数处理数组中的元素,在函数中使用指针,数组各一次.

先定义一个3*4的float型二维数组a,定义一个float型一维数组b,依次求出a每一行中的最大值存储到b对应位置中,最后输出a时依次除以改行最大值。

//参考代码 
#include<stdio.h>
int main(){
int i,j;
float a[3][4],b[3],max;
for(i=0;i<3;i++){
scanf("%f",&a[i][0]);
max = a[i][0];
for(j=1;j<4;j++)
{
scanf("%f",&a[i][j]);
if(max<a[i][j])
max = a[i][j];
}
b[i]=max;
}
for(i=0;i<3;i++){
for(j=0;j<4;j++)
printf("%f ",a[i][j]/b[i]);
printf("\n");
}

return 0;
}
 /*
1 2 3 4
5 6 7 8
9 10 11 12
0.250000 0.500000 0.750000 1.000000
0.625000 0.750000 0.875000 1.000000
0.750000 0.833333 0.916667 1.000000
 */
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-04-14
现在是正确的,编译通过后没看答案,没想到错误了。现在是正确的

#include <iostream>
using namespace std;
void test(double a[3][4])
{
int i,j;
double k;
double(*b)[4] ;
b=a;//随便赋值的,给个处置保证不出问题

for(i=0;i<3;i++)
{
k=a[i][0];
//通过for循环找到最大值
for(j=0;j<4;j++)
{
if(k<a[i][j])
{
k=a[i][j];//k记录最大值
}
}

//将最大值与第一列的元素除
for(j=0;j<4;j++)
*(*(b+i)+j)=a[i][j]/k;//k记录最大值

}
//输出数组,用以验证程序结果
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
cout<<*(*(b+i)+j)<<" ";
cout<<endl;
}
}

void main()
{
int i,j;
double a[3][4]={1,2,3,4,
5,6,7,8,9,
10,11,12};
//嫌每次输入麻烦,故选择上面的语句
/* for(i=0;i<3;i++)
{ for(j=0;j<4;j++)
cin>>a[i][j];
} */
for(i=0;i<3;++i)
{
for(j=0;j<4;++j)
cout<<a[i][j]<<" ";
cout<<endl;
}
cout<<endl;
test(a);
}

基本正确,VC6.0调试。单位管理的严,代码传不上去,手敲。要是缺个分号,括号什么的,自己补足本回答被网友采纳
相似回答