题目描述
输入n个成绩,打印出所有低于平均分的分数(注意:ave = s/n中s 为float或ave = (float)s/n)。
输入
多个测试数据每个测试数据一行,在这行中先输入分数的个数n(1<=n<=100),然后紧跟着输入n个整数(代表分数)
输出
对于每个测试数据,输出一行按照输入顺序输出所有低于(<)平均分的分数,中间用一个空格隔开,如果没有低于平均分的那么只输出一个空行
样例输入 Copy
3 40 50 60 2 90 80 5 10 10 90 80 80
样例输出 Copy
40 80 10 10
本人代码如下:
#include<stdio.h>
int main()
{
int n;
while(scanf("%d",&n)!=EOF){
int a[n],count=0;
float average=0.0,sum=0.0; //注意数据类型
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
sum+=a[i];
}
average=sum/n;
for(int i=0;i<n;i++){ //遍历输出小于平均的分数,并且注意空格位置
if(a[i]<average&&count==0){
printf("%d",a[i]);
count=1;
}
else if(a[i]<average&&count==1)
printf(" %d",a[i]);
}
printf("\n");
}
return 0;
}
第二种方法,使用第二个数组b[count]装载符合条件的数
#include<stdio.h>
int main()
{
int n;
while(scanf("%d",&n)!=EOF){
int a[n],b[n],count=0;
float average=0.0,sum=0.0;
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
sum+=a[i];
}
average=sum/n;
for(int i=0;i<n;i++)
if(a[i]<average){
b[count]=a[i];
count++;
}
if(count==0)
printf("\n");
else if(count==1)
printf("%d\n",b[0]);
else if(count>1){
for(int i=0;i<count-1;i++)
printf("%d",b[i]);
printf(" %d\n",b[count-1]);
}
}
return 0;
}