信奥社期中测试

您的姓名:
一、单选题(每题2分,共36分)
1.在C++中,下列哪个运算符用来求两个数相除的余数?()
2.下列哪个变量名是合法的?()
3.以下哪个语句可以正确输入两个整数到变量a和b?()
4.如果一个三位数的百位是x,十位是y,个位是z,下列哪个表达式可以正确组成这个数?()
5.C++中,整除运算符是:()
6.以下哪个是"枚举算法"的特点?()
7.下列哪个语句可以判断i是否为偶数?()
8.以下哪个循环会执行5次?()
9.下列哪个语句可以实现"如果a大于b,就输出'a更大',否则输出'b更大'"?()
10.以下哪个代码片段可以正确计算1到10的和?()
11.在C++中,定义整型变量的关键字是:()
12.以下哪个头文件是C++标准输入输出必须包含的?()
13.下列哪个表达式的结果为真?()
14.以下哪个语句可以输出换行?()
15.变量i的初值为0,在下列语句中,每执行一次能使变量i的值在1、0两数值上交替出现的是()。
16..以下哪个代码片段可以正确统计1到100中能被3整除的数的个数?()
17.以下哪个多分支结构可以正确判断学生体育成绩等级(优:90-100,良:80-89,及格:60-79,不及格:0-59)?()
18.以下关于continue语句的描述正确的是?(   )
二、多选题(每题2分,共8分)
19.以下哪些是结构化程序设计的基本结构?()
20.下列哪些是合法的变量名?()
21.下列哪些运算符是算术运算符?()
22.判断一个三位数是否为水仙花数,需要哪些步骤?()
24. 23.一个三位数n,分离其十位的代码是:n/10%___
三、填空题(每空2分,共36分)
25. 24.如果要用for循环输出1到10的所有偶数,循环条件应写为:for(int i=2; i<=10; i+=___)
26. 25.枚举算法的三要素是:枚举对象、枚举范围和___
27. 26.在C++中,continue语句的作用是跳过当前循环的剩余部分,进入___   次循环
28. 27.153是水仙花数,因为1³+5³+3³=___
29. 28.输入语句cin后面跟的符号是___
30. 29.输出语句cout后面跟的符号是___
31. 30.判断两个条件同时满足,应该使用___逻辑运算符
32. 31.判断两个条件至少一个满足,应该使用    ___逻辑运算符
33.

32.如果a=5, b=8,执行以下代码后,a= ___, b= ___

int t = a;

a = b;

b = t;

34. 33.计算1到100中所有偶数的和,补充完整代码:sum=sum+___
35.

34.统计1到20中个位是7的数的个数:if( ___==7 )

36.

35.补充完整求三个数最小值的代码:

int a, b, c, min;

cin >> a >> b >> c;

min = a;

if(___< min) min = b;

if(c < min) min =___;

cout << min;

37. 36.补充程序,使用continue语句输出1到10中不是3的倍数的数。在横线处填写1、2处代码。1:___2:___
38. 37.图片中的程序要实现先顺序输出26个小写英文字母,再逆序输出26个大写字母。请补充红框处缺失的代码,并填写在横线上。for(ch=’Z’;ch>’A’; ___ )
四、判断题(每题2分,共16分)
38.cin语句可以用来输出内容到屏幕。
39.for循环只能用于递增循环。
40.水仙花数可以是四位数。
41.C++程序必须有main()函数。
42.赋值运算符"="表示左右两边相等。
43.每个if语句都必须有对应的else语句。
44.在C++中,10/3的结果是3。
45.枚举算法就是列举所有可能的情况。
五、编程题(本题将按步骤给分,依据自己的能力和时间,从每一题的基础版或进阶版题目中二选一完成。49题、50题选做,成功编程的同学有额外加分)
46. 基础版:求1-101的和。
46.进阶版:求1-101中所有5的倍数的和。
47.基础版:编写一个程序,输入一个两位数,交换它的十位和个位,输出新数。例如:输入62,输出26。

47.进阶版:警察叔叔在追踪一个两位数的密码。他只记得这个数的十位比个位大2,而且如果把数字交换,得到的数比原来小36。你能编程帮警察叔叔找出这个原始密码吗?

48.基础版:编写一个程序,判断输入的三位数是否为水仙花数。如果是,输出"是水仙花数",否则输出"不是水仙花数"。
48.进阶版:编写程序,求出所有的水仙花数。
49.输入10个数,输出其中最大的数。
50.棋盘上的麦粒数

相传,古印度的一位国王对一项新发明的游戏——国际象棋——非常着迷,决定重重奖赏它的发明者,也就是这位聪明的宰相西萨。

当国王问西萨想要什么赏赐时,西萨指着棋盘,提出了一个看似非常谦卑的请求:“陛下,请您在这张棋盘的第1个格子里放1粒麦子,第2个格子里放2粒,第3个格子里放4粒…… 也就是说,后面每一个格子放的麦粒数量,都是前一个格子的两倍。请把这样放满棋盘上64个格子的麦子都赏给我吧。”国王听后哈哈大笑,觉得这个要求太简单、太微不足道了,立刻答应了。

起初,麦粒的数量增长看起来非常温和:

第1格:1粒

第2格:2粒

第3格:4粒

...

第10格:512粒(还不到一小碗)

然而,翻倍的力量是惊人的。到了棋盘的后半部分,数字开始以难以置信的速度膨胀:

第21格:已经需要超过100万粒麦子。

第41格:需要的麦粒数已经超过1万亿。

第64格(最后一格):单独这一格就需要 9,223,372,036,854,775,808粒(约922亿亿粒)。

总量究竟有多惊人?

当国王的粮官开始计算所需麦粒的总数时,所有人都惊呆了。总数是:

18,446,744,073,709,551,615粒 (约1844亿亿粒)。

这个数量意味着:这相当于全世界2000年的小麦总产量。

如果建造一个高4米、宽10米的粮仓来储存,这个粮仓的长度将足以从地球延伸到太阳,再折返回来!

国王根本无法兑现他的诺言,他这才意识到自己小看了数学的力量。

请你编写程序来模拟这个计算过程,输出每一格的麦粒数;并输出64格棋盘所有的麦粒总数。

注意:使用 unsigned long long 来存储巨大的数字

使用for循环,让i从1到64,以此来计算每一格的麦粒数及累加总的麦粒数。

即:unsigned long long sum=0;//设置麦粒总数为0

unsigned long long n=1;//设置当前格子的麦粒数为1

int i;

for (i=1;i<=64;i++)

……

更多问卷 复制此问卷