标题:实在找不出来,错误的在哪里了
只看楼主
Knightl8
Rank: 1
等 级:新手上路
帖 子:48
专家分:7
注 册:2020-3-8
结帖率:87.5%
已结贴  问题点数:10 回复次数:11 
实在找不出来,错误的在哪里了
题目:

我的解答:
程序代码:
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int num[100][1000];
    int a,b;
    scanf("%d %d",&a,&b);
    int m[100];

 
    for(int i=0;i<b;i++)
    {
        for(int j=0;j<a;j++)
        {
            scanf("%d",&num[i][j]);
        }

    }
    for(int i=0;i<a;i++)
    {
        for(int j=0;j<b;j++)
        {
            m[i]+=num[j][i];
        }
    }

    int max=num[0][0];
    for(int i=0;i<b;i++)
    {
        for(int j=0;j<a;j++)
        {
            if(num[i][j]>max)
            {
                max=num[i][j];
            }
        }
        
    }
    printf("%d\n",max);
    int maxindex=m[0];
    for(int i=0;i<a;i++)
    {
        if(m[i]>maxindex)
        {
            
            maxindex=m[i];

        }
        
    }
    for(int i=0;i<a;i++)
    {
        if(m[i]==maxindex)
        {

        }
        else
        {
            m[i]=-1;
        }
        
    }
   
    int count=0;
    for(int i=0;i<a;i++)
    {
        //printf("%d\n",m[i]);
        if(m[i]!=  -1)
        {
            
            count++;
        }
    
    }
    for(int i=0;i<a;i++)
    {
        if(m[i]!=-1)
        {
            printf("%d",i+1);
            if(count>1)
            {
                printf(" ");
            }
            else
            {
                printf("");
            }
            count--;
            
        }
    }
    system("pause");
    return 0;
}
搜索更多相关主题的帖子: num printf for int i++ 
2020-03-11 22:24
xianfajushi
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:527
专家分:690
注 册:2007-9-8
得分:2 
2020-03-12 07:42
Knightl8
Rank: 1
等 级:新手上路
帖 子:48
专家分:7
注 册:2020-3-8
得分:0 
回复 2楼 xianfajushi
大佬,我是让你看看我错在那^__^
2020-03-12 08:33
linux_qqlb
Rank: 2
等 级:论坛游民
威 望:1
帖 子:4
专家分:23
注 册:2020-3-11
得分:2 
你这里是不是反了
 for(int i=0;i<b;i++)
    {
        for(int j=0;j<a;j++)
        {
            scanf("%d",&num[i][j]);
        }

    }
    for(int i=0;i<a;i++)
    {
        for(int j=0;j<b;j++)
        {
            m[i]+=num[j][i];
        }
    }
应该是m[i]+=num[i][j];
2020-03-12 08:57
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:2 
怎么有那么多的循环?除了前几个之外,后来都看不懂你在干什么

程序代码:
#include <stdio.h>

int main( void )
{
    unsigned n, m;
    unsigned a[1000] = { 0 };

    // 输入
    scanf( "%u%u", &n, &m );
    for( size_t r=0; r!=m; ++r )
    {
        for( size_t i=0; i!=n; ++i )
        {
            unsigned val;
            scanf( "%u", &val );
            a[i] += val;
        }
    }

    // 计算最大值之所在
    unsigned index = 0;
    for( size_t i=0; i!=n; ++i )
    {
        if( a[index] <= a[i] )
            index = i;
    }

    // 输出
    printf( "%u\n", a[index] );
    for( size_t i=0; i<=index; ++i )
    {
        if( a[i] == a[index] )
            printf( "%zu%c", i+1, " \n"[i==index] );
    }
}

2020-03-12 09:02
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
得分:2 
数组m 没有初始化

https://zh.
2020-03-12 13:23
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
得分:2 
为啥输出是3,5呢
3能看懂表示最大值的种类,5是什么
现实中如果看哪个种类销售的好,不应该是要汇报哪个城市五仁月饼销量最高吗?然后下一年可以给某个城市留多点五仁月饼作库存

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-03-12 13:25
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
得分:2 
程序代码:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
    int n,m,arr[1001]={0},i,j,temp,max1=0,max2[10]={0},kk=0;//max1:最大销量  max:销量最大的月饼的种类编号  kk:max2的下标
    scanf("%d %d",&n,&m);
    for(i=0;i<m;i++){  //参与统计城市数量m 
        for(j=1;j<=n;j++){  //月饼种类数n
            scanf("%d",&temp);
            arr[j]+=temp;
        }
    }
    for(j=1;j<=n;j++){
        if(arr[j]>max1){   //如果大于max1,则将max2之为0,再将新的销量最大的月饼的种类编号加入max2
            max1=arr[j];
            for(i=0;i<=kk;i++){
                max2[i]=0;
            }
            kk=0;
            max2[kk++]=j;
        }else if(arr[j]==max1){  //如果等于max1,则这个月饼也是目前销量最大的月饼,则将其下标加入max2
            max2[kk++]=j;
        }
    }
    //输出结果
    printf("%d\n",max1);
    printf("%d",max2[0]);
    for(i=1;i<kk;i++){
        printf(" %d",max2[i]);
    }
    return 0;
}
2020-03-12 16:43
bcbbcclbbc
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:194
专家分:528
注 册:2019-8-15
得分:2 
循环好用,但是用多了容易捣蛋。注释可以解一时之痛。
后面的计算是否存在多个并列第一,实在是把循环玩坏了,随意使用。

int max=num[0][0];
    for(int i=0;i<b;i++)
    {
        for(int j=0;j<a;j++)
        {
            if(num[i][j]>max)
            {
                max=num[i][j];
            }
        }
        
    }
    printf("max=%d\n",max);//所求值为何种月饼在那个城市销量最多
    //答非所问,num[][]记载着每种月饼在每个城市的销量
    int maxindex=m[0];
    for(int i=0;i<a;i++)
    {
        if(m[i]>maxindex)
        {
            
            maxindex=m[i];

        }
        
    }
    //printf("maxindex=%d\n",maxindex);//此值才为题目所求
    //数组m为各种月饼的总销量

   
2020-03-12 23:24
xianfajushi
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:527
专家分:690
注 册:2007-9-8
得分:0 
以下是引用叶纤在2020-3-12 13:25:20的发言:
为啥输出是3,5呢
3能看懂表示最大值的种类,5是什么
现实中如果看哪个种类销售的好,不应该是要汇报哪个城市五仁月饼销量最高吗?然后下一年可以给某个城市留多点五仁月饼作库存

5是最后一列的和=2018因此是并列第一
以下是引用Knightl8在2020-3-12 08:33:22的发言:
大佬,我是让你看看我错在那^__^

给你例子就是让你比较和思考找自己差在哪,如果只会复制粘贴,那算啥学习?
难道没看出来我在求列和同时求最大值,最后用最大值去输出所有相等的所在下标?
从你代码看:输入,求和,获取最大,再次获取最大,作标记,计数用于控制输出空格,输出.有多余的循环作同一件事,有些事情可以都在求和循环内就完成多爽!
所以说你的代码思路不清晰以至于别人不太乐意继续看,也不太乐意去复制调试,宁愿写一个.如下修改你的代码:
程序代码:
        for (int i = 0; i<a; i++)
    {
        m[i] = 0;
        for (int j = 0; j<b; j++)
        {
            m[i] += num[j][i];
        }
    }


断点查看一下数据就能明白是虾米问题.修改了一下我的代码控制空格的输出问题
    bool k = false;
    while (y > j)if (aa[x][j++] == da) (k ? cout << ends : cout << flush), cout << j, k = true;


[此贴子已经被作者于2020-3-13 16:56编辑过]

2020-03-13 14:39



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




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

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