user-0 提问: C语言实现高精度整数加减法

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: // 好吧， 这样你就可以输入 1 1 / 2 2。得到。2/ 4了 #include <stdio.h> #include <string.h> #define MAX 100 int main() {     char  a[MAX+2]={'0'}, b[MAX+2]={'0'};     int x;      //printf("Please Input a and b:\n");     while ( 2==  scanf("%s%s", &a[1], &b[1])) { // 空出来第一个位置，保留给可能出现的最高位的进位    // printf("array status:\na=%s\nb=%s\n",a,b); // 刚输入手的数组情况     int len1 = strlen(a); // a的长度     int len2 = strlen(b); // b的长度     int len = len1<len2 ? len2 : len1; // a和b中最长是多长      if (len1>len2) {//移动b和a对齐尾巴         for (x=0; x<=len2; x++) // 移动             b[len-x]=b[len2-x];         for (x=0;x<len1-len2;x++) // 空出的头用‘0’填补             b[x+1]='0';     } else if (len1<len2) { // a没有b长， 这里要移动a来对齐b的尾巴         for (x=0; x<=len1; x++)             a[len-x]=a[len1-x];         for (x=0;x<len2-len1;x++)             a[x+1]='0';     };     //printf("After Move A:\na=%s\nb=%s\n",a,b); // 尾巴对齐后的数组情况      //printf("Begin Add....\n"); //开始做加法， 把结果直接保存在a数组当中     int t, c=0;     for ( x=len-1; x>=0; x--) {         t = a[x]-'0'  + b[x]-'0' + c; // c是进位         c = t>=10 ? 1 : 0;         t %= 10;         a[x] = t + '0';     };      //printf("\nResult in a is : %s\n", a); // 加法执行完后a数组的情况     if ( a[0] == '0')  // a+b最高位没有进位         //printf("Result is: %s\n",&a[1]); // 从1开始输出数组         printf("%s\n", &a[1]);     else         //printf("Result is: %s\n",a);     // 最高位有进位，从0开始输出         printf("%s\n", a);     };     return 0; }

user: user-0
content: 引用 6 楼 寻开心的回复:?? 你的测试数据是什么啊  ？？？ 把测试的数给一下 只给出了1 1和2 2，后台的数据看不出来

user: user-2
content: ?? 你的测试数据是什么啊  ？？？ 把测试的数给一下

user: user-0
content: 引用 4 楼 寻开心 的回复:#include <stdio.h> #include <string.h> #define MAX 100 int main() {     char  a[MAX+2]={'0'}, b[MAX+2]={'0'};     int x;      printf("Please Input a and b:\n");     scanf("%s%s", &(a[1]), &(b[1])); // 控制第一个位置保留给可能出现的进位     printf("array status:\na=%s\nb=%s\n",a,b);     int len1 = strlen(a); // a的长度     int len2 = strlen(b); // b的长度     int len = len1<len2 ? len2 : len1; // a和b中最长是多长      if (len1>len2) {//移动b和a对齐尾巴         for (x=0; x<=len2; x++) // 移动             b[len-x]=b[len2-x];         for (x=0;x<len1-len2;x++) // 空出的头用‘0’填补             b[x+1]='0';         printf("After Move B:\na=%s\nb=%s\n",a,b);     } else if (len1<len2) {         for (x=0; x<=len1; x++)             a[len-x]=a[len1-x];         for (x=0;x<len2-len1;x++)             a[x+1]='0';         printf("After Move A:\na=%s\nb=%s\n",a,b);     };     printf("Begin Add....\n");     int t, c=0;     for ( x=len-1; x>=0; x--) {         t = a[x]-'0'  + b[x]-'0' + c; // c是进位         c = t>=10 ? 1 : 0;         t %= 10;         a[x] = t + '0';     };      printf("\nResult in a is : %s\n", a);     if ( a[0] == '0')         printf("Result is: %s\n",&a[1]);     else         printf("Result is: %s\n",a);     return 0; } 没有指针都是数组了，还哪儿不清楚一直都显示答案错误诶

user: user-2
content: #include <stdio.h> #include <string.h> #define MAX 100 int main() {     char  a[MAX+2]={'0'}, b[MAX+2]={'0'};     int x;      printf("Please Input a and b:\n");     scanf("%s%s", &(a[1]), &(b[1])); // 控制第一个位置保留给可能出现的进位     printf("array status:\na=%s\nb=%s\n",a,b);     int len1 = strlen(a); // a的长度     int len2 = strlen(b); // b的长度     int len = len1<len2 ? len2 : len1; // a和b中最长是多长      if (len1>len2) {//移动b和a对齐尾巴         for (x=0; x<=len2; x++) // 移动             b[len-x]=b[len2-x];         for (x=0;x<len1-len2;x++) // 空出的头用‘0’填补             b[x+1]='0';         printf("After Move B:\na=%s\nb=%s\n",a,b);     } else if (len1<len2) {         for (x=0; x<=len1; x++)             a[len-x]=a[len1-x];         for (x=0;x<len2-len1;x++)             a[x+1]='0';         printf("After Move A:\na=%s\nb=%s\n",a,b);     };     printf("Begin Add....\n");     int t, c=0;     for ( x=len-1; x>=0; x--) {         t = a[x]-'0'  + b[x]-'0' + c; // c是进位         c = t>=10 ? 1 : 0;         t %= 10;         a[x] = t + '0';     };      printf("\nResult in a is : %s\n", a);     if ( a[0] == '0')         printf("Result is: %s\n",&a[1]);     else         printf("Result is: %s\n",a);     return 0; } 没有指针都是数组了，还哪儿不清楚

user: user-3
content: 只是加减法，没什么技术含量，模拟一下手算的步骤，用数组实现，网上稍微查一下，自力更生