第二十届全国青少年信息学奥林匹克联赛初赛
普及组C语言试题
一、单项选择题(共 20题,每题 1.5分,共计 30分;每题有且仅有一个正确选 项)
4. 以下哪一种设备属于输出设备( )。 A. 扫描仪 B. 键盘 C. 鼠标 D. 打印机 答案:D
5. 下列对操作系统功能的描述最为完整的是( )。 A. 负责外设与主机之间的信息交换 B. 负责诊断机器的故障
C. 控制和管理计算机系统的各种硬件和软件资源的使用 D. 将源程序编译成目标程序 答案:C
6. CPU、存储器、I/O 设备是通过( )连接起来的。 A. 接口 B. 总线 C. 控制线 D. 系统文件 答案:B
7. 断电后会丢失数据的存储器是( )。 A. RAM B. ROM C. 硬盘 D. 光盘 答案:A
9. 下列选项中不属于图像格式的是( )。
A. JPEG 格式 B. TXT 格式 C. GIF格式 D. PNG 格式 答案:B
10. 链表不具有的特点是( )。
A. 不必事先估计存储空间 B. 可随机访问任一元素
C. 插入删除不需要移动元素 D. 所需空间与线性表长度成正比 答案:B
11. 下列各无符号十进制整数中,能用八位二进制表示的数中最大的是(A. 296 B. 133 C. 256 D. 199 答案:D
13. 要求以下程序的功能是计算:s = 1 + 1/2 + 1/3 + ... + 1/10。 #include
for (n = 10; n > 1; n--) s = s + 1 / n;
) printf(\ return 0; }
程序导致错误结果的程序行是( )。
A. s = 1.0; B. for (n = 10; n > 1; n--) C. s = s + 1 / n; D. printf(\答案:C
解析:1/n,/两边均为整型数,表示“整除”。
14. 设变量x为 float型且已赋值,则以下语句中能将 x中的数值保留到小数点后两位,并将第三位四舍五入的是( )。 A. x = (x * 100) + 0.5 / 100.0; B. x = (x * 100 + 0.5) / 100.0; C. x = (int) (x * 100 + 0.5) / 100.0; D. x = (x / 100 + 0.5) * 100.0; 答案:C
15. 有以下程序: #include
scanf(\ do {
s += 1; a -= 2; } while (a != n); printf(\ return 0; }
若要使程序的输出值为 2,则应该从键盘给n输入的值是( )。 A. -1 B. -3 C. -5 D. 0 答案:B
16. 一棵具有5层的满二叉树中结点数为( )。 A. 31 B. 32 C. 33 D. 16 答案:A
解析:层数为k的满二叉树中节点数为2^k-1
17. 有向图中每个顶点的度等于该顶点的( )。 A. 入度 B. 出度 C. 入度与出度之和 D. 入度与出度之差 答案:C
18. 设有100个数据元素,采用折半搜索时,最大比较次数为( )。 A. 6 B. 7 C. 8 D. 10 答案:B
解析:2^7 = 128
19. 若有如下程序段,其中 s、a、b、c均已定义为整型变量,且a、c均已赋值,c > 0。 s = a;
for (b = 1; b <= c; b++) s += 1;
则与上述程序段功能等价的赋值语句是( )。 A. s = a + b B. s = a + c C. s = s + c D. s = b + c 答案:B
二、问题求解(共 2题,每题 5分,共计 10分;每题全部答对得 5分,没有部分分) 1. 把M个同样的球放到 N个同样的袋子里,允许有的袋子空着不放,问共有多少种不同 的放置方法?(用K表示)。
例如:M = 7,N = 3 时,K = 8;在这里认为(5,1,1)和(1,5,1)是同一种放置方法。 问:M = 8,N = 5时,K = _________。 答案:18
解析:1+1+2+3+5+4+2=18 方案1: 8 (1) 方案2: 7 1 (1)
方案3: 6 2 、6 1 1 (2)
方案4: 5 3、 5 21、5 1 1 1 (3)
方案5: 4 4、 4 3 1、4 2 2、4 2 1 1、4 1 1 1 1(5) 方案6: 3 3 2、3 2 2 1、3 3 1 1 、3 2 1 1 1 (4) 方案7: 2 2 2 2、2 2 2 1 1 (2)
2. 如图所示,图中每条边上的数字表示该边的长度,则从A到E的最短距离是_________。
答案:11
三、阅读程序写结果(共 4题,每题 8分,共计 32分)
1. #include
int main() {
int a, b, c, d, ans;
scanf(\ d = a - b; a = d + c; ans = a * b;
printf(\ return 0; }
输入:2 3 4 输出:_________ 答案:Ans=9
2. #include
int fun(int n) { if (n == 1) return 1; if (n == 2) return 2;
return fun(n - 2) - fun(n - 1); }
int main() { int n;
scanf(\
printf(\ return 0; }
输入:7
输出:_________ 答案:-11
3. #include
const int SIZE = 100;
int main() {
相关推荐: