C语言 高手帮下忙

#include <stdio.h>
int main()
{
int num,i,n,sum=0,s,max=0,min=0;
scanf("%d",&n);
scanf("%d",&num);
for(i=0; i<n; i++)
{
scanf("%d",&num);

sum = sum + num;
if(max<num)
max=num;
if(min>num)
min=num;
}

s=(sum-max-min)/(n-2);
printf("s:%.2f\n",s);
return 0;

}
求 青年歌手大奖赛中,每位评委会给参赛选手打分。选手得分规则为去掉一个最高分和一个最低分,然后计算平均得分,请编程输出某选手的得分。

Sample Input

3(评委让人数) 99 98 97

Sample Output

98.00
帮忙下看下,我C语言刚入门,好多都不懂!

1、for循环前面的scanf("%d",&num);应该去掉
2、s应声明为float型
3、min初值应该设为100或者大的分数

#include <stdio.h>
int main()
{
int num,i,n,sum=0,max=0,min=10000;
float s;
scanf("%d",&n);
for(i=0; i<n; i++)
{
scanf("%d",&num);
sum = sum + num;
if(max<num) max=num;
if(min>num) min=num;
}
s=(sum-max-min/(n-2));
printf("s:%.2f\n",s);
return 0;

}
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-04-08
#include<stdio.h>
int main()
{
int i,sum=0,n,num,max=0,min=999;
float aver;
printf("评委人数是:");
scanf("%d",&n);
for(i=1; i<=n; i++)
{ printf("第 %d 位评委打的分为:",i);
scanf("%d",&num);
}
for(i=1;i<=n;i++)
{
sum=sum+num;
if(num>=max)
max=num;

if(min>num)
min=num;

}
aver=(float)(sum-max-min)/3;
printf("选手最后得分为:%f\n",aver);

}
第2个回答  2010-04-08
1 min=0的时候任何数都会比min小,所以你的程序min肯定都是0,最后计分的时候最小的分数其实没被减掉。你可以吧min初始值定义为最高分就可以参加比较了。
2 你输出的是浮点数,你定义的时候也要是浮点数。
#include <stdio.h>
int main()
{
int n,i,num,sum=0,max=0,min=100;
float s;
printf("请输入有多少评评委:");
scanf("%d",&n);
printf("请输入各位评委的分数:");
for(i=0; i<n; i++)
{
scanf("%d",&num);
if(max<num)
max=num;
if(min>num)
min=num;
sum = sum + num;

}

s=(sum-max-min)/(n-2);
printf("平均分是:%.2f\n",s);
return 0;

}

C语言啊。。字符串。。麻烦高手们帮下忙。。有点急。速度快点还能多赏点...
include<string.h> void main(){ char str[10];while( scanf("%s",str) != EOF)printf("%s\\n",str);} 参考资料:chat

c语言几个小小的问题 高手帮个忙
1. C 逗号在这里不合法 2. 输出2,虽然x是浮点型,但是10和4都是整型,所以先按整型运算,再将结果转换为浮点型 3. (++x, y++)表示这是一个逗号表达式,逗号表达式取最后一个表达式的值,也就是y++的值,所以输出结果是3和3 4. printf("%8.4g\\n",b); 这句输出8756,%g表示按%e或者%...

C语言高手进来帮一下忙啊 两个程序有什么不一样吗?为什么结果不同呢...
参考以下吧, fopen的参数 r 以只读方式打开文件,该文件必须存在。r+ 以可读写方式打开文件,该文件必须存在。rb+ 读写打开一个二进制文件,允许读数据。rw+ 读写打开一个文本文件,允许读和写。w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。w+ ...

C语言高手帮帮我!!!
i++=t*=i可以这样算.先算t*=i => t=(t*i); 再算 i++=t; => (i=t;i++;)第二题:第一次循环.k=1; if不运行得到a = b =s[1]-'0' 的ASC码.第二次循环k=2(也就是最后一次循环)=> a=s[1]-'0'+s[2]-'0'都用ASC码运算....

求C语言高手帮我完成一下大学编程作业
int main(){ struct mydata { int year;int month;int day;} date;int days=0,month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};printf("Input year,month and day:\\n");scanf("%d%d%d",&date.year,&date.month,&date.day);int i;for(i=0;i<date.month;i++)days+=...

编程牛人帮下忙,实在不会,小弟谢了!!!
long factorial(int num){ int i, ret = 1;for (i = 1; i <= num; ++i)ret *= i;return ret;} void main(){ int i, sum = 0;for (i = 1; i <= 10; ++i)sum += factorial1(i);printf("%d\\n", sum);} 2.include <stdio.h> void main(){ int a[20], max, ...

请C语言大神帮个忙
int mat[max][max],vis[max][max];void dfs(int x,int y){ if(!mat[x][y] || vis[x][y]) return;vis[x][y]=1;dfs(x-1,y-1);dfs(x-1,y+1);dfs(x-1,y);dfs(x,y-1);dfs(x,y+1);dfs(x+1,y-1);dfs(x+1,y+1);dfs(x+1,y);} void main(){ int i...

请c语言高手帮忙,写一个程序,51单片机显示1234,2S后显示5678 ,一直循环...
include<reg51.h> define uchar unsigned char bit flag=1;uchar j,k;uchar code tab[]={ 0x06,\/*1*\/ 0x5B,\/*2*\/ 0x4F,\/*3*\/ 0x66,\/*4*\/ 0x6D,\/*5*\/ 0x7D,\/*6*\/ 0x07,\/*7*\/ 0x7F,\/*8*\/ };sbit P2_0=P2^0;sbit P2_1=P2^1;sbit P2_2=P2^2;sbit P2_3=P2...

c语言高手朋友们 进来帮个忙
我算了一下,到第二步后,结果只有126*126=15876种组合,是不是我的理解错了?我的理解是:从0123456789中分出5个数后,另5个数也就定了,所以只有C(10,5)=252个,其中有一半是前后相同的,所以只有126个,两组126个再两两组合,共有126*126=15876.按照这个思路,我写了一段程序,结果算...

关于C语言中if else的用法,高手来帮下忙
语句1;else if(表达式2)语句2;else if(表达式3)语句3;…else if(表达式m)语句m;else 语句n;其语义是:依次判断表达式的值,当出现某个值为真时,则执行其对应的语句。然后跳到整个if语句之外继续执行程序。 如果所有的表达式均为假,则执行语句n。然后继续执行后续程序。 if-else-if语句...

相似回答
大家正在搜