返回列表 发帖

批处理脚本实现C语言趣味编程百例004:歌星大奖赛评分

加分:1个技术分或者10个PB

要求用BAT脚本实现:在歌星大奖赛中,有10个评委为参赛的选手打分,分数为1~100分。选手最后得分为:去掉一个最高分和一个最低分后其余8个分数的平均值。

*问题分析与算法设计
这个问题的算法十分简单,但是要注意在程序中判断最大、最小值的变量是如何赋值的。

*程序说明与注释
#include<stdio.h>
int main()
{
int integer,i,max,min,sum;
max=-32768; /*先假设当前的最大值max为C语言整型数的最小值*/
min=32767; /*先假设当前的最小值min为C语言整型数的最大值*/
sum=0; /*将求累加和变量的初值置为0*/
for(i=1;i<=10;i++)
{
printf("Input number %d=",i);
scanf("%d",&integer); /*输入评委的评分*/
sum+=integer; /*计算总分*/
if(integer>max)max=integer; /*通过比较筛选出其中的最高分*/
if(integer<min)min=integer; /*通过比较筛选出其中的最低分*/
}
printf("Canceled max score:%d\nCanceled min score:%d\n",max,min);
printf("Average score:%d\n",(sum-max-min)/8); /*输出结果*/
}COPY
*运行结果
Input number1=90
Input number2=91
Input number3=93
Input number4=94
Input number5=90
Input number6=99
Input number7=97
Input number8=92
Input number9=91
Input number10=95
Canceled max score:99
Canceled min score:90
Average score:92

*思考题
题目条件不变,但考虑同时对评委评分进行裁判,即在10个评委中找出最公平(即评分最接返平均分)和最不公平(即与平均分的差距最大)的评委,程序应该怎样实现?

@echo off&setlocal enabledelayedexpansion
set /a min=101,max=0,offsMin=10000
for /l %%i in (1,1,10) do (
  set /a n%%i=!random! %% 100 + 1, sum+=n%%i
  if !n%%i! gtr !max! set /a max=!n%%i!,max#=%%i
  if !n%%i! lss !min! set /a min=!n%%i!,min#=%%i
  echo %%i: !n%%i!
)
set /a aver=(sum-min-max)/8
for /l %%i in (1,1,10) do (
  set /a offs=n%%i-aver, offs*=offs
  if !offs! lss !offsMin! set /a offsMin=offs, #=%%i
)
echo 平均分为: !aver!, 最接近平均分的是 !#!
set /a offs=aver*2-min-max
(<nul set /p=评分最远离平均分的是 ) & if !offs! lss 0 (echo !max#! 号: !max! 分) else (echo !min#! 号: !min! 分)
pauseCOPY
1

评分人数

    • HAT: 感谢分享技术 + 1

TOP

本帖最后由 jinzeyu 于 2012-3-3 15:27 编辑
@echo off&setlocal enabledelayedexpansion&set/a min=101,max=-1,pj=0&for /l %%i in (1,1,10) do set/p n%%i=Input number%%i=
for /l %%j in (1,1,10) do ((if !n%%j! lss !min! set min=!n%%j!)&if !n%%j! gtr !max! set max=!n%%j!)
echo Canceled max score:!max!&echo Canceled min score:!min!
for /l %%i in (1,1,10) do set /a pj+=!n%%i!
set/a pj=(pj-max-min)/8&echo Average score:!pj!&pause>nulCOPY
1

评分人数

    • HAT: 感谢分享技术 + 1

TOP

返回列表