N 是一个正整数。如果 N 的所有奇数位的数位和等于所有偶数位的数位和,则称它是一个“双螺旋数”。 例如 12375 的所有奇数位的数位和是9,同时它的所有偶数位的数位和也是9,则 12375 就是一个双螺旋数。下面 的C++代码用于判断输入的 N 是否为双螺旋数。空白处应该填入的代码是( )。 int i, N, N1=0, N2=0, N0; cin >> N; N0 = N; while (N){ _________________________ _________________________ } if(N1 == N2) cout << N0 << "是双螺旋数" << endl;
A:N1 += N%10, N /= 10; N2 += N%10, N /= 10;
B:N1 += N/10, N /= 10; N2 += N/10, N /= 10;
C:N1 += N%10, N %= 10; N2 += N%10, N %= 10;
D:N1 += N/10, N %= 10; N2 += N/10, N %= 10;
正确答案:A
答案解析
从最低位开始逐位提取数字,奇数位累加到N1,偶数位累加到N2。每次取模10得到当前个位数,加入对应和后将N整除10右移一位。需交替处理奇偶位,每轮循环完成两位的处理。循环继续直到N变为0。取模运算用于获取当前位值,除法用于数位右移,两者必须配合使用以正确分解各位数字。
试卷来源:202603 CCF-GESP编程能力等级认证C++一级真题