求问一道C语言编程题

题目描述现有一堆非零整数,要求统计其中正数、负数的个数以及它们的平均值。输入输入一系列整数,仅有最后一个数字是0,表示输入的结束。所有数据以及它们的和都在int的表示范围... 题目描述
现有一堆非零整数,要求统计其中正数、负数的个数以及它们的平均值。

输入
输入一系列整数,仅有最后一个数字是0,表示输入的结束。所有数据以及它们的和都在int的表示范围之内。

输出
输出有2行。如果有负数,第一行输出负数的个数和平均值,否则第一行输出0;如果有正数,第二行输出正数的个数以及平均值,否则第二行输出0。每行输出如果有2个数,则用空格隔开。平均值只保留2位小数。

样例输入
1 2 3 4 -1 -2 -3 -4 0
样例输出
4 -2.50
4 2.50
展开
 我来答
X80801
推荐于2016-11-08
知道答主
回答量:14
采纳率:0%
帮助的人:15.3万
展开全部
#include <stdio.h>
#include <math.h>

void main()
{
int n,a[100],b[100],c[100];
float sum,sum1; //正数,负数和
sum=0;
sum1=0;
int zhengshu,fushu; //正数,负数个数
zhengshu=0;
fushu=0;
float avg,avg1; //平均值
scanf("%d",&n);
for(int i=0;i<n+1;i++)
{
scanf("%d",&a[i]);
if(a[i]==0)
break;
if(a[i]>0)
{
zhengshu++;
sum+=a[i];
}

if(a[i]<0)
{
fushu++;
sum1+=a[i];
}
}
avg=sum/zhengshu;
avg1=sum1/fushu;
printf("%d %.2f",zhengshu,avg);
printf("\n");
printf("%d %.2f",fushu,avg1);
printf("\n");

}
太叔青芬俞环
2020-03-12 · TA获得超过3.7万个赞
知道大有可为答主
回答量:1.3万
采纳率:34%
帮助的人:751万
展开全部
我给你写半个答案希望你能采纳,并落到实处
输入、输出,数据存储你自己解决,我就给你说说我觉得可行的实现判别的算法。
我们用一个数据组来存储得到的各自出牌的结果,接下来定义三个计数变量比如a、b、c,分别记录得到的s有几个,p有几个,r有几个(用循环的swich语句就可以实现),然后判别结果:
分布判别a*b*c是否为0,如果不是0,代表各种出牌结果都有,也就是没有有胜利者,结果1;
如果a*b*c是0,那么判别a*b+a*c是否为0,如果为0代表只有一种结果,也就是平局,结果2;
如果a*b*c是0,a*b+a*c不为0,那么代表只有两种出牌结果,也就是有输有赢,那么就看看那种牌没出,比如:a=0的话,代表没有s,那么久输出出p牌的为赢家,出r牌的为输家;
b=0的话,代表没有p,那么出r牌的输出为赢家,出s牌的输出为输家;
c=0的话,带表没有r,那么出s牌的输出为赢家,出p牌的输出为输家。
举例:比如的到一个8人的一次游戏结果
[s,s,s,p,p,r,r,p],
那么a=3,b=3,c=2
判别出来a*b*c=18不为零,也就是结结果1;
[s,s,s,p,p]
a=3,b=2,b=0
判别a*b*c=0,
判别a*b+a*c=6,
判别a!=0,b!=0,c=0,
判别结果是
s,s,s赢家,p,p输家。
你都开始接触比较深层的程序了,输入,输出应该对你不难吧,而且费劲心思打这么多字,肯定还是想有所收获,我就不剥夺你思考的机会,不直接给答案了哈。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式