代码补充:
strlen(str)函数,计算字符串 str 的长度,直到空结束字符,但不包括空结束字符。使用时头文件需要加上#include<string.h>
#include<stdio.h>
#include<string.h>
#define N 1000
//判断字符串是否为数值串,是返回1,否返回0
int alldigit(char *s)
{
while(*s)
{
if(!(*s>='0'&&*s<='9'))
return 0;
s++;
}
return 1;
}
//将数字串s拆分成单个数字逆序保存在整形数组
void divide(char s[],int p[])
{
int len,i;
len=strlen(s);
for(i=0;i<len;i++)
{
p[len-1-i]=s[i]-'0';//改成数字
}
}
//c=a+b
int add(int a[],int b[],int c[],int len)
{
int i;
for(i=0;i<len;i++)
{
c[i]+=a[i]+b[i];//相加
if(c[i]>=10)//需要进位
{
c[i+1]+=c[i]/10;
c[i]=c[i]%10;
}
}
if(c[len]!=0)//最高位也进位
len++;
return len;
}
int main()
{
char s[N];
int a[N]={0},b[N]={0},c[N]={0},len1,len2,len,i;
//a,b,c,s长度均可自定义,确保够长
printf("输入字符串1:\n");
do
{
gets(s);//gets获取元素
if(alldigit(s))//判断元素是否是数值型
break;
printf("error!再次输入字符串1\n");
}while(1);
len1=strlen(s);//求长
divide(s,a);//将数字串s拆分成单个数字,放到整形数组a中
printf("输入字符串2:\n");
do
{
gets(s);
if(alldigit(s))
break;
printf("error!再次输入字符串2\n");
}while(1);
len2=strlen(s);
divide(s,b);//将数字串s拆分成单个数字,放到整形数组b中
len=len1>len2?len1:len2;//判断谁长,len为a,b之间较长的数字长度
len=add(a,b,c,len);
printf("相加之后:");
for(i=len-1;i>=0;i--)//逆序输出
printf("%d",c[i]);
return 0;
}