| 网站首页 | 业界新闻 | 群组 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
雷速体育发帖软件开发QQ118000023C语言培训|一对一辅导|零基础学编程LightningChart 快速先进的.Net图表控件
共有 313 人关注过本帖
标题:求求大神们帮个忙修改一下我这个代码,万分感谢,拜托了
只看楼主 收藏
ghw970618
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2018-4-17
结帖率:0
  已结贴   问题点数:20  回复次数:6   
求求大神们帮个忙修改一下我这个代码,万分感谢,拜托了
在跳水比赛中,给予每名潜水员的分数如下。每个法官给出一个分数,通过去掉最高分和最低分并计算其余的平均值来找到最终分数。写一个C程序,在竞赛中读入评委人数,然后为每名裁判输入一个成绩。进行必要的计算并显示最高分,最低分
分数和最终分数。以下数据检查必须在程序中进行:
a)裁判人数必须在4人到8人之间
b)每个裁判可以给出一个从0.0到10.0的标记(一个可能包含分数的实数)
#include <stdio.h>

int main() {
   
    int numOfJudges;
   
    printf("Diving Competition\n\n");
    printf("Enter Number of Judges (4 to 8): ");
    scanf("%d", &numOfJudges);
    printf("\n");

    if(numOfJudges >= 4 && numOfJudges <= 8) {
        float num[numOfJudges];
        float max, min, final = 0.0;
        min = num[0];
        max = num[numOfJudges];

    for(int i = 0; i < numOfJudges; i++) {
        printf("Judge %d score: ", i+1);
        scanf("%f", &num[i]);
        if(num[i] >= 0.0 && num[i] <= 10.0) {
                if(num[i] < min) {
                    min = num[i];
                }
                if(num[i] > max) {
                    max = num[i];
                }
                final += num[i];
            } else {
                printf("Judges can only award a mark from 0.0 to 10.0, exit and try again");
                return 1;
            }
        }
    final = final - min;
    printf("\nMin: %.1f, Max: %.1f, Final Result: %.1f", min, max, final/(numOfJudges-1));
    } else {
            printf("Please exit and enter the correct number of judges between 4 to 8");
            return 1;
        }
}
2018-04-17 15:03
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:248
帖 子:5603
专家分:31707
注 册:2011-1-18
  得分:10 
你的问题是什么?
如果是编译失败,那应该贴出编译器给出的错误信息
如果是运行结果不符合你的预期,那应该贴出 你的输入、期待输出、实际输出
2018-04-17 15:22
ghw970618
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2018-4-17
  得分:0 
回复 2楼 rjsp
附件: 您没有浏览附件的权限,请 登录注册
2018-04-17 15:32
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:248
帖 子:5603
专家分:31707
注 册:2011-1-18
  得分:0 
程序代码:
#include <stdio.h>

int main( void )
{
    int n;
    if( scanf("%d",&n)!=1 || n<4 || n>8 )
    {
        puts( "......" );
        return 1;
    }

    double grade_min=10, grade_max=0, grade_sum=0;
    for( int i=0; i!=n; ++i )
    {
        double grade;
        if( scanf("%lf",&grade)!=1 || grade<0 || grade>10 )
        {
            puts( "......" );
            return 1;
        }

        if( grade < grade_min )
            grade_min = grade;

        if( grade > grade_max )
            grade_max = grade;

        grade_sum += grade;
    }

    printf( "%.1f\n", (grade_sum-grade_min-grade_max)/(n-2) );
}

2018-04-17 15:33
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:248
帖 子:5603
专家分:31707
注 册:2011-1-18
  得分:0 
min = num[0];
max = num[numOfJudges];
当执行这两句时,因为 num[0] 和 num[numOfJudges] 未赋值,所以读取它们的行为未定义。即使不出错,那min、max中的值也是非确定的。
2018-04-17 15:36
ghw970618
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2018-4-17
  得分:0 
回复 5楼 rjsp
我看到了您给出的解答方法,我想请您能否在我给出的代码上进行修改,谢谢
2018-04-17 15:39
王强1012
Rank: 2
等 级:论坛游民
帖 子:1
专家分:10
注 册:2018-4-17
  得分:10 
我去,梅西的吗
2018-04-17 22:21







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

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