标题:二维数组的问题
只看楼主
x1148291109
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2016-10-19
结帖率:66.67%
已结贴  问题点数:20 回复次数:8 
二维数组的问题
输入一个n*n的数组,将i行与j列共(2n-1)个数加起来求平均数avg,再将j列中最大的数max全部替换成avg。

[此贴子已经被作者于2017-1-8 16:46编辑过]

搜索更多相关主题的帖子: 最大的 
2017-01-08 14:47
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
未看明,解释一下“i行与j列”、“(2n-1)个数”、“j行”。
2017-01-08 15:49
qdcs
Rank: 6Rank: 6
等 级:侠之大者
威 望:5
帖 子:171
专家分:458
注 册:2016-12-22
得分:0 
最大的数max全部替换成avg。什么意思

我是硬件工程师
2017-01-08 15:59
bjut_Allen
Rank: 9Rank: 9Rank: 9
来 自:平乐园工业技术学校
等 级:蜘蛛侠
威 望:8
帖 子:323
专家分:1223
注 册:2016-10-16
得分:0 
我这写的有点恶心。。。你凑活看
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int n,i,j;
    float *p;
    printf("输入n:");
    scanf("%d",&n);
    p=(float*)malloc(sizeof(float)*n*n);    //建立动态存储空间
    printf("输入二维数组:\n");          //建立二维数组
    for(i=0;i<n;i++){         
        for(j=0;j<n;j++)
        scanf("%f",p+n*i+j);
    }
    int hi=0,lj=0;                    //计算平均值
    printf("输入行数hi和列数lj(hi<=n,lj<=n):");
    scanf("%d%d",&hi,&lj);
    float sum=0,ave=0;
    for(j=0;j<n;j++)
    sum+=*(p+(hi-1)*n+j);
    for(i=0;i<n;i++)
    sum+=*(p+(lj-1)*n+i);
    sum-=*(p+(hi-1)*n+(lj-1));
    ave=sum/(2*n-1);
    /*此处你说j行?那我就认为是刚才那个lj列数值不变,变成lj行了。。*/
    float max=*(p+(lj-1)*n+0);        //找到最大值
    for(j=1;j<n;j++){
    if(*(p+(lj-1)*n+j)>max)
    max=*(p+(lj-1)*n+j);
    }
    for(j=0;j<n;j++){                //把lj行的最大值变成平均值
        if(*(p+(lj-1)*n+j)==max)
        *(p+(lj-1)*n+j)=ave;
    }
    printf("\n平均数ave=%0.2f\n",ave);
    printf("输出改变后的二维数组:\n");
    for(i=0;i<n;i++){         
        for(j=0;j<n;j++)
        printf("%0.2f  ",*(p+n*i+j));
        printf("\n");
    }
    free(p);
    return 0;
 }

Code is my life.
2017-01-08 16:34
x1148291109
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2016-10-19
得分:0 
回复 2楼 吹水佬
n*n 的数组有q 行p列   输入三个数据 分别是n i j;i就是i行,j就是j列
  
2017-01-08 16:43
x1148291109
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2016-10-19
得分:0 
回复 2楼 吹水佬
n*n的话一行 加一列的数就是2*n-1个
2017-01-08 16:44
x1148291109
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2016-10-19
得分:0 
回复 4楼 bjut_Allen
不好意思 是j列 打错了
2017-01-08 16:46
bjut_Allen
Rank: 9Rank: 9Rank: 9
来 自:平乐园工业技术学校
等 级:蜘蛛侠
威 望:8
帖 子:323
专家分:1223
注 册:2016-10-16
得分:20 
回复 7楼 x1148291109
修改一下
float max=*(p+0*n+lj-1);        //找到最大值
    for(i=1;i<n;i++){
    if(*(p+i*n+lj-1)>max)
    max=*(p+i*n+lj-1);
    }
    for(i=0;i<n;i++){                //把lj列的最大值变成平均值
        if(*(p+i*n+lj-1)==max)
        *(p+i*n+lj-1)=ave;
    }

Code is my life.
2017-01-08 17:12
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用x1148291109在2017-1-8 16:44:39的发言:

n*n的话一行 加一列的数就是2*n-1个

明白,就是某行和某列的所有元素。
2017-01-08 20:12



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-473413-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.081419 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved