/**
输入一串加法: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;
while(flag)
{
printf("---sum=%d\n",add(pflag));
}
}
int add(int* pflag)
{
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;//求和
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+30
---sum=36
-----------------------------累加求和运算------------------------------------
输入“回车”返回结果,并进行下一趟求和(例:1+2+3..."回车")
输入“#” 返回结果,并结束求和运算 (例:1+2+3...#)
-----------------------------------------------------------------------------
输入累加公式:
2334+123
---sum=2457
-----------------------------累加求和运算------------------------------------
输入“回车”返回结果,并进行下一趟求和(例:1+2+3..."回车")
输入“#” 返回结果,并结束求和运算 (例:1+2+3...#)
-----------------------------------------------------------------------------
输入累加公式:
1123+123#
---sum=1246
Process returned 0 (0x0) execution time : 28.876 s
Press any key to continue.