青年歌手大奖赛_评委会打分
青年歌手大奖赛中,评委会给参赛选手打分。选手得分规则为去掉一个最高分和一个最低分,然后计算平均得分,请编程输出某选手的得分。
Input
输入数据有多组,每组占一行,每行的第一个数是n(2<n<=100),表示评委的人数,然后是n个评委的打分。
Output
对于每组输入数据,输出选手的得分,结果保留2位小数,每组输出占一行。
Sample Input
3 99 98 97 4 100 99 98 97
Sample Output
98.00 98.50
这个题真的是给自己长教训了,水题,但是我一开始数组开的太小了,所以一直PE,一直实验很多次才找到最终原因= =///
#include<iostream>
#include<stdio.h>
#include<algorithm>
using namespace std;
int main()
{
int a[100], n;
double avg;
while (scanf("%d", &n) != EOF)
{
avg = 0;
for (int i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
sort(a, a + n);
for (int j = 1; j < (n-1); j++)
{
avg = (a[j] + avg);
}
printf("%.2f\n", avg/(n-2));
}
return 0;
}
偶数求和
有一个长度为n(n<=100)的数列,该数列定义为从2开始的递增有序偶数,现在要求你按照顺序每m个数求出一个平均值,如果最后不足m个,则以实际数量求平均值。编程输出该平均值序列。
Input
输入数据有多组,每组占一行,包含两个正整数n和m,n和m的含义如上所述。
Output
对于每组输入数据,输出一个平均值序列,每组输出占一行。
Sample Input
3 2 4 2
Sample Output
3 6 3 7
这个题重点就是如何从第m+1个数开始计数,所以设置一个count,同样重要的!是要注意输出格式的。。
#include<cstdio>
int main()
{
int m,n;
while(scanf("%d%d",&n,&m)!=EOF)
{
int sum=0;
int count=0;
for(int j=2;j<=2*n;j+=2)
{
sum+=j;
count++;
if(count==m||j==2*n)
{
printf("%d",sum/count);
if(j==2*n)
{
printf("\n");
}
else
{
printf(" ");
}
sum=count=0;
}
}
}
return 0;
}
数据的交换输出
输入n(n<100)个数,找出其中最小的数,将它与最前面的数交换后输出这些数。
Input
输入数据有多组,每组占一行,每行的开始是一个整数n,表示这个测试实例的数值的个数,跟着就是n个整数。n=0表示输入的结束,不做处理。
Output
对于每组输入数据,输出交换后的数列,每组输出占一行。
Sample Input
4 2 1 3 4 5 5 4 3 2 1 0
Sample Output
1 2 3 4 1 4 3 2 5
有点类似与排序吧,水题
#include<cstdio>
#include<cstring>
int main()
{
int n,a[105];
while (scanf("%d", &n) != EOF)
{
if (n == 0)
break;
int min = 105, count = 0, temp = 0;
for (int i = 0; i < n; i++)
{
scanf("%d", &a[i]);
min = a[i] < min ? a[i] : min;
}
for (int i = 0; i < n; i++)
{
count++;
if (min == a[i])
break;
}
temp = a[0];
a[0] = min;
a[count-1] = temp;
count = 0;
for (int i = 0; i < n; i++)
{
printf("%d", a[i]);
count++;
if (count < n)
{
printf(" ");
}
else
printf("\n");
}
memset(a, 0, sizeof(a));
}
return 0;
}