面试题: 大数相加

来源:互联网 发布:合肥市行知学校教师 编辑:程序博客网 时间:2024/06/06 09:07

/*思想是新建两个字符串指针分别指向两串字符串的末尾数据,然后开始往前加*/

直接上程序:

/*大数相加*/#include <stdio.h>#include <string.h>#include <stdlib.h>void add(char a[],char b[]){int len_a = strlen(a);int len_b = strlen(b);char* p = a + len_a - 1;char* q = b + len_b - 1;int len = 0;int flag = 0;int temp = 0;char * c = NULL;  //建立新的字符串存储数据 int num = 0;if (len_a > len_b){c = (char*)malloc(len_a+1);   //分配空间 }else{c = (char*)malloc(len_b+1);}while(p >= a || q >= b){temp = 0;if (p >= a){temp += *p - '0';p--;}if (q >= b){temp += *q - '0';q--; }if (flag != 0){temp++;}if (temp >= 10){flag++;temp %= 10;}else{flag = 0;}*c++ = temp+'0'; num++;} if (flag != 0){*c++ = '1';num++;}while (num>=0){c--;printf("%c",*c);num--;}c++;free(c);}int main(void){char a[80];char b[80];memset(a,0,80);memset(b,0,80);printf("input a:");scanf("%s",a);printf("input b:");scanf("%s",b);add(a,b);return 0;}


原创粉丝点击