c语言的疑问,谁来解答一下啊

来源:百度知道 编辑:UC知道 时间:2024/07/02 18:52:13
老师叫我们编个程,题目是,在一个比赛中,有十名评委,每名评委都会给每个选手打出一个1到100的分数,而记分的原则是:“去掉一个最高分,去掉一个最低分,取余下8个分数的平均值。”
然后叫我们编程来实现这个过程,,下面是我所编出来的程序:
#include <stdio.h>
int main()
{
int a[10],j,num,max,min,i;
double Num;
printf("Input the points:");
for (i=0;i<=9;i++)
scanf("%d",&a[i]);
max=a[0]>a[1]?a[0]:a[1];
for (j=2;j<=9;j++)
max=max>a[j]?max:a[j];
min=a[0]<a[1]?a[0]:a[1];
for (j=2;j<=9;j++)
min=min<a[j]?min:a[j];
num=a[0]+a[1]+a[2]+a[3]+a[4]+a[5]+a[6]+a[7]+a[8]+a[9]-max-min;
Num=num/8.0;
printf("%f",&Num);
return 0;
}
由于文件的格式名是cpp 所以后面还加了一个“return 0”
可是不知道怎么搞的,,老是不对,打数进去它就乱输出
谁来帮我改正一下啊

最后一个printf()函数有点问题
应该写成printf("%f",Num);
原因不要我讲吧,下次注意点啦!
补充一下:
对楼上的说法,我不敢苟同。我想楼主一定是用VC++6.0写的程序,所以对于,C++(VC++6.0当然会把C程序当成C++的)标准里面变量的生存期远比C的严格,一个循环结束,也就标志着该循环里面的定义的变量的死亡。

是这样的,关键在你的变量j上,在这个for (j=2;j<=9;j++)以后,j=10了.然后你又用j了, for (j=2;j<=9;j++)
而此时j=10,所以就不循环了.只找到最大的数,而找最小的数的循环根本就没有执行.
不能用一个变量控制两个循环

#include <stdio.h>
int main()
{
int a[10],j,num,max,min,i;
float Num;
printf("Input the points:\n");
for (i=0;i<=9;i++)
scanf("%d",&a[i]);
/*max=a[0]>a[1]?a[0]:a[1];
for (j=2;j<=9;j++)
max=max>a[j]?max:a[j];
min=a[0]<a[1]?a[0]:a[1];
for (j=2;j<=9;j++)
min=min<a[j]?min:a[j]; */
max=a[0];min=a[0];
for(i=0;i<9;i++)
{
if(max<a[i])max=a[i];
if(min>a[i])min=a[i];
}
printf("max=%d;min=%d\n",max,min);
num=a[0]+a[1]+a[2]+a[3]+a[4]+a[5]+a[6]+a[7]+a[8]