freemandj 2021-01-08 09:10 采纳率: 100%
浏览 7
已结题

C、C++一道大数处理题,帮忙改一下代码,结果不对

A+B 进阶版
Description
输入为两个整数 A B请输出A+B
Input
两个数字以空格分割,如1234567 1111111
Output
输入的两个数的和
Sample Input 1 :1234567 1111111
Sample Output 1:2345678 

以下是我的代码

#include<stdio.h>
#include<iostream>
#include<math.h>
#include<string.h>
using namespace std;

int main(){
    char num1[1000];
    char num2[1000];
    char num[1000];
    int m,n;
    cin>>num1;
    cin>>num2;
    m=strlen(num1);
    n=strlen(num2);

    int i,j;
    i=m;
    j=n; 
    int k=0;
    while(i>0||j>0){
        int s1=0,s2=0;
        int flag=0;
        s1=num1[i-1]-48;
        s2=num2[j-1]-48;
        i--;
        j--;
        if(s1+s2<9){
            if(flag==0){
                num[k]=(char)(s1+s2);
            }
            else{
                s1+s2+1>9?flag=1:flag=0;
                cout<<flag;
                if(flag==0)
                    num[k]=(char)(s2+s1+1);
                 else{
                     num[k]=(char)((s1+s2+1)%10);
                     flag=1;
                 } 
            }
        
            k++;    
        }
        else{
            num[k]=(char)((s1+s2)%10);
            flag=1;
            k++;
        }
    
    }
        cout<<k;
        for(int q=k;q>=0;q--){
            cout<<num[q];
        }    
}

 

  • 写回答

11条回答 默认 最新

  • bekote 2021-01-08 09:40
    关注

    while(i>0||j>0)

     s1=num1[i-1]-48;

    s2=num2[j-1]-48;

    如果两个数位数不相等,比如i比j大,那i==0的时候,j>0,进入循环, s1=num1[i-1]-48坐标就是-1了

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

报告相同问题?

问题事件

  • 系统已结题 9月14日
  • 已采纳回答 9月6日

悬赏问题

  • ¥15 如何在sql server里完成筛选
  • ¥15 请问为什么我配置IPsec后PC1 ping不通 PC2,抓包出来数据包也并没有被加密
  • ¥200 求博主教我搞定neo4j简易问答系统,有偿
  • ¥15 nginx的使用与作用
  • ¥100 关于#VijeoCitect#的问题,如何解决?(标签-ar|关键词-数据类型)
  • ¥15 一个矿井排水监控系统的plc梯形图,求各程序段都是什么意思
  • ¥50 安卓10如何在没有root权限的情况下设置开机自动启动指定app?
  • ¥15 ats2837 spi2从机的代码
  • ¥200 wsl2 vllm qwen1.5部署问题
  • ¥100 有偿求数字经济对经贸的影响机制的一个数学模型,弄不出来已经快要碎掉了