Stukang 2019-11-17 20:07 采纳率: 100%
浏览 1513
已采纳

C语言实现大数加法(正整数)

杭电OJ1002
输入:输入的第一行包含一个整数T(1<=T<=20),表示测试用例的数量。接下来是T行,每行由两个正整数A和B组成。注意,整数非常大,这意味着您不应该使用32位整数来处理它们。您可以假设每个整数的长度不超过1000。
输出:对于每个测试用例,您应该输出两行。第一行是“Case”,表示测试用例的编号。第二行是方程“A+B=Sum”,Sum表示A+B的结果。注意方程中有一些空格。在两个测试用例之间输出一个空行。

我拿很多种数进行了测试,在VS上都没问题。但是提交就是WRONG..wrong了一天了。下面是代码,各位前辈帮帮忙,给看看。

#include<stdio.h>
#include<string.h>
#define MAX(a,b) a>b?a:b
int main() {
    int n = 0,i,j,num=0,lengh,lengh_a1,lengh_a2,flag;
    char a1[1002], a2[1002];//字符数组存大数
    scanf("%d", &n);
    for (j = 0; j < n; j++) {
        scanf("%s%s", &a1, &a2);
        lengh_a1 = strlen(a1);//读输入到两个字符数组中的元素个数,用于转换成整形数组
        lengh_a2 = strlen(a2);
        int c1[1002] = { 0 }, c2[1002] = { 0 }, c3[1003] = { 0 };//定义在循环内部,每次都会初始化一次(在外面好像也没遇到错误)
        for (i = 0; i < lengh_a1; i++) {
            c1[i] = a1[lengh_a1 - i - 1]-48;//倒着把字符数组的元素输入到整形数组中
        }
        for (i = 0; i < lengh_a2; i++) {
            c2[i] = a2[lengh_a2 - i - 1]-48;
        }
        lengh = MAX(lengh_a1, lengh_a2);//两数组最长的长度
        for (i = 0; i <lengh; i++) {
            flag = 0;//用来看最后一次循环是否进位,在输出的时候用到了
            c3[i] = c1[i] + c2[i]+ num;//如果进位,加num
            num = 0;
            if (c3[i] >= 10) {
                c3[i + 1] = 1;//进位,因为这层循环到c3[lengh-1]为止,这样写使c3[lengh]可以获得到进位。
                num = 1;
                c3[i] -= 10;
                flag = 1;
            }
        }
        num = 0;//防止上一组数的进位Num影响到下一组数
        printf("case%d:\n",j+1);//输出
        printf("%s + %s = ", a1, a2);
        for (i = lengh + flag -1; i >= 0; i--)
            printf("%d", c3[i]);
        if (j + 1 != n) printf("\n\n");
        else printf("\n");
    }
    return 0;
}

  • 写回答

2条回答 默认 最新

  • chenxizhan1995 2019-11-19 03:04
    关注

    是不是输出格式不对,Case首字母大写?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 outlook无法配置成功
  • ¥15 Pwm双极模式H桥驱动控制电机
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换