做出来了 呵呵!睡觉时想到的思路 然后用了1个多小时写出来的
#include"stdio.h"
main()
{
int i=-1,n=-1,a,b,fu=1,num[80],fnum[80];
/*定义i为统计正数的个数n 为统计负数的个数*/
float sumz=0,sumf=0,avz=0,avf=0;
char ch1='t',ch;
/*数组num放正数,数组fnum放负数;fu用来标记负数*/
while((ch=getchar())!='*')
/*while循环输入字符,循环体对每个字符进行处理*/
{
if(fu!=-1&&(ch>='0'&&ch<='9'))
/*处理正数*/
{
if(ch1<='0'||ch1>='9')
{
i=i+1;
/*i控制数组*/
num[i]=(int)(ch-'0');
}
if(ch1>='0'&&ch1<='9')
/*将正数存入数组*/
{
num[i]=num[i]*10+(int)(ch-'0');
}
}
if(ch=='-'||(fu==-1&&(ch>='0'&&ch<='9')))
/*处理负数*/
{
if(ch=='-')
/*标记负数,n控制fnum数组*/
{
fu=-1;
n=n+1;
fnum[n]=0;
}
else
{
fnum[n]=fnum[n]*10+(int)(ch-'0');
/*将负数的绝对值放入数组fnum*/
}
}
if(fu==-1&&(ch<'0'||ch>'9')&&ch!='-')
/*当一个负数结束,将符号标志为1*/
fu=1;
ch1=ch;
/*记住ch用以在下个ch时判断一个的开始*/
}
for(a=0;a<=i;a++)
{
sumz=sumz+num[a];
/*求所有正数的的和*/
}
for(b=0;b<=n;b++)
{
sumf=sumf+fnum[b];
/*求所有负数的和*/
}
printf("在你输入的字符串中有\n正数: %d个\n负数: %d",i+1,n+1);/*输出正数和负数的个数*/
if(i+1!=0)
/*计算平均值*/
avz=sumz/(i+1);
if(n+1!=0)
avf=-sumf/(n+1);
printf("\n正数的平均数为: %.4f\n负数的平均数为: %.4f\n",avz,avf); /*输出正数和负数的平均数*/
}