匿名用户
1级
2014-06-30 回答
vs2008测试通过,请采纳
#include
#include
#define N 20
void addmain(char s1[N],char s2[N],int sResult[N]);
void main()
{
int sResult[N+1];
int x;
char s1[N],s2[N];
printf("请选择运算类型,加输入1,减输入2:");
scanf("%d",&x);
switch(x)
{
case 1:
printf("你选择了加法,请输入两个整数:");
scanf("%s%s",s1,s2);
printf("\n%s + %s",s1,s2);
addmain(s1,s2,sResult);
break;
case 2:
printf("你选择了减法");
break;
default:
printf("error");
}
}
void addmain(char s1[N],char s2[N],int sResult[N+1])
{
int sa[N],sb[N];
int i,x;
int *p3;
char *p1,*p2;
p1=s1;
p2=s2;
p3=sResult;
i=0;
*(p3+1)=0;
while(*(p1+i)!='\0' && *(p2+i)!='\0' && i<=(N+1))
{
x=*(p3+i+1)+(*(p1+i)-48)+(*(p2+i)-48);
if (x>9)
{
*(p3+i+1)=x-10;
*(p3+i+1+1)=1;
}
else
{
*(p3+i+1)=x;
*(p3+i+1+1)=0;
}
i++;
}
if (*(p1+i)=='\0')
{
while(*(p2+i)!='\0' && i<=(N+1))
{
x=*(p3+i+1)+(*(p2+i)-48);
if (x>9)
{
*(p3+i+1)=x-10;
*(p3+i+1+1)=1;
}
else
{
*(p3+i+1)=x;
*(p3+i+1+1)=0;
}
i++;
}
}
else
{
while(*(p1+i)!='\0' && i<=(N+1))
{
x=*(p3+i+1)+(*(p1+i)-48);
if (x>9)
{
*(p3+i+1)=x-10;
*(p3+i+1+1)=1;
}
else
{
*(p3+i+1)=x;
*(p3+i+1+1)=0;
}
i++;
}
}
*p3=i;
i=0;
printf("结果为:");
while(i
{
printf("%d",*(p3+*p3-i));
i++;
}
}