据有关资料,山东大学于 1972 年研制成功 DJL-1 计算机,并于 1973 年投入运行,其综合性能居当时全国第三位。DJL-1 计算机运算控制部分所使用的磁心存储元件由磁心颗粒组成,设计存贮周期为 μs(微秒)。那么该磁心存储元件相当于现代计算机的( )。
A: 内存。磁心存储器是早期内存,存取周期2μs。磁盘是磁表面
C++ 程序执行出现错误,不太常见的调试手段是( )。
D: 跟踪汇编码。常规调试是阅读源码/单步/输出中间,跟踪汇编码反汇编不常用
在 C++ 中,下列表达式错误的是( )。
B: cout<<'Hello,GESP!'<<endl 错误。单引号包字符串是char,不能作cout参数
C++ 表达式 10 - 3 * 2 的值是( )。
10-3*2=4。*优先于-,左结合
在 C++ 中,假设 N 为正整数 10,则 cout << (N / 3 + N % 3) 将输出( )。
N=10,10/3=3(整除),10%3=1,3+1=4。/和%同级左结合
C++ 语句 printf("6%2={%d}", 6%2) 执行后的输出是( )。
printf("6%2={%d}", 6%2): %%输出%, %d填6%2=0,得"6%2={0}"
成功执行下面的 C++ 代码,先后从键盘上输入 5 回车和 2 回车,输出是( )。
cin >> a; cin >> b; cout << a + b;
cin>>a, cin>>b两次读,输5+2a=5,b=2,5+2=7。a/b为int累加输出7
下面 C++ 代码执行后输出是( )。
01int Sum = 0; 02for (int i = 0; i < 10; i++) 03 Sum += i; 04cout << Sum;
Sum=0+1+2+...+9=45,等差求和n(n-1)/2=10*9/2=45
下面 C++ 代码执行后输出的是( )。
01int N = 0; 02for (int i = 0; i < 10; i++) 03 N += 1; 04cout << N;
for i=0..9循环10次N+=1,最终N=10
下面 C++ 代码执行后输出的是( )。
01int N = 0; 02for (int i = 1; i < 10; i += 2) { 03 if (i % 2 == 1) 04 continue; 05 N += 1; 06} 07cout << N;
for i=1,3,5,7,9: i%2==1必真,continue跳过, N+=1永不执行, N=0。continue+odd组合
下面 C++ 代码执行时输入 14+7 后,正确的输出是( )。
01int P; 02printf("请输入正整数P: "); 03scanf("%d", &P); 04if (P % 3 || P % 7) 05 printf("第5行代码%d, %d", P % 3, P % 7); 06else 07 printf("第7行代码%2d", P % 3 && P % 7);
P=14(14+7读到+停止), P%3=2真短路, P%3=2,P%7=0,输出"第5行代码2, 0"
执行下面 C++ 代码后得到的输出是( )。
01int count = 0, i, s; 02for (i = 0, s = 0; i < 20; i++, count++) 03 s += i++; 04cout << s << " " << count;
for(i=0,s=0;i<20;i++,count++)s+=i++:i每次i++i++跳2。10次循环,sum=0+1+2+...+9=45... 但输出"95 10":i序列0,2,4,...,18共10个(增量2),s+=0+2+4+...+18=90, i=20,count=10. Hmm. 让我再看:增量是i++(in体)和i++(in for尾)各一次,共+2/循环.i序列0,2,4,6,8,10,12,14,16,18(10次,i<20时i=18后i=20停).s累加i=0+2+4+...+18=90,count=10. 输出90 10 → C
下面 C++ 代码拟用于计算整数 N 的位数,比如对 123 则输出 123是3位整数,但代码中可能存在 bug。下面有关描述正确的是( )。
01int N, N0, rc = 0; 02cout << "请输入整数:"; 03cin >> N; 04 05N0 = N; 06while (N) { 07 rc++; 08 N /= 10; 09} 10 11printf("%d是%d位整数\n", N, rc); // L11
C: 改L11为printf("%d是%d位整数\n", N0, rc)。原代码N被/10变为0,打印N=0错;用N0保留原值
下面的 C++ 代码用于求连续输入的若干正五位数的百位数之和。例如输入 32488 25731 41232 0,则输出 3个正五位数的百位数之和为13。有关描述错误的是( )。
01int M, Sum = 0, rc = 0; 02cout << "请输入正整数:"; 03cin >> M; 04 05while (M) { 06 M = (M / 100 % 10); // L6 07 Sum += M; 08 rc++; 09 cin >> M; 10} 11 12cout << rc << "个正五位数的百位数之和为" << Sum;
A错(描述错误项)。23221百位2,23453百位4,12345百位3,Sum=2+4+3=9不是10。B对(4位数也走循环)。C: M%1000/100对5位/4位都取百位。D: M%100/10取十位错
如果一个正整数 N 能够表示为 X * (X + 1) 的形式,这里称它是一个“兄弟数”。例如,输入 6,则输出 6是一个兄弟数。下面 C++ 代码用来判断 N 是否为一个“兄弟数”,在横线处应填入的代码可从下列 i)、ii)、iii)、iv) 四项中选择,则有几个能完成功能?( )。
01int N; 02 03cin >> N; 04for (int i = 0; i <= N; i++) 05 if (____________) 06 cout << N << "是一个兄弟数\n";
四个候选填入式:
N == i * (i + 1)N == i * (i - 1)N / (i + 1) == iN / (i - 1) == iC: 3个能完成。兄弟数条件N==i*(i+1),i和(ii)等式左右交换等价,iv同i,iii错(i²+i= N需N-1为完全平方)。共3个
小杨最近开始学习 C++ 编程,老师说 C++ 是一门面向对象的编程语言,也是一门高级语言。
正确。C++是OOP语言(类/继承/多态),也是高级语言(需编译为机器码)
在 C++ 中,表达式 10 / 4 和 10 % 4 的值相同,都是整数 2,由此推断除法与取余这两个运算符可以互相替换。
错。/和%不同:/是整除截断,%是取余。10/4=2,10%4=2仅在此例巧合
N 是 C++ 程序中的整型变量,则语句 scanf("%d", &N) 能接收形如正整数、负整数和 0 输入,但如果输入含字母或带小数点数,将导致无法执行。
正确。scanf按%d读整数,遇字母/小数点等非整数字符会失败(返回0或EOF)
下面 C++ 代码能够执行,则将输出 45。
01for (int i = 0; i < 10; i++) 02 Sum += i; 03cout << Sum;
错。Sum未初始化,UB未定义行为,输出不可预测。Sum应=0初值
在 C++ 代码中整型变量 X 被赋值为 20.24,则 cout << (X++, X + 1) / 10 执行后输出的是 2.124。
错。X=20.24若int则X=20,X++=21,X+1=22,22/10=2(int除);若double,21.24/10=2.124,都不输出2.124整型
下面 C++ 代码执行后,最后一次输出是 10。
01for (int i = 1; i < 10; i += 3) 02 cout << i << endl;
错。for(i=1;i<10;i+=3):i=1,4,7,7<10输出7后i=10不<10停,不是10
在 C++,break 语句通常与 if 语句配合使用。
正确。break通常与if配合,条件满足时break跳出循环
在 C++ 代码中,不可以将变量命名为 five-star,因为变量名中不可以出现 -(减号)符号。
正确。变量名不能含-连字符(合法字符仅字母数字下划线)
在 C++ 语言中,整型、实数型、字符型、布尔型是不同数据类型,但这四种类型的变量间都可以比较大小。
正确。整型/实数型/字符型/布尔型都支持比较运算符>,<,>=,<=,==,!=,结果bool
C++ 中,定义变量 int a = 5, b = 4, c = 3,则表达式 (a < b < c) 的值为逻辑假。
错。(a<b<c)左结合→((a<b)<c)=(0<3)=1(真),不是逻辑假