一个小的C语言问题

#include<stdio.h> void 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);     /*输出结果*/ }

在歌星大奖赛中,有10个评委为参赛的选手打分,分数为1~100分。选手最后得分为:去掉一个最高分和一个最低分后其余8个分数的平均值。请编写一个程序实现。
不能很好的理解这个程序,望高人指教!~
#include<stdio.h>
void main()
{
int integer,i,max,min,sum;
max=-32768;
min=32767;
sum=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);
}

max=-32768;
min=32767;
这里不好理解!
还有这个for语句与printf("Input number %d=",i)和后面可以连续输入10个数的问题!

#include<stdio.h>
void main() {
int integer,i,max,min,sum;
max=-32768;// 先把max置为最小整型数以便比较
min=32767;//同max
sum=0; //sum置零以便累加求和
for(i=1;i<=10;i++) //for循环的作用是读入10个评分,分别求出最大和最小值
{
printf("Input number %d=",i);
scanf("%d",&integer);
sum+=integer; //每个数都累加
if(integer>max)//每个数与max比较,读完10个数求出最大值
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); //由于累加的是10个数所以结果要减掉最大值和最小值
}
有什么不好理解的?
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-01-30
max和min可以怎么设:
max=0; min=100;
//假如:
十个分数为10 20 30 40 50 60 70 80 90 100
那么,经过if(integer>max)的比较
第一次比较 if(10>0) 所以max变为10(max=10)
第二次比较 if(20>10) 即max=20
最后比较 if(100>90) 所以最终的最高分是100
最小值同上,所以最低分是10;

都说了分数为1到100 那就没必要设
max=-32768,min=32767

for(i=1;i<=10;i++)
printf("Input number %d=",i)
i=1的时候显示 "Input number 1"
i=2的时候显示 "Input number 2"
...
...
i=10的时候显示 "Input number 10" 就是一个循环.
第2个回答  2008-01-30
void main()
{
int integer,i,max,min,sum;
max=-32768; /*max为最大值,定位整型的下界(因为不可能比它小)*/
min=32767; /*min为最小值,定位整型的上界(因为不可能比它大)*/
sum=0; /*和定为0*/
for(i=1;i<=10;i++)
{
printf("Input number %d=",i);
scanf("%d",&integer); /*数据一次读入并处理*/
sum+=integer; /*累加求和*/
if(integer>max)max=integer; /*通过当前数据比较之前最大值,若大于把此值赋给max*/
if(integer<min)min=integer; /*通过当前数据比较之前最小值,若小于把此值赋给min*/
}
printf("Canceled max score:%d\nCanceled min score:%d\n",max,min); /*打印最大值和最小值*/
printf("Average score:%d\n",(sum-max-min)/8);
/*计算打印平均值*/
}
第3个回答  2008-01-30
#include<stdio.h>
void main()
int integer,i,max,min,sum;
max=-32768;min=32767; /*max、min赋初值*/
sum=0; /*存放所有数的和*/
for(i=1;i<=10;i++)
{
printf("Input number %d=",i);
scanf("%d",&integer);
sum+=integer; /*累加得10个数和*/
if(integer>max)max=integer;/*保证max中始终是最大值,方便后面去除*/
if(integer<min)min=integer; /*保证min中始终是最小值,方便后面去除*/
}
printf("Canceled max score:%d\nCanceled min score:%d\n",max,min); /*去除最大最小值*/
printf("Average score:%d\n",(sum-max-min)/8);
}

PS:楼主注意下格式
第4个回答  2008-01-30
这个程序的已经把思路描述得很好了,不能理解说明你对算法都没想明白。
相似回答