一、单选题(每题2分,共30分)。
1. 据有关资料,山东大学于1972年研制成功DJL-1计算机,并于1973年投入运行,其综合性能居当时全国第三位。DJL-1计算机运算控制部分所使用的磁心存储元件由磁心颗粒组成,设计存贮周期为2μs(微秒)。那么该磁心存储元件相当于现代计算机的()。
A. 内存
B. 磁盘
C. CPU
D. 显示器
2. IPv4版本的因特网总共有多少个A类地址网络()。
A. 65000
B. 200万
C. 126
D. 128
3. 在C++中,下列不可做变量的是()。
A. ccf-gesp
B. ccf_gesp
C. ccfGesp
D. _ccfGesp
4. 在C++中,与for(int i = 1;i < 10;i++)效果相同的是()。
A. for(int i = 0;i < 10;i++)
B. for(int i = 0;i < 11;i++)
C. for(int i = 1;i < 10;++i)
D. for(int i = 0;i < 11;++i)
5. 在C++中,cout <<(5 / 2 + 5 % 3)的输出是()。
A. 1
B. 2
C. 4
D. 5
6. 假定变量a和b可能是整型、字符型或浮点型,则下面C++代码执行时先后输入 -2和3.14后,其输出不可能是(已知字符'+'、'-'、'='的ASCII码值分别是43、45和61)()。
cin >> a;
cin >> b;
cout <<(a + b);
A. 1
B. 1.14
C. 47
D. 将触发异常
7. 在C++代码中假设N为正整数,则下面代码能获得个位数的是()。
A. N % 10
B. N / 10
C. N && 10
D. 以上选项均不正确
8. 下面C++代码执行后的输出是()。
int i;
for(i = 0;i < 10;i++){
if(i % 2)
break;
cout << "0#";
}
if(i==10)cout << "1#";
A. 0#
B. 1#
C. 0#0#1
D. 没有输出
9. 执行下面C++代码并输入1和0,有关说法正确的是()。
int a,b;
cin >> a >> b;
if(a&&b)
cout <<("1");
else if(!(a||b))
cout <<("2");
else if(a || b)
cout <<("3");
else
cout <<("4");
A. 1
B. 2
C. 3
D. 4
10. 下面C++代码执行后的输出是()。
int loopCount = 0;
for(int i = 1;i < 5;i += 2)
loopCount += 1;
cout <<(loopCount);
A. 1
B. 2
C. 3
D. 5
11. 下图是C++程序执行后的输出。为实现其功能,横线处应填入代码是()。
7
1
2 3
3 4 5
4 5 6 7
5 6 7 8 9
6 7 8 9 10 11
7 8 9 10 11 12 13
//////////////////////////////
int lineNum;
cin >> lineNum;
for(int i= 1;i < lineNum+1;i++){
for(int __________________)
cout << j << " ";
cout << endl;
}
A. j = i;j < i;j++
B. j = 1;j < i;j++
C. j = i;j < i*2;j++
D. j = i+1;j < i+i;j++
12. 下面C++代码执行后输出逆序数,如输入123则输出321。如输入120则输出21。横线处先后应填入的代码是()。
int N;
cin >> N;
int rst = 0;
while(N){
____________________;
____________________;
}
cout <<(rst);
A. rst = rst * 10 + N % 10 N = N / 10
B. rst += N % 10 N = N / 10
C. rst = rst * 10 + N / 10 N = N % 10
D. rst += N / 10 N = N % 10
13. 下面的C++代码用于输入学生成绩,并根据人数计算出平均成绩,有关说法错误的是()。
float Sum = 0;// 保存总成绩
int cnt = 0;// 保存学生人数
while(1){
int score;
cin >> score;
if(score < 0)
break;
cnt += 1;
Sum += score;
}
cout << "总学生数:" << cnt << "平均分:" << Sum/cnt;
A. 代码while(1)写法错误
B. 如果输入负数,将结束输入,并正确输出。
C. 如果输入的学生成绩含有小数,程序将无法正常执行。
D. 变量int score初始值不确定,但不影响程序执行。
14. 以下C++代码判断输入的正整数是否为质数,如果该数字是质数,则输出YES,否则输出NO。质数是指仅能被1和它本身整除的正整数。请在横线上填写代码()。
int num, i;
cin >> num;
for(i = 2;i < num;i++)
if(__________){
cout <<("NO");
break;
}
if(i == num)
cout <<("YES");
A. num % i
B. num % i == 0
C. num / i
D. num / i == 0
15. 一个数如果能被某个数(比如7)整除,或者含有该数,则说该数是某个数的相关数。下面C++代码用于判定输入的数与7是否有关。下列说法错误的是()。
int N, M;
bool Flag = false;
cin >> N;
M = N;
if(M % 7 == 0)
Flag = true;
while(!Flag && M){
if(M % 10 == 7){
Flag = true;
break;
}
M /= 10;
}
if(Flag)
cout << N << "与7有关";
else
cout << N << "与7无关";
A. 删除break语句不会导致死循环,但有时会导致结果错误。
B. 删除M /= 10将可能导致死循环
C. 删除M = N并将其后代码中的M变量改为N,并调整输出同样能完成相关功能。
D. 删除break语句不会导致死循环,但有时会影响效率。
二、判断题(每题2分,共20分)。
16. 小杨最近开始学习C++编程,老师说C++是一门面向对象的编程语言,也是一门高级语言()。
17. 在C++中,cout <<(3, 4, 5)可以输出3 4 5,且每个输出项之间用空格分开()。
18. C++表达式12 % 10 % 10的值为2()。
19. C++语句cout << rand()<<''<< rand();的第二个输出值较大()。
20. 定义C++的int类型的变量ch,而且值为'1',则语句cout << int(ch);的输出为1()。
21. 下面C++代码执行后将输出10()。
int i;
for(i = 0;i < 10;i++)
continue;
if(i == 10)
cout << i;
22. 下面C++代码能求整数N和M之间所有整数之和,包含N和M()。
int N, M, Sum;
cin >> N >> M;
if(N > M){
int tmp = N;
N = M, M = tmp;
}
for(int i = N;i < M+1;i++)
Sum += i;
12
cout << Sum;
23. 将下面C++代码中的L3标记的代码行调整为for(int i = 0;i < 5;i++)后输出结果相同()。
int loopCount = 0;
for(int i = 1;i < 5;i++)// L3
for(int j = 0;j < i;j++)
loopCount += 1;
cout << loopCount;
24. 某一系列数据的规律是从第3个数值开始是前两个数之和。下面的代码求第N个数的值,N限定为大于2()。
int start1;// 第1个数
int start2;// 第2个数
int N;//求N个数的值
int tmp;
cin >> start1 >> start2 >> N;
for(int i = 2;i < N;i++){
tmp = start1 + start2;
start1 = start2;
start2 = tmp;
}
cout << start2;
25. 下面C++代码执行时如果输入2024,则输出是4202()。
int N, flag=0;
cin >> N;
while(N){
if(!flag)cout << N % 10;
N /= 10;
flag =(flag + 1)%2;
}
三、编程题(每题25分,共50分)。
26. 数位之和。
时间:1.0 s
内存:512.0 MB
题面描述:
小杨有n个正整数,他认为一个正整数是美丽数字当且仅当该正整数每一位数字的总和是7的倍数。
小杨想请你编写一个程序判断n个正整数哪些是美丽数字。
输入格式:
第一行包含一个正整数n,代表正整数个数。
之后n行,每行包含一个正整数。
输出格式:
对于每个正整数,如果是美丽数字则输出Yes,否则输出No。
样例1:
7的各位数字之和为7,是7的倍数。52的各位数字之和为5+2=7,是7的倍数。103的各位数字之和为1+0+3=4,不是7的倍数。
对于全部数据,保证有1≤n≤105,1≤ai≤105。
参考程序:
#include using namespace std; int main(){ int n; cin>>n; int ans=0; for(int i=1;i<=n;i++){ int x; cin>>x; int tot=0; while(x){ tot+=(x%10); x/=10; } if(tot%7==0)cout<<"Yes\\n"; else cout<<"No\\n"; } return 0; } 27. 小杨的。 时间:1.0 s 内存:512.0 MB 题面描述: 小杨想要构造一个m × m的N字矩阵(m为奇数),这个矩阵的从左上角到右下角的对角线、第1列和第m列都是半角加号 +,其余都是半角减号 -。例如,一个5 × 5的N字矩阵如下: 请你帮小杨根据给定的m打印出对应的N字矩阵。 输入格式: 第一行包含一个正整数m。 输出格式: 输出对应的N字矩阵。 样例1: 对于全部数据,保证有3≤m≤49且m为奇数。 参考程序: #include using namespace std; int main(){ int n; cin>>n; for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ if(j==1||j==n)cout<<"+"; else{ if(i==j)cout<<"+"; else cout<<"-"; } } cout<<"\\n"; } }下载本文