对上一篇求累加运算的程序修改一下就好啦:
/**
输入一串加法: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.20
Process returned 0 (0x0) execution time : 112.445 s
Press any key to continue.