| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 617 人关注过本帖
标题:关于一个二维数组的题 求输出最大数和学号
只看楼主 加入收藏
C小菜
Rank: 1
等 级:新手上路
帖 子:109
专家分:3
注 册:2011-9-14
结帖率:66.67%
收藏
 问题点数:0 回复次数:7 
关于一个二维数组的题 求输出最大数和学号
题目是这样的、、
 有个成绩单。。
 学号    成绩
 1       76
 8       45
 12      96
 25      87
 27      90
 输出 成绩最高的分数和学号。。
程序代码:
#include <stdlib.h>
#include<stdio.h>

int main()

 {
int a[5][2]={1,76,8,45,12,96,25,87,27,90};
int i,j,max=0,s,b;
for(i=0;i<5;i++)

 {
        for(j=0;j<2;j++)
        {
   


     if(a[i][j]>max)
        {
            max=a[i][j];
            s=i;
            b=j;
        }
        }

 }
     printf("成绩最高分是%5d,学号是%d",max,s);
return 0;
}
这样输入怎么错了?
怎么得到成绩最高为96 学号却是2?


搜索更多相关主题的帖子: 成绩单 
2011-12-02 12:42
C小菜
Rank: 1
等 级:新手上路
帖 子:109
专家分:3
注 册:2011-9-14
收藏
得分:0 
求助
2011-12-02 12:45
C小菜
Rank: 1
等 级:新手上路
帖 子:109
专家分:3
注 册:2011-9-14
收藏
得分:0 
求助
2011-12-02 12:55
hnuhsg1226
Rank: 9Rank: 9Rank: 9
来 自:中国
等 级:蜘蛛侠
威 望:2
帖 子:314
专家分:1314
注 册:2011-3-27
收藏
得分:0 
哈哈,当然是2啦,你回过头来看程序,当取得最大值的时候,s取的是i值,i值是横坐标,当然是2啦。你应该需要的学号是a[2][0],成绩是a[2][1],而不是坐标值。我是这样想的,第一列就是学号,不用去比较,只比较第二列的值,谁大就返回其学号
程序代码:
#include<stdio.h>
#include <stdlib.h>

int main()
{
    int a[5][2]={1,76,8,45,12,96,25,87,27,90};
    int i,max=0,s;
    for(i=0;i<5;i++)
    {
        if(a[i][1]>max)
        {
            max = a[i][1];
            s = a[i][0];
        }
    }
    printf("成绩最高分是%5d,学号是%d\n",max,s);
    system("pause");
    return 0;
}


我的地盘
2011-12-02 15:22
tianqiao
Rank: 2
等 级:论坛游民
帖 子:80
专家分:55
注 册:2011-9-21
收藏
得分:0 
楼上正解,不过再给楼主加一个难度就是从大到小输出学号和成绩
2011-12-03 21:52
于祥
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:5
帖 子:1047
专家分:4132
注 册:2011-4-24
收藏
得分:0 
用选择法排列

最基础的往往是你最容易忽略的!
2011-12-03 22:59
暴风雪282
Rank: 4
等 级:业余侠客
帖 子:61
专家分:295
注 册:2011-10-4
收藏
得分:0 
冒泡排序法
for (i=0; i<5-1;i++)
{
   for (j=0;j<5-1-i;j++)
  {
     if (a[j][2]<a[j+1][2])
         {
            b = a[j][2];
           a[j][2] = a[j+1][2];
            a[j+1][2] = b;
          }
   }
}

Dance like there is nobody.
2011-12-04 00:17
暴风雪282
Rank: 4
等 级:业余侠客
帖 子:61
专家分:295
注 册:2011-10-4
收藏
得分:0 
#include<stdio.h>
#include <stdlib.h>
 
int main()
 {
     int a[5][2]={1,76,8,45,12,96,25,87,27,90};
     int i,j,max=0,s,b=0,c=0;
     for(i=0;i<5;i++)
     {
         if(a[i][1]>max)
         {
             max = a[i][1];
             s = a[i][0];
         }
     }
     for (i=0; i<5-1;i++)
    {
        for (j=0;j<5-1-i;j++)
       {
             if (a[j][1]<a[j+1][1])
               {
                   b = a[j][1];
                   a[j][1] = a[j+1][1];
                   a[j+1][1] = b;
                   c = a[j][0];
                   a[j][0] = a[j+1][0];
                   a[j+1][0] = c;
               }
      }
    }

     printf("成绩最高分是%5d,学号是%d\n",max,s);
     for (i=0;i<5;i++)
     {
         for (j=0;j<2;j++)
         {
             printf ("%d\n",a[i][j]);
        }
     }
     return 0;
 }

没人看啊,这么大的错...

Dance like there is nobody.
2011-12-04 12:42
快速回复:关于一个二维数组的题 求输出最大数和学号
数据加载中...
 
   



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

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