北理工《C语言程序设计》期末考试精选题汇总含答案解析 33.docx
《北理工《C语言程序设计》期末考试精选题汇总含答案解析 33.docx》由会员分享,可在线阅读,更多相关《北理工《C语言程序设计》期末考试精选题汇总含答案解析 33.docx(17页珍藏版)》请在冰豆网上搜索。
北理工《C语言程序设计》期末考试精选题汇总含答案解析33
2015下半年C语言期末复习资料
一、课程内容的重点、难点
第一章:
程序设计基础知识
重点:
算法和算法的表示、结构化程序的三种基本结构。
难点:
算法的表示。
第二章:
C语言概述
重点:
C程序的基本结构、C语言的基本组成、用C语言解题的全过程。
第三章:
数据类型与运算规则
重点:
C语言的基本数据类型及其表示、算术运算与赋值运算、关系运算与逻辑运算、位运算和其它运算,混合运算及数据类型转换。
第四章:
顺序结构的程序设计
重点:
C语言中的各种语句、C语言中数据的输入与输出。
难点:
输入、输出函数的使用。
第五章:
选择结构的程序设计
重点:
if语句构成的选择结构程序和switch语句构成的选择结构程序。
难点:
嵌套的if语句和嵌套的switch语句。
第六章:
循环结构的成程序设计
重点:
while、do-while和for构成的循环结构程序设计,循环的嵌套。
难点:
for语句的使用,循环的嵌套。
第七章:
数组
重点:
一维数值数组的定义与使用,一维字符数组的定义与使用及常用字符处理函数的使用,二维数组的定义和使用。
难点:
用数组求解实际问题的编程。
第八章:
函数
重点:
函数的定义、函数的调用(嵌套调用和递规调用)与返回、函数间的数据传递、变量的存储类别。
难点:
递规函数的定义与调用。
第九章:
指针
重点:
指针的定义与引用、数组与指针、指针与函数、用指针处理字符串数据、指针数组和多级指针。
难点:
二维数组的指针与使用,多级指针。
第十章:
结构、联合与枚举类型
重点:
结构类型的定义、结构变量和结构数组的定义、函数间传递结构数据,联合类型的定义和应用,枚举类型的定义,用typedef定义类型。
难点:
结构类型的应用,链表的操作和应用。
第十一章:
文件
重点:
文件的打开和关闭,文件的顺序读写操作,文件的随机读写操作,文件操作的状态和出错检查。
难点:
文件的读写操作
二、期末考试题型介绍
1、选择填空题:
从四个备选答案中选择一个正确的答案。
每小题1分。
2、填空题:
根据题目的要求在题目的空白处填上适当的内容。
其中包括基本概念的填空和程序完整填空。
每空2分。
3、判断题:
对正确的描述画√,对错误的描述画×。
每题1分。
4、阅读程序题:
阅读程序,写出程序的输出结果。
每小题5分。
5、编程题:
编写出题目要求的程序。
每题10分。
说明:
1、考试时间为120分钟。
闭卷。
2、试卷满分100分(占课程总分的60%)。
3、试题说明:
选择填空题、填空题和判断题主要考查C语言的基本概念、简单程序的阅读和简单算法的掌握。
题目以教材后题目为主。
阅读程序,写出程序的输出结果:
主要考查程序阅读能力和对常用各种算法的掌握。
编程题:
主要考查C语言的综合应用能力。
三、举例
(一)选择题(四选一)
1)下面描述中,不正确的是()。
A.递归法的关键是必须有一个递归终止的条件。
B.递归算法要求语言具有反复自我调用子程序的能力。
C.对于同一个问题,递推算法比递归算法的执行时间要长。
D.递推算法总可以转换为一个递归算法。
2)以下描述中不正确的是()。
A.程序就是软件,但软件不仅仅是程序。
B.程序是指令的集合,计算机语言是编写程序的工具。
C.计算机语言都是形式化的语言,它有一个语法规则和定义。
D.计算机语言只能编写程序而不能表示算法。
上述选项中,答案D是错误的,因为算法语言以就是用来描述算法的。
3)以下()不是C语言的特点。
A.语言的表达能力强
B.数据结构系统化
C.语言定义严格
D.控制流程结构化
4)以下不属于算法基本特征的是()。
A.有穷性B.有效性C.可靠性D.有一个或多各输出
5)下列常数中不能作不能为C语言的数据类型是()。
A.0xa5B.2.5e-2C.0582D.3e2
6)下面各选项组中,均属于C语言关键字的一组是()。
A.auto,enum,include
B.switch,typedef,continue
C.signed,union,scanf
D.if,struct,type
7)已知inti;floatf;正确的语句是()。
A.(int)f%i;B.int(f)%i;C.int(f%i);D.(intf)%i;
8)运算符有优先级,在C语言中关于运算符优先级的正确叙述是()。
A.逻辑运算符高于算术运算符,算术运算符高于关系运算符
B.算术运算符高于关系运算符,关系运算符高于赋值运算符
C.算术运算符高于逻辑运算符,逗号运算符高于关系运算符
D.关系运算符高于逻辑运算符,逻辑运算符高于算术运算符
9)已知:
inti=5;执行语句i+=++i;i的值是()。
A.12B.11C.10D.A,B,C答案都不对
10)已知:
chara;intb;floatc;doubled;执行语句c=a+b+c+d;后,变量c的数据类型是()。
A.intB.charC.floatD.double
11)已知“inta=4,b=5,c;”,则执行表达式“c=a=a>b”后变量a的值为()。
A.5B.4C.1D.0
12)已知:
charc='A';inti=1,j;执行语句j=!
c&&i++;则i和j的值是()。
A.1,1B.1,0C.2,1D.2,0
13)若inta,b,c;则为它们输入数据的正确的语句是()。
A.read(a,b,c);
B.scanf("%d%d%d",a,b,c);
C.scanf("%D%D%D",&a,&b,&c);
D.scanf("%d%d%d",&a,&b,&c);
14)若在键盘上输入:
283.1900,想使单精度实型变量c的值为283.19,则正确的输入语句是()。
A.scanf("8f",&c);B.scanf("8.4f",&c);
C.scanf("%6.2f",&c);D.scanf("%f",&c);
15)if语句的控制条件()。
A.只能用关系表达式B.只能用关系表达式或逻辑表达式
C.只能用逻辑表达式D.可以是任何表达式
16)执行下列程序段后,x、y和z的值分别是()。
intx=10,y=20,z=30;
if(x>y)z=x; x=y;y=z;
A.10,20,30B.20,30,30C.20,30,10D.20,30,20
17)下列程序段()。
x=3;
do{y=x--;
if(!
y){printf(“x”);continue;}
printf(“#”);
}while(1<=x<=2);
A.输出##B.输出##xC.是死循环D.有语法错
18)执行语句for(i=1;i++<4;);后,i的值是()。
A.3B.4C.5D.不定
19)若intx;则执行下列程序段后输出是()。
for(x=10;x>3;x--)
{if(x%3)x--;--x;--x;
printf(“%d”,x);
}
A.62B.63C.73D.74
20)以下正确的数组定义语句是()。
A.inty[1][4]={1,2,3,4,5};B.floatx[3][]={{1},{2},{3}};
C.doublet[][3]={0};D.longs[2][3]={{1},{1,2},{1,2,3}};
21)以下程序的输出结果是()。
main()
{inti,k,a[10],p[3];
k=5;
for(i=0;i<10;i++)a[i]=i;
for(i=0;i<3;i++)p[i]=a[i*(i+1)];
for(i=0;i<3;i++)k+=p[i]*2;
printf(“%d\n”,k);
}
A.20B.21C.22D.23
22)以下叙述中错误的是()。
A.在C语言中,函数中的自动变量可以赋初值,每调用一次赋一次初值
B.在C语言中,在定义函数时,实参和对应的形参在类型上只需赋值兼容
C.在C语言中,外部变量的隐含类别是自动存储类别
D.在C语言中,函数形参的存储类型是自动(auto)类型的变量
23)以下程序的输出结果是()。
main()
{inti,x[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)printf(“%d,”x[i][2-i]);
}
A.1,5,9B.1,4,7
C.3,5,7D.3,6,9
24)在下列结论中,只有一个是正确的,它是()。
A.递归函数中的形式参数是自动变量
B.递归函数中的形式参数是外部变量
C.递归函数中的形式参数是静态变量
D.递归函数中的形式参数可以根据需要自己定义存储类别
25)C语言中函数返回值的类型是由()决定的。
A.return语句中的表达式类型
B.调用该函数的主调函数类型
C.调用函数时临时
D.定义函数时所指定的函数类型
26)已知:
chars[10],*p=s,则在下列语句中,错误的语句是()。
A.p=s+5;B.s[2]=p[4];C.s=p+s;D.*p=s[0];
27)main(argc,argv)中形式参数argv的正确说明形式应当为()。
A.char*argvB.charargv[][]
C.charargv[]D.char*argv[]
28)以下对C语言中联合类型数据的正确叙述是()。
A.一旦定义了一个联合变量后,即可引用该变量或该变量中的任意成员
B.一个联合变量中可以同时存放其所有成员
C.一个联合变量中不能同时存放其所有成员
D.联合类型数据可以出现在结构类体型定义中,但结构体类型数据不能出现在联合类型定义中
29)当说明一个联合类型变量时,系统分配给它的内存是()。
A)各成员所需内存量的总和
B)第一成员所需的内存量
C)成员中占内存量最大者所需的容量
D)联合变量中最后一个成员所需的内存量
30)C语言结构类型变量在程序执行期间()。
A.所有成员一直驻留在内存中
B.只有一个成员驻留在内存中
C.部分成员驻留在内存中
D.没有成员驻留在内存中
31)以下在对typedef的叙述中错误的是()。
A.用typedef可以定义各种类型名,但不能用来定义变量
B.使用typedef有利于程序的通用和移植
C.用typedef只能是将已存在的类型用一个新的标识符来代替
D.用typedef可以增加新类型
32)要打开一个已存在的非空文件“file”用于修改,正确的语句是()。
A.fp=fopen("file","r");B.fp=fopen("file","r+");
C.fp=fopen("file","w");D.fp=fopen("file","a+");
二)、填空题
1)一个完整的C程序必须要有一个________函数。
2)在三种基本结构中,先执行后判断的结构被称为_________。
3)在内存中,存储字符串“X”要占用______个字节,存储字符’X’要占用_____个字节。
4){a=3;c+=a-b;}在语法上被认为是________条语句,空语句的形式是______。
5)下列程序的输出结果是__________。
#include“stdio.h”
main()
{intx=1,y=0,a=0,b=0;
switch(x)
{case1:
switch(