注册 登录
编程论坛 C语言论坛

怎么限定循环输入的值范围

sleepyyuy 发布于 2021-01-02 13:58, 1418 次点击
题目.校园歌手大赛。在校园歌手大赛中,有10个评委为参赛的选手打分,分数为1到100。选手最后得分为:去掉一个最高分和一个最低分后其余8个数的平均值。请编写一个程序实现。
新手,我不知道怎么限定这个分数值,就是想限定它在输入的10次里每次都是在1-100的范围,不然就报错提示输入的人,我这样加了while这程序就不行了

这个就是我打的
#include<stdio.h>

int main()
{
    int n[10],max,min,avg,i,sum=0;
    printf("请为选手输入1-100的打分:\n");
    while(n[i]>=1 && n[i]<=100)
    {   
        for(i=0;i<10;i++)
        {
        scanf("%d",&n[i]);
        sum+=n[i];
        max=n[0];min=n[0];
        }
    }
    for(i=0;i<10;i++)
    {
        if(n[i]>max)
        max=n[i];
        if(n[i]<min)
        min=n[i];
    }   
    avg=(sum-max-min)/8;
    printf("去掉一个最高分:%d\n去掉一个最低分:%d\n",max,min);
    printf("选手最终得分是: %d",avg);
}
1 回复
#2
风过无痕19892021-01-02 15:25
回复 楼主 sleepyyuy
还没打分,就进行判断,肯定是会出错的
程序代码:

#include<stdio.h>

int main()
{
    int i, n[10], max = 0, min = 100, sum = 0;
    float avg;
    printf("请为选手输入1-100的打分:\n");
   
    for (i = 0;i < 10;i++)
    {
        do   // 需要先打分,才能进行判断
            scanf("%d", &n[i]);
        while ((n[i] <= 1 || n[i] >= 100));
        sum += n[i];
        if (n[i] > max)
            max = n[i];
        if (n[i] < min)
            min = n[i];
    }

    avg = (sum - max - min) / 8;
    printf("去掉一个最高分:%d, 去掉一个最低分:%d, ", max, min);  // 此处不换行
    printf("选手最终得分是: %.2f\n", avg);                           // 此处换行
}


[此贴子已经被作者于2021-1-2 15:30编辑过]

1