C期末考试要点与样题.docx
- 文档编号:23361473
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:25
- 大小:29.10KB
C期末考试要点与样题.docx
《C期末考试要点与样题.docx》由会员分享,可在线阅读,更多相关《C期末考试要点与样题.docx(25页珍藏版)》请在冰豆网上搜索。
C期末考试要点与样题
C程序设计复习要点
第一章概述
1.C程序的构成与结构特点
2.C程序上机调试过程与流程
第二章数据类型、运算量与表达式
1.数据类型的种类(基本数据类型和构造数据类型)
2.常量的数据类型及其表示(表示方法、存储字节数与表数范围)——整、实、字符、字符串和转义字符
3.变量的命名、定义方法与赋初值
4.各种表达式及其运算规则——优先级、结合性、类型自动转换与强制转换
●算术运算符、表达式及其构造(注意“/”和“%”特殊性)
●自增、自减运算符及其简单表达式运算
●赋值运算符及其表达式(注意复合赋值运算符的运算方法)
●逗号运算符及其表达式
第三章流程控制
1.赋值语句的一般形式、赋值过程及赋值规则(注意左右数据类型的一致或兼容)
2.输入和输出函数的格式、功能及用法(只要求常用的格式控制符d,f,c,s),提醒注意:
●格式输出中域宽和小数位数的控制
●格式输入与输出中普通字符的原样输入和输出问题
●熟悉并区别以下函数:
putchar()、printf()、puts();getchar()、scanf()、gets()
3.关系运算符及其表达式、逻辑运算符及其表达式和条件运算符及其表达式的运算规则(优先级、结合性)
4.关系表达式与逻辑表达式的构造(根据已知条件写表达式)
5.if语句的三种形式:
if…语句、if…else…语句、if语句的嵌套
●if语句的格式与用法:
简单if、嵌套if、并列if
●逻辑关系与执行过程
●嵌套规则(重点掌握if…else…if…else…if…else)
6.switch语句的格式与用法
7.*熟练使用if和switch语句阅读和编写较为简单的选择结构程序
8.三种循环语句:
while()…、do…while()、for()的格式、执行过程及其用法
●循环变量初始化、循环条件构造、循环体所要实现的任务和控制变量修改
●注意循环期间与结束时循环控制变量的取值问题
9.结合例题理解和区别break与continue语句的作用及其用法
10.本章涉及的主要算法:
累加(计数)、累乘、递推、穷举、判素数、求最大公约与最小公倍等
11.*熟练使用三种循环语句并结合以上算法阅读和编写较为简单的循环结构及其嵌套程序
第四章复杂数据类型
1.一维、二维数组的定义、初始化及其引用方法(数据输入、输出、存储与处理)
2.字符数组的定义、初始化及其引用(字符串输入、输出、存储与处理)
3.常用字符串处理函数:
gets()、puts()、strlen()、strcmp()、strcpy()
4.数组涉及的主要算法:
排序、极值、逆序、回文和字符串的连接、复制、求长度等
5.*熟练使用数组并结合以上算法阅读和编写较为简单的程序
6.指针的概念:
指针、指针变量、指针运算(*、&、++、--、+、-)
7.变量、数组和字符串指针的定义、指向与引用(仅限于一维数组)
8.了解指针数组与二级指针的概念和定义
9.*能够阅读并理解使用指针进行数据处理的相关程序(极值、逆序、回文和字符串的连接、复制、求长度等)
10.结构体与共用体的概念、定义与引用(仅限概念)
第五章结构化程序设计与应用
1.熟悉程序的三种基本结构:
顺序、选择和循环
2.*通过其中部分例题掌握选择、循环语句的使用以及循环和数组涉及的主要算法
第六章函数与编译预处理
1.掌握函数的定义、声明和调用方法及参数传递方式
2.*结合相关例题掌握一般函数和递归函数的定义与使用
3.熟悉局部变量与全局变量的定义及作用范围,了解各种静态与动态变量的定义、作用范围与生存期
4.了解内部函数与外部函数的定义及调用规则
5.掌握宏定义与宏展开(重点掌握带参数宏的定义与展开)
6.了解文件包含的作用及其使用场合
提示:
以上带*部分主要涉及程序阅读、程序填空和编写程序,其余部分主要以选择和概念填空题出现
C语言程序设计参考题型
说明:
★本题仅反映考试的题型,作为考前复习参考。
★要通过这些典型题目,掌握复习要点中所列内容。
所给题目不可死记硬背,而是通过题目掌握其涉及要点和重要算法。
一、单项选择题
1.C程序的基本构成单位是【】
A)文件B)命令C)函数D)语句
2.下列叙述中错误的是【】
A)C程序中main()函数的位置可以任意
B)C程序可以由多个程序文件组成,而一个程序文件又可以由一个或多个函数组成
C)每个C程序文件中都必须有一个main()函数
D)C程序总是从main()开始执行,也是由它结束
3.将C源程序转换为目标程序的过程称为【】
A)编辑B)编译C)连接D)运行
4.C语言中最基本的数据类型包括【】
A)整型、实型、逻辑型B)整型、实型、字符型
C)整型、逻辑型、字符型D)整型、实型、字符串型
5.以下不合法的用户标识符是【】
A)j2_KEYB)DoubleC)4dD)_8_
6.C源程序中不能表示的数制是【】
A)二进制B)八进制C)十进制D)十六进制
7.以下合法的字符常量的是【】
A)'\x13'B)'\081'C)'65'D)"\n"
8.以下选项中,能用作数据常量的是【】
A)o115B)0118C)1.5e1.5D)115L
9.C语言中,要求运算对象必须是整型数据的运算符是【】
A)%B)/C)\D)&&
10.表示数学关系“x≥y≥z”的C语言表达式是【】
A)x>=y>=zB)x>=y||y>=zC)x>=y&&y>=zD)x≥y≥z
11.若变量均已正确定义并赋值,以下合法的C语言赋值语句是【】
A)x=y==5;B)x=n%2.5;C)x+n=j;D)x=5=4+1;
12.设有定义:
intk=0;以下选项的四个表达式中与其他三个表达式的值不相同的是【】
A)k++B)k+=1C)++kD)k+1
13.
若有代数式:
以下错误的C语言表达式是【】
A)a/b/c*e*3B)3*a*e/b/cC)3*a*e/b*cD)a*e/c/b*3
14.设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为【】
A)intB)floatC)doubleD)不确定
15.若p和x已经正确定义,x已赋值,并且p=&x,则下列关系表达式之值为1的是【】
A)p==xB)*p==xC)&p==xD)*x==p
16.当用户要求输入的字符串中含有空格时,应使用的输入函数是【】
A)scanf()B)getchar()C)gets()D)getc()
17.下列能输出字符数组str中字符串的语句是【】
A)printf("%c",str[0]);B)printf("%s",str);
C)printf("%s",str[]);D)putchar(str);
18.有输入语句:
scanf("%d,%d",&a,&b);
为使变量a、b分别为5和3,从键盘输入数据的正确形式为【】
A)53<回车>B)5,3<回车>C)a=5b=3<回车>D)a=5,b=3<回车>
19.定义如下变量和数组:
intj;
intx[3][3]={1,2,3,4,5,6,7,8,9};
则下面语句的输出结果是【】
for(j=2;j>=0;j--)
printf("%2d",x[j][2-j]);
A)159B)147C)753D)369
20.执行下面程序后,a的值是【】
#defineSQR(x)x*x
voidmain()
{inta=10,k=2,m=1;
a=SQR(k+m);
printf("%d\n",a);
}
A)10B)5C)2D)1
21.简单if语句的基本形式:
if(表达式)语句。
其中“表达式”【】
A)必须是逻辑表达式B)必须是关系表达式
C)必须是逻辑表达式或关系表达式D)可以是任意合法的表达式
22.在嵌套使用if语句时,C语言规定else总是【】
A)和之前与其具有相同缩进位置的if配对B)和之前与其最近的if配对
C)和之前与其最近的且不带else的if配对D)和之前的第一个if配对
23.下列叙述中正确的是【】
A)break语句只能用于switch语句
B)在switch语句中必须使用default
C)break语句必须与switch语句中的case配对使用
D)在switch语句中,不一定使用break语句
24.有以下程序段:
x=-1;
do
x=x*x;
while(!
x);
执行时,循环体执行的次数为【】
A)0B)1C)2D)不确定
25.以下不正确的if语句形式是【】
A)if(x>y&&x!
=y);B)if(x==y)x+=y;
C)if(x!
=y)scanf("%d",&x)elsescanf("%d",&y);D)if(x 26.以下程序的输出结果是【】 voidmain() {intx=2,y=-1,z=2; if(x if(y<0)z=0; elsez+=1; printf("%d\n",z); } A)0B)1C)2D)3 27.以下能正确计算1×2×3×…×10的程序段是【】 A)i=1,s=1;B)s=1;i=1; dowhile(i<=10) {s=s*i;i++;}s=s*(++i); while(i<11); C)for(i=1,s=0;i<=10;i++)D)for(i=1,s=1;;i++) s=s*i;s=s*i; 28.若j为整型变量,则以下循环执行次数是【】 for(j=0;j==0;)printf("%d",j--); A)无限次B)0次C)1次D)2次 29.若有说明: inta[10];则对a数组元素的正确引用是【】 A)a[3.5]B)a(8)C)a[6-5]D)a[10] 30.若有定义语句: doublex[5]={1.0,2.0,3.0,4.0,5.0},*p=x;则错误引用x数组元素的是【】 A)*pB)x[5]C)*(p+1)D)*x 31.C中,一个char类型的数据在内存中占用的字节数是【】 A)1B)2C)4D)8 32.设有程序段: intk=5; while(k<=0) k--; 则下列描述中正确的是【】 A)while循环执行5次B)循环是无限循环 C)循环语句一次也不执行D)循环体语句执行一次 33.下面程序段的运行结果是【】 charc[5]={'a','b','\0','c','\0'}; printf(“%s”,c); A)'a''b'B)abC)AbcD)"abc" 34.以下不正确的字符串赋值语句是【】 A)char*s;s="abcde";B)chars[]="abcde"; C)chars[10];s="abcde";D)char*s="abcde"; 35.设p1、p2是指向int型一维数组的指针变量,k为int型变量,以下错误的语句是【】 A)k=*p1+*p2;B)p2=k;C)p1=p2;D)k=p2-p1; 36.下面程序的输出结果是【】 voidmain() {chars[]="ABCD"; char*p; for(p=s;p printf(“%s\n”,p); } A)ABCDB)AC)DD)ABCD BCDBCABC CDCBAB DDAA 37.以下正确的函数定义形式是【】 A)doublefun(intx,inty)B)doublefun(intx;inty) C)doublefun(intx;inty);D)doublefun(intx,y) 38.以下关于C函数的定义和调用描述正确的是【】 A)函数的定义可以嵌套,但函数的调用不可嵌套 B)函数的调用可以嵌套,但函数的定义不可嵌套 C)函数的定义和调用均可以嵌套 D)函数的定义和调用均不可嵌套 39.以下关于变量的存储类型和作用域说法错误的是【】 A)函数内定义的变量默认存储类型为auto,函数调用结束时释放其值 B)静态局部变量的生存期虽然被延长,但作用范围依然只限于所在函数内有效 C)寄存器变量主要用于使用频度较高的变量,其资源依然使用计算机内存 D)外部变量可以跨文件使用,但静态外部变量不允许跨文件使用 40.以下关于变量的作用域叙述不正确的是【】 A)在函数内部定义的变量是局部变量 B)函数中的形式参数是局部变量 C)局部变量的作用范围仅限于其所在函数或复合语句 D)全局变量的作用范围仅限于其所在的文件 41.以下关于C函数参数说法不正确的是【】 A)实参可以是常量、变量和表达式B)形参可以是常量、变量和表达式 C)实参和形参可以为任意数据类型D)实参与对应的形参类型一致 42.以下关于C函数返回值的叙述正确的是【】 A)被调函数中只有使用return语句才能返回主调函数 B)使用一个return语句可以返回多个函数值 C)函数返回值类型取决于return语句中的表达式类型 D)函数返回值类型取决于定义该函数时所指定的类型 43.以下数组定义中错误的是【】 A)intx[][3]={0};B)intx[2][3]={{1,2},{3,4},{5,6}}; C)intx[][3]={{1,2,3},{4,5,6}}; D)intx[2][3]={1,2,3,4,5,6}; 44.若有定义语句: chars[10]="1234567\0\0";则strlen(s)的值是【】 A)7B)8C)9D)10 45.给定以下程序段: intn=10; while(n>6) {n--; printf(“%3d”,n); } 以上程序段输出结果是【】 A)1098B)987C)10987D)9876 46.若i,j已定义为int型,则以下程序段中内循环总的执行次数是【】 for(i=5;i>0;i--) for(j=1;j<6;j++) {……} A)30B)24C)25D)20 47.若已定义: float*p,m=3.14159;则使p指向m正确的赋值语句是【】 A)p=m;B)p=&m;C)*p=m;D)*p=&m; 48.若已定义: chars[10];则下面表达式中不能作为s[1]地址的是【】 A)s++B)s+1C)&s[0]+1D)&s[1] 49.已知: inta=3,b=5,t;要将a和b中的数值进行交换,错误的程序段是【】 A)a=a+b;b=a-b;a=a-b;B)t=a;a=b;b=t; C)t=a;b=a;a=t;D)t=b;b=a;a=t; 50.关于C程序中的#include A)它是C语言的预编译命令B)在程序中该行尾部不需要分号 C)用于将math.h包含进来D)math.h是一个函数 51.下列C程序段的输出结果是【】 inta=0; switch(a) {case0: printf(“a=0”); case1: printf(“a=1”); default: printf(“default”); } A)a=0B)a=0defaultC)a=0a=1defaultD)default 52.已知: inta,x,y;有语法错误的C语句是【】 A)while(x)y++;B)while(x+y=0)a++; C)while(x 53.对于do…while()语句,错误的说法是【】 A)用条件控制循环体的重复执行B)循环体至少要执行一次 C)循环体有可能一次也不执行D)循环体中可以包含若干条语句 54.已知: inta[5],*p=a;利用p为数组元素a[4]赋值的正确C语句是【】 A)scanf(“%d”,p+3);B)scanf(“%d”,p+4); C)scanf(“%d”,*(p+3));D)scanf(“%d”,*(p+4)); 55.对于C语句: char*a[2]={“abcd”,“ABCD”};叙述正确的是【】 A)a是指针变量B)a是指针数组C)a是数组指针D)a是字符串 56.设有如下说明语句: structex {intx;floaty;charz;}example; 则下面叙述中不正确的是【】 A)struct是结构体类型的关键字B)example是结构体类型名 C)x,y,z都是结构体成员名D)structex是结构体类型名 57.有以下程序 #include structord {intx,y;}dt[2]={1,2,3,4}; voidmain() {structord*p=dt; printf(“%d,”,++p->x);printf(“%d\n”,++p->y); } 程序的运行结果是【】 A)1,2B)2,3C)3,4D)4,1 58.设有以下定义: uniondata {intd1;chard2;}demo; 则下面叙述中错误的是【】 A)变量demo与成员d2所占的内存字节数相同 B)变量demo中各成员的地址相同 C)变量demo和各成员的地址相同 D)若给demo.d1赋99后,则demo.d2中的值也是99 59.设fp为指向某二进制文件的指针,且已读到此文件末尾,则函数feof(fp)的返回值为【】 A)EOFB)非0值C)0D)NULL 60.读取二进制文件的函数调用形式为: fread(buffer,size,count,fp);其中buffer代表的是【】 A)一个文件指针,指向待读取的文件 B)一个整型变量,代表待读取的数据的字节数 C)一个内存块的首地址,即读入数据存放的地址 D)一个内存块的字节数 61.C语言编译系统对宏命令的处理是【】进行的。 A)在程序运行时B)与源程序中的其他语句同时 C)在程序连接时D)在对源程序中的其它成分正式编译之前 62.若要用fopen函数打开一个新的二进制文件,既能读也能写,则打开方式是【】 A)rb+B)wb+C)ab+D)ab 二、填空题 1.赋值表达式x*=y+5的另一种书写形式为__________。 2.已知a=10,b=20,c=3,则表达式! a>b||c的值为_________。 3.表达式(int)((double)(5/2)+2.5)的值是__________。 4.若j=3,则表达式(++j)+(j++)的值为__________。 5.若a的原值为4,则表达式“a*=a-=3”运算后,a的值是__________。 6.若a=5、b=3、c=1,则表达式“a>b>c”的值为__________。 7.若有定义: inta=7; floatx=2.5,y=4.7; 则表达式x+a%3*(int)(x+y)%2/4的值为__________。 8.整数m既能被3整除又能被4整除的逻辑表达式为__________。 9.写出代数式0 10.写出判断字符变量c所存字符是否为字母的逻辑表达式为。 11.实现变量a和b交换的语句或语句序列是。 12.若整型变量a和b中的值分别为7和9,要求按以下格式输出a和b的值: a=7 b=9 请完成输出语句: printf("",a,b); 13.若有定义: doublea[10][5];则数组a中行下标最大值为____,列下标最大值为____。 14.若有定义: inta[]={1,4,6,5,8,9};则*(a+5)的值为__________。 15.设有如下定义inta[5][6],*p;使p指向数组元素a[4][2]的语句为_________。 16.若有定义: inta[10],*p=a;则元素a[5]的值用p表示的形式是__________。 17.若有定义: int*p[4];则标识符p表示_________。 18.凡是函数中未指定存储类型的局部变量,其默认的存储类型为__________。 19.函数有内部函数和外部函数,函数定义时用来说明该函数仅限本文件调用的关键字是________。 20.未加特别说明(说明为静
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 期末考试 要点