void jia(char k[N],char b[N])
{
void shuchu(char d[N]);//这是调用上面的输出函数
void nixu(char p[N]);//这是调用上面的令数组逆序存放的函数
int i,m,sign=0;
char j[N];
for(i=0;i
j[i]='\0';//让j[N]这个数组的元素都初始化为‘\0'
for(i=0;(k[i]!='\0'||b[i]!='\0');i++)//如果两个数组都不结束
{
if(sign==1)
{
j[i]=k[i]+b[i]-95;
sign=0;
}
else
j[i]=k[i]+b[i]-96;
if(j[i]>9)
{
j[i]=j[i]-10;
sign=1;
}
}
if(sign==1)
j[i]=1;
nixu(j);
shuchu(j);
} //为什么运行出来后只有两个加数位数相同时才有效 而且如果加数中出现了100这样含有0的数字,就错误了呢?
下面是完整的程序
#include
#define N 200
void nixu(char p[N])
{
int i,j;
char t;
for(i=0;p[i]!='\0';i++)
{}
for(j=0;j
{
t=p[j];
p[j]=p[i-j-1];
p[i-j-1]=t;
}
}
void shuchu(char d[N])
{
int k;
for(k=0;d[k]!='\0';k++)
printf("%d",d[k]);
}
void jia(char k[N],char b[N])
{
void shuchu(char d[N]);
void nixu(char p[N]);
int i,m,sign=0;
char j[N];
for(i=0;i
j[i]='\0';
for(i=0;(k[i]!='\0'||b[i]!='\0');i++)
{
if(sign==1)
{
j[i]=k[i]+b[i]-95;
sign=0;
}
else
j[i]=k[i]+b[i]-96;
if(j[i]>9)
{
j[i]=j[i]-10;
sign=1;
}
}
if(sign==1)
j[i]=1;
nixu(j);
shuchu(j);
}
void main()
{
char a[N],b[N],c;
int m,k,*q;
for(m=0;((c=getchar())!='\n');m++)
a[m]=c;
for(k=m;k
a[k]='\0';
for(m=0;((c=getchar())!='\n');m++)
b[m]=c;
for(k=m;k
b[k]='\0';
shuchu(a);
shuchu(b);
nixu(a);
nixu(b);
shuchu(a);
shuchu(b);
printf("\n");
jia(a,b);
}