范围在int之类,我首先想到将两个数相加,将其绝对值传入字符数组,再倒序输出,相加值小于0则先输出“-”,特别注意相加值为0的情况,剩下就是格式问题,方法比较繁杂,改进空间很大。
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define MAXSIZE 1000000
typedef char * charp;
charp tran(int c,int *i);
void output(charp p,int i);
int main()
{
int a,b,c;
charp p;
scanf("%d%d",&a,&b);
c=a+b;
if(c==0)
{
printf("0");
}
else
{
int d=abs(c);
int i=0;
p=tran(d,&i);
if(c<0)
{
printf("-");
}
output(p,i);
}
free(p);
return 0;
}
charp tran(int c,int *i)
{
charp p = (charp)malloc(sizeof(char)*MAXSIZE);
while(c>0)
{
p[*i]='0'+c%10;
(*i)++;
c=c/10;
}
return p;
}
void output(charp p,int i)
{
int j=i-1;
for(j;j>=0;j--)
{
if(j<i-1&&((j+1)%3==0))
{
printf(",");
}
printf("%c",p[j]);
}
}
发现一个大触的写法:传送门