输入一个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调试。单位管理的严,代码传不上去,手敲。要是缺个分号,括号什么的,自己补足本回答被网友采纳

C语言有一个3*4的矩阵,用c语言编写程序找出其中值最大的元素,并输出最...
比如我有3个数,找出一个最大的。int a[2]={1,2,3,} \/\/数组a[0]=1,a[1]=2,a[2]=3 max=a[1] \/\/max=1 if (max<a[2]) max=a[2] 因为max 原来的值等于1,小于a[2],所以,现在要把大的数a[2]给max if(max...

从键盘键入一个3行4列数组,要求输出其中值最大的那个元素值,以及所在的...
int lie = 0;\/\/列 int Max;\/\/最大值 int number[3][4];\/\/数组变量 printf("请输入一个3行4列的数组:");\/\/文字提示 for (i = 0; i < 3; i++)\/\/行遍历 { for (j = 0; j < 4; j++)\/\/列遍历 scanf("%d", &number[i][j]);\/\/输入 } Max = number[0][0];\/\/...

编写一个3*4矩阵,找出每行中最大元素并与第一列元素交换.弄了好久还是...
1。 max没有随着a[i][0]的数值刷新,2。交换时保存在临时变量的元素下标写错。算法也有错:1。在交换过程中输出的不是最终交换结果。2。非最大列也可能同第一列交换过。错在这段代码:for(i=0;i<3;i++){ max=a[i][0];for(j=0;j<4;j++){ if(max<a[i][j]){ temp=a[i][0...

...再将每1行均除以该行上绝对值最大的元素,并输出
第三个:你定义的是double类型,但输入输出用了%d,而%d是整数类型,所以你的程序只会出现整数不会出现小数,改为%lf就好。附上修改后代码:include<stdio.h> include<math.h> int main(){ double a[3][4],b[3] ;int i,j,k;for(k=0;k<3;k++)b[k]=0;for(i=0;i<3;i++){ fo...

C语言求出一个3×4的矩阵每一行的最大值
2、具体程序如下:#include <stdio.h>int main(){int a[3][5]={{1,2,3},{4,5,6},{7,8,9}}。3、首先要向计算机输入我们矩阵中的所有元素。4、需要向计算机指出要计算机计算出哪些元素之和和需要计算元素的具体位置在哪儿。、5、需要定义三个累积和sum1,sum2,sum来进行计算后的结果的...

定义一个3*4的二维数组,求出每行的最大值.
int max;printf("输入3*4矩阵\\n");for(i=0;i<3;i++){ for(j=0;j<4;j++){ scanf("%d",&a[i][j]);} }\/\/结束数组初始化。for(i=0;i<3;i++){ max=a[i][0];for(j=0;j<4;j++){ if(max

2、输入一个3行4列的二维数组,输出数组的所有元素,并求出所有元素的最...
这个题目是简单的二维数组的应用,主要考察数组的输入及输出,还有利用打擂台的方法求最小值。在输出的时候就是使用二重循环,每一行结束以后就换行

...要求编程求出数组元素中的最大值,以及所在的行号和列号。
记录 最大值的下标,存于 row,col.输出 最终的 a[row][col].include <stdio.h> include int main(){ int a[3][4],v;int i,j,row=0,col=0;srand(time(0));for (j=0;j<3;j++) for (i=0;i<4;i++)a[j][i]=rand()%1000;printf("array:\\n");for (j=0;j<3;j...

...a[3][4], 利用数组输入、输出数组的所有元素
二维数组的输入输出就是一个for循环的嵌套呀。求每一行元素最大值的话,可以参考以下代码:

求一个三行四列二维数组元素的最大值,并确定最大值所在行和列(要求用...
{ printf ("第%d行:", i+1); for (j=0; j

相似回答