| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 727 人关注过本帖
标题:一个C语言编程的问题,请多多指教
取消只看楼主 加入收藏
lywhlao
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-6-16
结帖率:0
收藏
 问题点数:0 回复次数:2 
一个C语言编程的问题,请多多指教
题目是这样的:

成绩排名

Acceteped : 1          Submit : 9
Time Limit : 1000 MS         Memory Limit : 65536 KB
 
Description

给出一个班的成绩情况,请计算平均分,并按平均分进行排名。 输入 第一行是一个整数K,表示样例个数。每个样例的第一行是两个正整数N(N<=40)和M(M<=10),分别表示班上的人数信息,课程的门数。以后的N行,每行一个字符串和M个整数,字符串表示学生姓名(字符串不超过10个字符,只含英文字母),M个整数表示M门课的成绩。 输出 每个样例输出一个排名结果,一行为一个学生的成绩信息。包含3个部分的信息,第一个是一个整数,表示排名,从1开始计数;第二部分是学生的姓名;第三部分是一个浮点数,表示学生的平均成绩,保留1位小数。排名按平均成绩从高到低排列,如果平均成绩相同,按姓名的字典序排列,其排名相同,后面的排名依次后推。三者之间用一个空格隔开,行末无空格。
 
Sample Input

1
4 2
eric 80 90
rose 70 80
john 80 70
jone 60 60
 
Sample Output

1 eric 85.0
2 john 75.0
2 rose 75.0
4 jone 60.0
 
Source

=================================================================================
下面是我写的代码,测试用例已经过了,但提示是WA,我找了很久也没发现问题,试了很多数据,希望大家帮我看看,这是OJ地址http://cie.xtu.,题号是1106,先谢谢了。
#include<stdio.h>
#include<string.h>
 struct t{
    char n[100];
    int c[100];
    double avg;
}t[1000];
int main()
{
   int ca;
   scanf("%d",&ca);

   while(ca--)
   {
       memset(t,0,1000);
       int num;//人数
       int k;//科目
       int i;
       int j;
       scanf("%d %d",&num,&k);
       for(i=0;i<num;i++)
       {
           double sum=0;
           scanf("%s",t[i].n);//输入名字
           for(j=0;j<k;j++)
           {
               scanf("%d",&t[i].c[k]);//输入成绩
               sum+=t[i].c[k];
           }
           t[i].avg=sum/(double)k;
       }

   int x,y;
   for(x=0;x<num-1;x++)//冒泡排序
   for(y=x+1;y<num;y++)
   {
       if(t[x].avg<t[y].avg)
       {
           struct t temp;
           temp=t[x];
           t[x]=t[y];
           t[y]=temp;
       }
   }
   int flag=1;
   for(i=0;i<num;i++)
    {
       if(i==0)printf("1 ");
       else
       {
           if(t[i].avg==t[i-1].avg)
               printf("%d ",flag);
           else
           {
               printf("%d ",i+1);
               flag=i+1;

           }

       }


        printf("%s %.1f\n",t[i].n,t[i].avg);
    }
    }
   }

搜索更多相关主题的帖子: 信息 英文字母 Memory C语言 
2011-10-29 14:43
lywhlao
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-6-16
收藏
得分:0 
回复 楼主 lywhlao
回复错了。
2011-10-29 17:01
lywhlao
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-6-16
收藏
得分:0 
回复 2楼 beyondyf
你的输出有问题吧?如果成绩一样排名也是一样的。
2011-10-29 17:03
快速回复:一个C语言编程的问题,请多多指教
数据加载中...
 
   



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

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