两种方法解决问题 B: 零起点学算法87——打印所有低于平均分的分数

 

题目描述

输入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;
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值