阅读程序(第二题):高精度加法(含前导零输出)

vj792140 组合题 共 个子题

本题输入的两个数均为非负整数,位数不超过 100000,可能包含前导零。

#include <algorithm>
#include <iostream>
#include <string>
using namespace std;
int a[100007], b[100007], c[100007], carry[100007];
string input_str;
int a_len, b_len;
int main() {
  cin >> input_str;
  a_len = input_str.size();
  for (int i = 0; i < a_len; i++) {
    a[i] = input_str[a_len - i - 1] - '0';
  }
  cin >> input_str;
  b_len = input_str.size();
  for (int i = 0; i < b_len; i++) {
    b[i] = input_str[b_len - i - 1] - '0';
  }
  carry[0] = 0;
  for (int i = 0; i < max(a_len, b_len) + 1; i++) {
    c[i] = a[i] + b[i] + carry[i];
    if (c[i] >= 10) {
      carry[i + 1] = 1;
      c[i] -= 10;
    } else {
      carry[i + 1] = 0;
    }
  }
  for (int i = max(a_len, b_len); i >= 0; i--) {
    cout << c[i];
  }
  cout << endl;
  return 0;
}

子题 判断题

当输入为 123 456 时,程序输出为 0579。( )

A

正确

B

错误

子题 判断题

假设输入的两个数均不含前导零,则程序输出的结果也一定不会含有前导零。( )

A

正确

B

错误

子题 判断题

将第 21 行改为 c[i]=a[i]+b[i]; 后,程序输出的结果一定比原来的结果小。( )

A

正确

B

错误

子题 单选题

当输入为 12345 678 时,输出为( )

A

012923

B

013023

C

13023

D

130230

子题 单选题

将第 22 行的 if (c[i]>=10) 改为 if (c[i]>10) 后,当输入为 95 15 时,输出为( )

A

01010

B

110

C

140

D

1410

子题 单选题

假设输入的两个数均为 n 位正整数(不含前导零),且它们的和小于 10^n,则程序输出的字符串一定满足( )

A

第一个字符一定不为 '0'

B

长度一定为 n

C

长度一定为 n + 1,且第一个字符为 '0'

D

长度可能为 n + 2

正在加载题目数据…
已答 /
子题
该题型需在试卷/作业中作答,单题练习暂不支持
答案解析
讨论
发布
登录后参与讨论 立即登录
发布讨论需先绑定并验证手机号 去绑定手机号
加载中…
我
我
回复 @
回复 @
发送
还没有人讨论,来发表第一条吧