小明和弟弟在玩一个拼数字游戏,游戏规则是:二人各写一个两位正整数 M 和 N ;然后将较大的数字放 在较小的前面,拼成一个4位数;将这个4位数除以3的余数添加到4位数的后面,得到一个5位数;最后判断这个5位 数能否被14整除。下面的C++代码用于判断 M 和 N 是否符合全部要求,如果符合则输出 Y 否则输出 N 。例如输 入 85 和 79 ,可以拼出 85792 ,恰好是14的倍数,则输出 Y 。关于下面代码描述正确的是( )。 int M, N, Q; cin >> M >> N; if(M > N) // L1 Q = M*100+N; else Q = N*100+M; if((Q*10+Q%3) % 14 == 0) // L2 cout << "Y"; else cout << "N";
A:代码段不能完成正确判断
B:L1行代码中条件应该改为 M <= N
C:L2行代码应该改为 if ((Q*10+Q/3) % 14 == 0)
D:代码段可以不使用变量 Q ,而是在区分 M 和 N 大小后分别直接用它们来判断
正确答案:D
答案解析
首先比较M和N的大小,将较大者作为前两位,较小者作为后两位,构成一个四位数Q。该过程通过判断M>N决定Q的构成方式。接着计算Q除以3的余数,即Q%3,并将其作为个位拼接到Q末尾,形成一个新的五位数,其值为Q*10+(Q%3)。最后判断该五位数是否能被14整除,即(Q*10 + Q%3) % 14是否等于0。若成立则输出Y,否则输出N。整个逻辑依赖Q正确表示拼接后的四位数,并在后续运算中正确附加余数位。
试卷来源:202603 CCF-GESP编程能力等级认证C++一级真题