这个还没有完全改好,没有考虑在减法时结果是负数的情况。而且思路写的挺混乱的
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void arithmetic(char *pInputStr, long lInputLen, char *pOutputStr);
void main()
{
char str1[20], str2[20];
long len;
printf("please input the arithmetic:");
gets(str1);
len=strlen(str1);
puts(str1);
arithmetic(str1,len, str2);
puts(str2);
}
void arithmetic(char *pInputStr, long lInputLen, char *pOutputStr)
{
int num1=0, num2=0,score,shi,m=0;
char *p1=pInputStr, *p2=pOutputStr;
char yunsuan[10];
char *py=yunsuan;
while(*p1!=' ')
{
num1=num1*10+(*p1)-'0';
p1++;
}
p1++;
//到此第一个数处理完毕
while (*p1!=' ')
{
*py=*p1;
py++;
p1++;
}
p1++;
*py='\0';//
py=yunsuan;
while (*p1!=' ' && *p1!=0)
{
num2=num2*10+(*p1)-'0';
p1++;
}
py=yunsuan;
py++;
switch (*py)
{
case '\0':
break;
default:
score=0;
}
py--;
switch(*py)
{
case '+':
score=num1+num2;
break;
case '-':
score=num1-num2;
break;
default:
score=0;
}
if (score<10)
{
*pOutputStr='0'+score;
}
else if (score>=10 && score <100)
{
*p2='0'+score/10;
p2++;
m=score%10;
*p2='0'+m;
}
else
{
*p2='0'+score/100;
shi=score%100;
*(++p2)='0'+shi/10;
*(++p2)='0'+shi%10;
}
*(++p2)='\0';
}