标题:新人程序求助~!
只看楼主
游离的沼泽鱼
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2012-11-7
结帖率:100%
 问题点数:0 回复次数:4 
新人程序求助~!
这是一个打分程序,n个评委评分,去掉最高分,最低分,然后求平均分。  
 我自己写了一个,运行结果不对,求各位高手指点


#include<stdio.h>
void main()
{
    int a[100],n,i,total,max,min,grade;
    scanf("%d",&n);
    printf("there are %d judges\n",n);
    if(n<=2)
        printf("data error\n");
    else
        printf("please input grades\n");
    for(i=1,total=0;i<=n;i++)
    {
        scanf("%d",&a[i]);
        printf("number %d judge give %d scores\n",i,a[i]);
        total=total+a[i];
    }
    max=a[1];
    for(i=1;i<=n;i++)
    {
        if(max<a[i+1])
        max=a[i+1];
    }
    printf("the highest grade is %d\n",max);
    min=a[1];
    for(i=1;i<=n;i++)
    {
        if(min>a[i+1])
        min=a[i+1];
    }
    printf("the lowest grade is %d\n",min);
    grade=(total-max-min)/(n-2);
    printf("the final grade is %d\n",grade);
}

搜索更多相关主题的帖子: please total include number scores 
2012-11-21 23:12
heroinearth
Rank: 10Rank: 10Rank: 10
来 自:云南曲靖
等 级:青峰侠
帖 子:430
专家分:1506
注 册:2011-10-24
得分:0 
max=a[1];
    for(i=1;i<=n;i++)
    {
        if(max<a[i+1])
        max=a[i+1];
    }
    printf("the highest grade is %d\n",max);
    min=a[1];
    for(i=1;i<=n;i++)
    {
        if(min>a[i+1])
        min=a[i+1];
    }
两个循环中当i=n时,i+1已经出界了,改为
for(i=2;i<=n;i++)
{if(max<a[i])
   max=a[i];
}
就可以了

2012-11-21 23:26
游离的沼泽鱼
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2012-11-7
得分:0 
谢谢了,运行结果是对的。
2012-11-21 23:44
小小战士
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:569
专家分:1313
注 册:2012-11-3
得分:0 
以下是引用游离的沼泽鱼在2012-11-21 23:44:50的发言:

谢谢了,运行结果是对的。

对的吗?你输入超过3个评委试试!
还是要改的,看下面:

#include<stdio.h>
int main()
{
    int a[100],temp,n,i,j,total,max,min,grade;
    scanf("%d",&n);
    printf("there are %d judges\n",n);
    if(n<=2)
    {
        printf("data error\n");
        return 0;//如果n<=2,应该退出程序的
    }
    else
        printf("please input grades\n");
    for(i=0,total=0;i<n;i++)
    {
        scanf("%d",&a[i]);
        printf("number %d judge give %d scores\n",i+1,a[i]);
        total=total+a[i];
    }
    for(i=0;i<n-1;i++)//给分数排序
    {
        for(j=i+1;j<n;j++)
        {
            if(a[i]<a[j])
            {
                temp=a[i];
                a[i]=a[j];
                a[j]=temp;
            }
        }
    }
    min=a[0];//最小分数
    max=a[n-1];//最大分数
    grade=(total-max-min)/(n-2);//平均分
    printf("the highest grade is %d\n",max);
    printf("the lowest grade is %d\n",min);
    printf("the final grade is %d\n",grade);
    return 0;
}

[ 本帖最后由 小小战士 于 2012-11-22 00:04 编辑 ]

小小战士,战士中的战斗机!
2012-11-21 23:59
小小战士
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:569
专家分:1313
注 册:2012-11-3
得分:0 
再说说,数组a[100]的元素是从a[0]到a[99]的,没有a[100]元素,不要越界。分数嘛,难免有小数,做好用float型。

小小战士,战士中的战斗机!
2012-11-22 00:06



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




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

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