题库首页 › GESP等级认证(C++) › 题目 25430

下面代码实现两个整数除法,其中被除数为一个“大整数”,用字符串表示,除数是一个小整数,用 int 表 示,则横线处应该填写( )。 int main(){ string s; int b; cin >> s >> b; vector a; for(char c : s){ a.push_back(c - '0'); } vector c; long long rem = 0; for(int i = 0; i < a.size(); i++){ rem = rem * 10 + a[i]; int q = rem / b; c.push_back(q); --------------------- int pos = 0; while(pos < c.size() - 1 && c[pos] == 0) pos++; for(int i = pos; i < c.size(); i++){ cout << c[i]; cout << endl; cout << rem << endl; return 0;

A:rem /= b;
B:rem %= b;
C:rem = b;
D:rem = q;

正确答案:B

答案解析

遍历被除数的每一位,将当前余数乘以10并加上该位得到新的被除数部分;计算该部分与除数的商,并将商加入结果数组;需要更新余数为当前被除数部分与除数整除后的余值,以用于下一位的计算;余数更新必须反映模运算的结果,确保后续位的正确处理;整个过程模拟手工长除法的步骤,每一步依赖前一步的余数继续向下计算。

试卷来源:202603 CCF-GESP编程能力等级认证C++五级真题

本卷相关题目

在线做题 同科目题库