C语言 求一串数字的平均值

来源:互联网 发布:超级玛丽java版 编辑:程序博客网 时间:2024/06/05 04:06

对上一篇求累加运算的程序修改一下就好啦:

/**输入一串加法:1+2+3+4+23+34+....输出总和*/#include<stdio.h>//#include<stdlib.h>#include<string.h>int isNumber(char c){    return (c>='0'&&c<='9');}int isAdd(char c){    return (c=='+');//如果是加号的话}void main(){    int flag=1;    int *pflag=&flag;    int count=1;    int *pcount=&count;    int sum=0;    while(flag)    {        sum=add(pflag,pcount);        printf("---sum=%d\n",sum);        printf("---avg=%.2lf\n",(double)sum/(count-1));    }}int add(int* pflag,int *pcount){    int sum=0;    int temp=0;    int this_Num=0;    char ch;//读入一个字符    int again;    printf("-----------------------------累加求和运算------------------------------------\n");    printf("  输入“回车”返回结果,并进行下一趟求和(例:1+2+3...\"回车\")\n");    printf("  输入“#”   返回结果,并结束求和运算  (例:1+2+3...#)\n");    printf("-----------------------------------------------------------------------------\n");    printf("输入累加公式:\n");    while(1)//如果读入的是一个数字    {        ch=getchar();        if(isNumber(ch))        {            this_Num=((int)ch-48);//把字符转换成数字//            printf("this_Num=%d\n",this_Num);//            printf("temp*10=%d\n",temp*10);            temp=temp*10+this_Num;//存放到temp中//            printf("temp=%d\n",temp);        }        if(isAdd(ch)||ch=='\n'||ch=='#')//如果读入的是加法        {            sum+=temp;//求和            *pcount=(*pcount)+1;//求和计数,也就是元素的个数//            printf("*pcount=%d\n",*pcount);            temp=0;//            printf("sum=%d\n",sum);            if(ch=='\n')                break;            if(ch=='#')                *pflag=0;//函数内通过指针来控制外部的循环变量,把外部循环控制符改变,使得循环终止        }    }    //输出结果//    printf("---sum=%d\n",sum);    return sum;}

测试:

-----------------------------累加求和运算------------------------------------  输入“回车”返回结果,并进行下一趟求和(例:1+2+3..."回车")  输入“#”   返回结果,并结束求和运算  (例:1+2+3...#)-----------------------------------------------------------------------------输入累加公式:1+2+3+4---sum=10---avg=2.50-----------------------------累加求和运算------------------------------------  输入“回车”返回结果,并进行下一趟求和(例:1+2+3..."回车")  输入“#”   返回结果,并结束求和运算  (例:1+2+3...#)-----------------------------------------------------------------------------输入累加公式:1+2+3+4+5+6+7+8+9+10---sum=55---avg=3.93-----------------------------累加求和运算------------------------------------  输入“回车”返回结果,并进行下一趟求和(例:1+2+3..."回车")  输入“#”   返回结果,并结束求和运算  (例:1+2+3...#)-----------------------------------------------------------------------------输入累加公式:1+2+3+4+5+6+7+8+9+10#---sum=55---avg=2.20Process returned 0 (0x0)   execution time : 112.445 sPress any key to continue.