一、单项选择(共 15 题,每题 2 分,共计 30 分,每题有且仅有一个正确选项)
- 不可以作为c++中的变量名的是( )。
- A. I以下loveChina
- B. I_loveChina
- C. I_love_China
- D. i_loveChina
- 在体育课上,N(N>0 且是 3 的倍数)位同学要分成三人一组来打篮球,规则如下:
同学们按照衣服上的编号从 1 到 N 的顺序站成一队,从第一位同学开始,每三位同学为一队,其中三位同学中编号最小的为队长。例如编号为 1,2,3 的同学为一队,并且编号为 1 同学为队长。输入一个数字 N,来判断这个同学是不是队长。要实现这个功能,应该在横线处写的代码为( )。
1. int n; 2. cin >> n; 3. if(_____){ 4. cout <<"是队长"; 5. }else{ 6. cout <<"不是队长"; 7. }
- A. n%2==1
- B. n%3==0
- C. (n-1)/3==1
- D. (n-1)%3==0
- 定义一个double类型的变量,下面定义不合法的是( )。
- A. double a = 3.14;
- B. double a = (double)3.14;
- C. double a = (double)(3.14);
- D. double a = double 3.14;
- 执行下列c++代码,输出的是( )。
1. int x = 5,sum=0; 2. for(int i=1;i<6;i++){ 3. sum += (x - i) * (x - i); 4. } 5. cout << sum;
- A. 30
- B. 31
- C. 16
- D. 18
- 下面是小红同学一周的课余时间安排,当输入5时,将会输出( )。
1. int n; 2. cin >> n; 3. switch(n){ 4. case 1: cout << "写作业 " ; break; 5. case 2: 6. case 3: cout << "学游泳 " ; break; 7. case 4: 8. case 5: 9. case 6: cout << "弹钢琴 " ; 10. case 7: cout << "睡觉 " ; 11. }
- A. 什么也不会输出
- B. 弹钢琴 睡觉
- C. 弹钢琴
- D. 以上都不对
- 小华是一名设计师,他正在为一个客户设计一个网站。客户要求网站的主颜色必须是特定的蓝色,并提供了这个颜色的RGB值:(0, 105, 211)。为了在网站的CSS代码中使用这个颜色,小华需要将RGB值转换为十六进制表示。他知道,在十六进制表示中,每种颜色(红、绿、蓝)都用两位数字表示,范围从00到FF。请你帮小华计算下(0,105,211)对应的的16进制表示是( )。
- A. #00105211
- B. #0069D3
- C. #0066DD
- D. #0066D2
- 下列流程图输出结果是( )。
- A. 2
- B. 1
- C. 3
- D. 12
- 根据前两个图形中数字的规律,第三个图形的空白处应该填( )。
- A. 7
- B. 10
- C. 12
- D. 6‘
- 如图分别为1到4月的兔子情况,假设一对小兔子要一个月才到成熟期(可以生小兔子的时期),而一对成熟兔子每月会生一对小兔子。如果第一个月时只有一对成熟兔子,7个月时会有( )对小兔子。
- A. 15
- B. 8
- C. 12
- D. 5
- 以下不属于输出设备的是( )。
- A. 键盘
- B. 打印机
- C. 显示器
- D. 音响
- 左边给定的是纸盒的外表面,右边哪一项是由它折叠而成( )。
- 小明和小红玩一个数字游戏。他们轮流报数,每次可以报1个或者2个数字,谁先报到30就赢了。如果小明先报数,并且两人都采用最佳策略,谁会赢得游戏?( )
- A. 小明肯定赢
- B. 小红肯定赢
- C. 平局
- D. 先报数的人肯定输
- 某班级人数不知,连续输入成绩直到输入0停止,输入结束后求出总成绩。在以下C++代码横线处应填( )。
1. int score,sum=0; 2. ___①__ 3. cin >> score; 4. sum += score; 5. __ ②_ _ 6. cout << sum;
- A. ①处填do{ ,②处填}while(score)
- B. ①处填while(score>0){ ,②处填}
- C. ①处填"for( ; ; ){ ,②处填if(!score) break;}
- D. 以上都不对。
- 如果a和b均为int类型的变量,下列表达式能正确判断"a等于0或b不等于0"的是( )。
- A. (!a) || (!b)
- B. (!(a==0&&b == 0))
- C. (!a) || (b)
- D. (a == 0) - (b != 0) == 0
- '^'在C++中表示异或运算,规则是:如果异或运算左右两边的值同时为真或同时为假,那么计算结果为假,否则计算结果为真。下面程序的运行结果是( )。
1. for(int i=1;i<=4;i++){ 2. bool f = 0; 3. for(int j=1;j<=i+1;j++){ 4. if(f ^ (j==i)){ 5. cout<<"*"; 6. f=1; 7. } 8. cout<<" "; 9. } 10. cout<<"*"<<endl; 11. }
二、阅读程序(程序输入不超过数组或字符串定义的范围;判断题正确填√,错误填×;
除特殊说明外,判断题 1.5 分,选择题 3 分,共计 40 分)
第一题如下:
1. #include <iostream>
2. using namespace std;
3. int main(){
4. int a, b;
5. cin >> a >> b;
6. if ((a % 2) == (b % 2)) {
7. cout << "1";
8. } else {
9. cout << "0";
10. }
11. return 0;
12. }
假设输入的 a、b 均是不超过 10000 的正整数,完成下面的判断题和单选题:
1.判断题
- 将第 4 行的 int 改为 unsigned int,程序行为不变。 ( )
- 将第 6 行(a % 2)和(b % 2)的小括号去掉,程序行为不变。 ( )
- 当输入为 6666 8666 时,程序输出"1"。 ( )
- 当输入为 1234 4321 时,程序输出"0"。 ( )
2.选择题
- 若输出的结果为0,下列说法正确的是( )
- A. a和b均为偶数
- B. a和b是一个奇数和一个偶数
- C. a和b的个位数相同
- D. a和b的位数不同
第二题如下:
1. #include <iostream>
2. using namespace std;
3. int main() {
4. int n, cnt = 0;
5. cin >> n;
6. for (int i = 1; i <= n; i++) {
7. if (n % i == 0) {
8. cnt++;
9. }
10. }
11. cout << cnt;
12. return 0;
13. }
假设输入的 n 为不超过 2000 的正整数,完成下面的判断题和单选题:
1.判断题
- 若输入 n 为 0,此程序可能会发生死循环或运行错误。 ( )
- 若输入 n 为 1,第 7 行的 if 判断语句和第 8 行的 cnt++语句执行次数不同。( )
- 若输入 n 为 2,输出也为 2。 ( )
2.选择题
- 下列语句中可以替换第 6 行程序的是:( )
- A. for (int i = 1; i < n; i++) {
- B. for (int i = 0; i <= n; i++) {
- C. for (int i = n; i > 0; i–) {
- D. for (int i = n; i >= 0; i–) {
- 当输入为 24 时,输出为:( )
- A. 8
- B. 6
- C. 4
- D. 3
- 当输入为 484 时,输出为:( )
- A. 9
- B. 7
- C. 5
- D. 4
第三题如下:
1. #include <iostream>
2. using namespace std;
3. int main() {
4. int n;
5. long long sum = 0;
6. cin >> n;
7. do {
8. long long i = 1, x = 1;
9. do {
10. sum += x;
11. x *= ++i;
12. } while (i <= n);
13. } while (--n);
14. cout << sum;
15. return 0;
16. }
假设输入的 n 为不超过 20 的正整数,完成下面的判断题和单选题:
1.判断题
- 将第 5 行的 long long 改为 long,程序行为不变。 ( )
- 在程序运行的任意时刻,sum 的值都永远小于等于 x。 ( )
- 若不按输入规则,输入 n 为 0,此程序可以在 1s 内完成计算。 ( )
2.选择题
- 当输入 n 为 4,程序的输出为:( )
- A. 33
- B. 34
- C. 46
- D. 47
- 当输入 n 为 6,程序的输出为:( )
- A. 1074
- B. 1073
- C. 1072
- D. 1071
- 以下哪段代码的功能和第 10、11 行相同。( )
- A. sum += x; x *= i++;
- B. sum += (x *= i++);
- C. x *= ++i; sum += x;
- D. sum += (x *= ++i);
- (4分)已知阶乘表示为n!,阶乘的计算n!=n*(n-1)*…21;特别的,0!=1。则此程序的目的为:( )
- A. 计算0!+1!+…+n!的和
- B. 计算1!+2!+…+n!的和
- C. 计算0!+(0!+1!)+…+(0!+…+n!)的和
- D. 计算1!+(1!+2!)+…+(1!+…+n!)的和
三、 完善程序(单选题,每小题 3 分,共计 30 分)
(统计1的个数) 统计给定范围从x到y(x<y,包括x和y)的所有正整数中,数字1出现的次数
1. #include<iostream>
2. using namespace std;
3. int main(){
4. int x=0,y=0;
5. cin >> x >> y;
6. int cnt=0;
7. for(int i=x; ① ; i++){
8. int num= ② ;
9. while( ③ )
10. {
11. if(num%10==1)
12. {
13. ④
14. }
15. ⑤
16. }
17. }
18. cout << cnt;
19. return 0;
20. }
- ①处应该填( )
- A. i <= y
- B. i < y
- C. i >= y
- D. i > y
- ②处应该填( )
- A. 0
- B. i
- C. x
- D. y
- ③处应该填( )
- A. num >= 0
- B. num > 0
- C. num <= y
- D. num >= x
- ④处应该填( )
- A. cnt=1
- B. cnt+1
- C. cnt++
- D. num++;
- ⑤处应该填( )
- A. num -= 10
- B. num -= num % 10
- C. num %= 10
- D. num /= 10
第二题如下:
(最长连续天数) 妈妈每天都会给小明发零花钱,每天的钱数不同,要求统计零花钱一直下降的最长连续天数
1. #include<iostream>
2. using namespace std;
3. int main()
4. {
5. int n = 0;
6. cin >> n;
7. int head = 0;
8. cin >> head;
9. int money = 0;
10. int days = 0;
11. int num = ①;
12. for(int i = 1; ②; i++){
13. cin >> money;
14. if(③){
15. num++;
16. ④;
17. }
18. else{
19. num = 1;
20. }
21. ⑤;
22. }
23. cout << days;
24. return 0;
25. }
- ①处应该填( )
- A. 0
- B. 1
- C. 365
- D. -7
- ②处应该填( )
- A. i <= n
- B. i < n
- C. i < n + 1
- D. i < n - 1
- ③处应该填( )
- A. money <= head
- B. money >= head
- C. money < head
- D. money > head
- ④处应该填( )
- A. days = max(days, num)
- B. days = min(days, num)
- C. num = max(days, num)
- D. num = min(days, num)
- ⑤处应该填( )
- A. head = 0
- B. cin >> head
- C. money = head
- D. head = money