《C程序设计》课程复习资料.docx
《《C程序设计》课程复习资料.docx》由会员分享,可在线阅读,更多相关《《C程序设计》课程复习资料.docx(29页珍藏版)》请在冰豆网上搜索。
![《C程序设计》课程复习资料.docx](https://file1.bdocx.com/fileroot1/2022-12/8/0b580349-446b-4319-af97-38d4c0b00f64/0b580349-446b-4319-af97-38d4c0b00f641.gif)
《C程序设计》课程复习资料
C程序设计复习资料
一、填空(每空2分,共20分)
1.在程序中从变量中取值,实际上是通过变量名找到相应的①,从其②中读取数据。
()内存地址,存储单元
2.C语言规定①只能由字母、数字和②三种字符组成。
()标识符,下划线
3.将一个字符常量放到一个字符变量中,是将该字符的①放到存储单元中。
()相应的ASCII码
4.在使用C语言①时,要用预编译命令②将有关的”头文件包括到用户的源文件中。
()库函数,#include
5.在printf(“%10.4s”,“Chinese”)中,%10.4s指定输出数据①,但只输出字符串中②。
()域宽为10,前4个字符
6.printf(“%7.2f”,123.456)中,%7.2f指定输出数据①,其中有②。
()域宽为7,2位小数
7.break语句可以使流程跳出①,还可以用来跳出②。
()switch结构,循环体
8.continue语句只结束①,而不是终止②的执行。
()本次循环,整个循环
9.在定义数组时,数组长度必须用①括起来;在对全部数组元素赋初值时,可以不指定②。
()方括号,数组长度
10.在定义函数时,函数说明部分包括①、②和函数名以及函数参数、参数类型。
()函数类型,函数属性
11.形式参数是①函数名后面括弧中的变量名,实际参数是②函数名后面括弧中的变量名。
()函数定义时,函数调用时
12.局部变量只在①有效,全局变量的有效范围为②。
()本函数范围内,从定义变量的位置开始到本文件结束
13.变量从①角度可分为局部变量和全局变量,而静态存储变量和动静态存储变量是从角度②来分的。
()作用域(即空间),生存期(即值存在的时间)
14.C语言把文件看作是一个①,根据数据的组织形式文件可分为②。
()字符流(或字节流),ASCII文件和二进制文件
15.C语言编译系统在给出逻辑运算结果时,以①,以②。
()数值1代表”真”,0代表”假”
16.C语言编译系统在判断一个量是否为“真”时,是将①认作为“真”。
()一个非零的数值
17.使用全局变量,降低了函数的①和程序的②。
()通用性,清晰性
18.只有①和②可作为寄存器变量。
()形式参数,局部自动变量
19.在调用一个函数的过程中又出现①调用该函数本身,称为②。
()直接或间接地,函数的递归调用
20.实参变量对形参变量的数据传递是①,即②。
()值传递,单向传递
21.C程序是由①构成的,这种特点容易实现程序的②。
()函数,模块化(或结构化)
22.函数的①是通过函数中的②获得的。
()返回值,return语句
23.一个C程序总是从①开始执行的;每个②的最后必须有一个分号。
()main函数,语句和数据定义
24.用数组名作函数参数,在调用函数时是①把传递给形参。
()数组的首地址
25.一个好的、有使用价值的源程序都应当加上必要的①,以增加程序的②。
()注释,可读性
26.表达式(a=3*5,a*4),a+5的值为①。
()20
27.在C语言中,要求对所有用到的变量作①,即“先定义,后使用”。
()强制类型定义
28.C规定以字符’\0’作为①。
()字符串结束标志
29.一个unsigned型变量在内存中分配的字节数和比特数为①,最小取值范围为②。
()2和16,0~65535
30.已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达式ch='a'+'8'-'3'的值为①。
102
31.表达式8/4*(int)2.5/(int)(1.25*(3.7+2.3))值的数据类型为①。
()整型或int型
32.若a是int型变量,则计算表达式a=25/3%3后a的值为①。
()2
33.若x和n均是int型变量,且x和n的初值均为5,则计算表达式x+=n++后x的值为①,n的值为②()10,6
34.当a=3,b=2,c=1时,表达式f=a>b>c的值是①。
()0
35.假设m是一个三位数,从左到右用a,b,c表示各位的数字,则从左到右各个数字是bac的三位数的表达式是①。
()b*100+a*10+c
36.若s是int型变量,且s=6,则下面表达式s%2+(s+1)%2的值是①。
()1
37.若有定义:
intx=3,y=2;floata=2.5,b=3.5;则下面表达式(x+y)%2+(int)a/(int)b的值为①。
()1
38.若有以下定义intm=5,y=2;,则计算表达式y+=y-=m*=y后的y值是①。
()-16
39.在C语言中的实型变量分为两种类型,它们是①。
()单精度,双精度
40.当a=5,b=4,c=2时,表达式a>b!
=c的值是①。
()1
41.假设所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值为①。
()9
42.在一个C源程序中,注释部分两侧的分界符分别为①和②。
()/*,*/
43.在C语言中(以16位PC机为例),一个float型数据在内存中所占的字节数为_____;一个double型数据在内存中所占的字节数为①。
()4,8
44.若x和n均是整型变量,且x的初值为12,n的初值为5,则计算表达式x%=(n%=2)后x的值为①。
()0
45.若有定义:
charc='\010';则变量c中包含的字符个数为①。
()-1
46.若有定义:
inta=2,b=3;floatx=3.5,y=2.5;则下面表达式的值(float)(a+b)/2+(int)x%(int)y为①。
()3.5
47.若a是int型变量,且a的初值为6,则计算表达式a+=a-=a*a后a的值为①。
()-60
48.若a,b和c均是int型变量,则计算表达式a=(b=4)+(c=2)后,a值为①。
()6
49.若x和a均是int型变量,则计算表达式x=(a=4,6*2)后的x值为①,计算表达式x=a=4,6*2后的x值为②。
()12,4
50.若a为整型变量,则下面表达式(a=4*5,a*2),a+6的值为①。
()26
51.若有定义:
intb=7;floata=2.5,c=4.7;则下面表达式a+(int)(b/3*(int)(a+c)/2)%4的值为①。
()5.5
二、选择(每题2分,共20分)
1.若有定义:
inta=7;floatx=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是()A
A)2.500000B)2.750000C)3.500000D)0.000000
2.下面正确的字符常量是()C
A)"c"B)'\\''C)'W'D)''
3.putchar函数可以向终端输出一个()D
A)整型变量表达式值B)实型变量值
C)字符串D)字符或字符型变量值
4.下面四个选项中,均是合法转义字符的选项是()A
A)'\'''\\''\n'B)'\''\017''\"'
C)'\018''\f''xab'D)'\\0''\101''xlf'
5.以下程序的输出结果是()C
main()
{printf("\n*s1=%15s*","chinabeijing");
printf("\n*s2=%-15s*","chi");}
A)*s1=chinabeijing*(换行)*s2=**chi*
B)*s1=chinabeijing*(换行)*s2=chi*
C)*s1=*chinabeijing*(换行)*s2=chi*
D)*s1=chinabeijing*(换行)*s2=chi*
6.C语言中的标识符第一个字符()C
A)必须为字母B)必须为下划线
C)必须为字母或下划线D)字母,数字和下划线中任一字符
7.下列四个选项中,均是C语言关键字的选项是()B
A)autoenumincludeB)switchtypedefcontinue
C)signedunionscanfD)ifstructtype
8.执行以下程序后,a,b的值分别为()C
main()
{inta,b,k=4,m=6,*p1=&k,*p2=&m;
a=p1==&m;
b=(-*p1)/(*p2)+7;
printf("a=%d\n",a);
printf("b=%d\n",b);}
A)-1,5B)1,6C)0,7D)4,10
9.若有说明语句:
charc='\72';则变量c()A
A)包含1个字符B)包含2个字符
C)包含3个字符D)说明不合法,c的值不确定
10.若以下变量均是整型,且num=sum=7;则计算表达式sum=num++,sum++,++num后sum的值为()B
A)7B)8C)9D)10
11.在C语言中,要求运算数必须是整型的运算符是()D
A)/B)++C)!
=D)%
12.已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2='A'+'6'-'3';后,c2中的值为()B
A)DB)68C)不确定的值D)C
13.若x,i,j和k都是int型变量,则计算下面表达式x=(i=4,j=16,k=32)后,x的值为()C
A)4B)16C)32D)52
14.关于建立函数的目的,以下正确的说法是()B
A)提高程序的执行效率B)提高程序的可读性
C)减少程序的篇幅D)减少程序文件所占内存
15.以下对一维整型数组a的正确说明是()D
A)inta(10);B)intn=10,a[n];
C)intn;scanf("%d",&n);inta[n];
D)#defineSIZE10(换行)inta[SIZE];
16.在执行完以下C语句后,B的值是()B
charZ='A';
intB;
B=((241&15)&&(Z|'A'));
A)0B)1C)TRUED)FALSE
17.若调用一个函数,且此函数中没有return语句,则正确的说法是:
该函数()D
A)没有返回值B)返回若干个系统默认值
C)能返回一个用户所希望的值D)返回一个不确定的值
18.以下正确的说法是:
在C语言中()A
A)实参和与其对应的形参各占用独立的存储单元
B)实参和与其对应的形参共占用一个存储单元
C)只有当实参和与其对应的形参同名时才共占用存储单元
D)形参是虚拟的,不占用存储单元
19.以下正确的函数定义形式是()B
A)doublefun(intx,inty)B)doublefun(intx;inty)
C)doublefun(intx,inty);D)doublefun(intx,y);
20.下列四组选项中,均不是C语言关键字的选项是()A
A)defineIFtypeB)getccharprintf
C)includescanfcaseD)whilegopow
21.printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列,如果字符串长度大于5,则输出按方式()B
A)从左起输出该字符串,右补空格
B)按原字符长从左向右全部输出
C)右对齐输出该字串,左补空格
D)输出错误信息
22.系统的标准输入文件是指()A
A)键盘B)显示器C)软盘D)硬盘
23.以下运算符中优先级最低的是()C
A)&&B)&C)||D)|
24.当说明一个结构体变量时系统分配给它的内存是()A
A)各成员所需内存量的总和
B)结构中第一个成员所需内存量
C)成员中占内存量最大者所需的容量
D)结构中最后一个成员所需内存量
25.以下正确的叙述是()D
A)在C程序中,每行中只能写一条语句
B)若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数
C)在C程序中,无论是整数还是实数,都能被准确无误地表示
D)在C程序中,%是只能用于整数运算的运算符
26.在C语言中(以16位PC机为例),5种基本数据类型的存储空间长度的排列顺序为()A
A)charB)char=intC)charD)char=int=longint<=float27.一个C语言程序是由()B
A)一个主程序和若干子程序组成B)函数组成
C)若干过程组成D)若干子程序组成
28.C语言规定,在一个源程序中,main函数的位置()C
A)必须在最开始B)必须在系统调用的库函数的后面
C)可以任意D)必须在最后
29.以下叙述正确的是()C
A)在C程序中,main函数必须位于程序的最前面
B)C程序的每行中只能写一条语句
C)C语言本身没有输入输出语句
D)在对一个C程序进行编译的过程中,可发现注释中的拼写错误
30.若执行fopen函数时发生错误,则函数的返回值是()A
A)地址值B)0C)1D)EOF
31.在16位IBM-PC机上使用C语言,若有如下定义
structdata
{inti;
charch;
doublef;
}b;
则结构变量b占用内存的字节数是()D
A)1B)2C)8D)11
32.假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是()B
A)7B)8C)6D)2
33.一个C程序的执行是从()A
A)本程序的main函数开始,到main函数结束
B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束
C)本程序的main函数开始,到本程序文件的最后一个函数结束
D)本程序文件的第一个函数开始,到本程序main函数结束
34.以下能对二维数组a进行正确初始化的语句是()B
A)inta[2][]={{1,0,1},{5,2,3}};
B)inta[][3]={{1,2,3},{4,5,6}};
C)inta[2][4]={{1,2,3},{4,5},{6}};
D)inta[][3]={{1,0,1}{},{1,1}};
35.在位运算中,操作数每右移一位,其结果相当于()B
A)操作数乘以2B)操作数除以2
C)操作数乘以4D)操作数除以4
36.在位运算中,操作数每左移一位,其结果相当于()A
A)操作数乘以2B)操作数除以2
C)操作数除以4D)操作数乘以4
37.设有以下语句:
charx=3,y=6,z;
z=x^y<<2;
则z的二进制值是()A
A)00010100B)00011011C)00011100D)00011000
38.下面程序段的运行结果是()C
intn=0;
while(n++<=2);printf("%d",n);
A)2B)3C)4D)有语法错
39.fscanf函数的正确调用形式是()D
A)fscanf(fp,格式字符串,输出表列);
B)fscanf(格式字符串,输出表列,fp);
C)fscanf(格式字符串,文件指针,输出表列);
D)fscanf(文件指针,格式字符串,输入表列);
40.已知函数的调用形式:
fread(buffer,size,count,fp);其中buffer代表的是()C
A)一个整数,代表要读入的数据项总数
B)一个文件指针,指向要读的文件
C)一个指针,指向要读入数据的存放地址
D)一个存储区,存放要读的数据项
41.当顺利执行了文件关闭操作时,fclose函数的返回值是()C
A)-1B)TRUEC)0D)1
42.请读程序片段:
C
intx=20;
printf("%d\n",~x);
上面程序片段的输出结果是()
A)02B)-20C)-21D)-11
43.表达式0x13^0x17的值是()A
A)0x04B)0x13C)0xE8D)0x17
44.sizeof(float)是()B
A)一个双精度型表达式B)一个整型表达式
C)一种函数调用D)一个不合法的表达式
45.若有说明inta[3][4];则a数组元素的非法引用是()D
A)a[0][2*1]B)a[1][3]C)a[4-2][0]D)a[0][4]
46.若有说明inta[3][4];则对a数组元素的正确引用是()C
A)a[2][4]B)a[1,3]C)a[1+1][0]D)a
(2)
(1)
47.设有程序段()C
intk=10;
while(k=0)k=k-1;
则下面描述中正确的是________
A)while循环执行10次B)循环是无限循环
C)循环体语句一次也不执行D)循环体语句执行一次
48.设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为()C
A)intB)floatC)doubleD)不确定
49.在C语言中,char型数据在内存中的存储形式是()D
A)补码B)反码C)原码D)ASCII码
50.设变量n为float类型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是()B
A)n=(n*100+0.5)/100.0B)m=n*100+0.5,n=m/100.0
C)n=n*100+0.5/100.0D)n=(n/100+0.5)*100.0
51.设C语言中,一个int型数据在内存中占2个字节,则unsignedint型数据的取值范围为()C
A)0--255B)0--32767C)0--65535D)0--2147483647
52.设有说明:
charw;intx;floaty;doublez;则表达式w*x+z-y值的数据类型为()D
A)floatB)charC)intD)double
53.若x=2,y=3则x&y的结果是()B
A)0B)2C)3D)5
54.表达式~0x13的值是()A
A)0xFFECB)0xFF71C)0xFF68D)0xFF17
55.以下叙述中不正确的是()C
A)表达式a&=b等价于a=a&b
B)表达式a|=b等价于a=a|b
C)表达式a!
=b等价于a=a!
b
D)表达式a^=b等价于a=a^b
56.fwrite函数的一般调用形式是()B
A)fwrite(buffer,count,size,fp);
B)fwrite(fp,size,count,buffer);
C)fwrite(fp,count,size,buffer);
D)fwrite(buffer,size,count,fp);
57.若有以下程序段:
()C
intx=1,y=2;
x=x^y;y=y^x;x=x^y;
则执行以上语句后x和y的值分别是
A)x=1,b=2B)x=2,y=2C)x=2,y=1D)x=1,y=1
58.sizeof(float)是()C
A)一种函数调用B)一个不合法的表达式
C)一个整型表达式D)一个浮点表达式
59.若调用fputc函数输出字符成功,则其返回值是()D
A)EOFB)1C)0D)输出的字符
60.在C语言中,要求运算数必须是整型的运算符是()B
A)^B)%C)!
D)>
61.若a=1,b=2则a|b的值是()D
A)0B)1C)2D)3
三、简答(每题6分,共30分)
1.P97简述条件表达式的一般形式,用流程图说明其运算规则。
●1.一般格式:
表达式1?
表达式2:
表达式3
●2.运算规则:
如果“表达式1”的值为非0(即逻辑真),则运算结果等于“表达式2”的值;否则,运算结果等于“表达式3”的值。
2.P110简述for语句的一般形式,用流程图说明其运算规则。
1.一般格式:
for(表达式1;表达式2;表达式3){循环体}
2.for语句的执行过程
(1)求解表达式1。
(2)求解表达式2。
如果其值非0,执行(3);否则,转至(4)。
(3)执行循环体语句组,并求解表达式3,然后转向
(2)。
(4)执行for语句的下一条语句。
3.P122简要说明一维数组的定义。
定义形式:
数据类型数组名[常量表达式]
如:
inta[10];floatx[5];说明:
(1)数组名,与变量名一样,必须遵循标识符命名规则。
(2)常量表达式必须用方括号括起来,指的是数组的元素个数(又称数组长度),常量表达式可以包括常量和符号常量,不能包含变量;
(3)数组元素的下标,是元素相对于数组起始地址的偏移量,所以从0开始顺序编号。
(4)数组名中存放的是一个地址常量,它代表整个数组的首地址。
(5)同一数组中的所有元素,按其下标的顺序占用一段连续的存储单元。
4.(P146)简要说明函数的形参和实参。
在定义函数时函数名后括弧中的参数称为形参,在主调函数中调用一个函数时函数名后括弧中的参数称为实参。
说明:
(1)形参变量只有在被调用时,才分配内存单元;调用结束时,即刻释放所分配的内存单元。
(2)实参可以是常量、变量、表达式、函数等。
(3)实参与形参的类型应相同或赋值兼容;
(4)实参对形参的数据传送是单向的,即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。
(5)实参和形参占用不同的内存单元,即使同名也互不影响。
5.(P151)举例说明函数的调用方式。
在C语言中,可以用以下几种方式调用函数:
(1)函数语句,如printstar();,C语言中的函数可以只进行某些操作而不返回函数值,这时的函数调用可作为一条独立的语句。
(2)函数表达式,如c=2*max(a,b);,函数作为表达式的一项,出现在表达式中,以函数返回值参与表达式的运算。
这种方式要求函数是有返回值的。
(3)函数实参,如printf(“%d”,max(a,b));,函数作为另一个函数调用的实际参数出现。
这种情况是把该函数的返回值作为实参进行传送,因此要求该函数必须是有返回值的。
6.(P151)函数调用需要具备哪些条件?
(1)被调用的函数必须是已经存在的函数(库函数或用户自己定义的函数);
(2)如果使用库函数,一般还应该在