| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 665 人关注过本帖
标题:编译无误,运行出错
取消只看楼主 加入收藏
a99875984
Rank: 2
等 级:论坛游民
帖 子:188
专家分:24
注 册:2012-2-11
结帖率:94.64%
收藏
已结贴  问题点数:20 回复次数:5 
编译无误,运行出错
程序代码:
#include <iostream>
#include<stdlib.h>
#include <iomanip>
using namespace std;


int main()
{
    int id[5];
    int china[5]={75,80,85,52,86};
    int math[5];
    int i,max=0,y,x;
    int j[8];
    int sum[5],sum1[5];
    for(i=0;i<5;i++)
    {
        cout<<"请输入学号"<<endl;
        cin>>id[i];
        cout<<"请输入数学成绩"<<endl;
        cin>>math[i];
    }
    for(i=0;i<5;i++)
    {
        sum[i]=china[i]+math[i];
        sum1[i]=sum[i]; //为了不改变sum数组的值,先将sum赋值给 sum1
    }
    for(i=0;i<5;i++) //将总成绩最大的数数组下标赋值到J数组,从而得到名次
    {
       
        for(y=0;y<5;y++)
        {
            if(max<sum1[y])
            {
                max=sum1[y];
                j[i]=y;
            }
        }
        x=j[i];
        sum1[x]=0;
    }
    cout<<"学号  语文  数学  总分  均分  名次"<<endl;
    for(i=0;i<5;i++)
    {
        y=j[i];
        cout<<id[y]<<setw(6)<<china[y]<<setw(6)<<math[y]<<setw(6)<<sum[y]<<setw(6)<<sum[y]/2<<setw(6)<<i+1<<endl;
    }
    return 0;
}
请问那出错了?编译没错误,运行时,输入10个数据后没输出结果
并且,有没有更好的算法。谢谢

[ 本帖最后由 a99875984 于 2012-11-7 23:00 编辑 ]
搜索更多相关主题的帖子: color 
2012-11-07 08:17
a99875984
Rank: 2
等 级:论坛游民
帖 子:188
专家分:24
注 册:2012-2-11
收藏
得分:0 
回复 2楼 寒风中的细雨
不是数组下标,我将5改成8,还是不行
2012-11-07 22:57
a99875984
Rank: 2
等 级:论坛游民
帖 子:188
专家分:24
注 册:2012-2-11
收藏
得分:0 
回复 5楼 newdos
for(i=0;i<5;i++)
      {
         
         for(y=0;y<5;y++)
          {
              if(max<sum1[y])
              {
                  max=sum1[y];
                  j[i]=y;//将单前最大值的元素下标赋值给J数组以储存总分排名
              }
          }
          x=j[i];           //假设j[0]=5,说明数组下标为5的是排名第0+1位的。
          sum1[x]=0;      //第一次将最大值归零,从而求第二大的总分,以此类推
      }//表达能力差,不知道说没说明白

[ 本帖最后由 a99875984 于 2012-11-7 23:15 编辑 ]
2012-11-07 23:01
a99875984
Rank: 2
等 级:论坛游民
帖 子:188
专家分:24
注 册:2012-2-11
收藏
得分:0 
回复 4楼 小糊涂神c30
for(i=0;i<5;i++)
     {
        
        for(y=0;y<5;y++)
         {
             if(max<sum1[y])
             {
                 max=sum1[y];
                 j[i]=y;//将单前最大值的元素下标赋值给J数组以储存总分排名
             }
         }
         x=j[i];           //假设j[0]=5,说明数组下标为5的是排名第0+1位的。
         sum1[x]=0;      //第一次将最大值归零,从而求第二大的总分,以此类推
     }//表达能力差,不知道说没说明白
2012-11-07 23:07
a99875984
Rank: 2
等 级:论坛游民
帖 子:188
专家分:24
注 册:2012-2-11
收藏
得分:0 
回复 10楼 寒风中的细雨
感谢版主,我将j[]数组初始化后,就可以输出了,不过我怎么觉得这个算法有点麻烦啊,有没有更好的算法啊?
2012-11-09 07:53
a99875984
Rank: 2
等 级:论坛游民
帖 子:188
专家分:24
注 册:2012-2-11
收藏
得分:0 
回复 13楼 qq872551969
这个我也知道哈,所以我在试着尽量用更忧的算法
2012-11-09 23:36
快速回复:编译无误,运行出错
数据加载中...
 
   



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

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