[理学]C语言总复习资料--填空选择部分.doc

上传人:音乐台 文档编号:1986514 上传时间:2019-01-28 格式:DOC 页数:74 大小:429.50KB
返回 下载 相关 举报
[理学]C语言总复习资料--填空选择部分.doc_第1页
第1页 / 共74页
[理学]C语言总复习资料--填空选择部分.doc_第2页
第2页 / 共74页
[理学]C语言总复习资料--填空选择部分.doc_第3页
第3页 / 共74页
亲,该文档总共74页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《[理学]C语言总复习资料--填空选择部分.doc》由会员分享,可在线阅读,更多相关《[理学]C语言总复习资料--填空选择部分.doc(74页珍藏版)》请在三一文库上搜索。

1、第一章 C语言的结构一、 C语言的基本词法基本词法中的转义字符、标识符的命名规则和保留字是经常考到的内容。“”后加上一些特定的字母形成的字符组合可以表示C中的特定字符,这就是转义字符。一般用于不可打印字符,如换行、跳格、回车等。也用于、”等转义字符还有另外两种引申形式:”ddd”和”xnn”。”后的ddd是三位八进制数,nn是两位十六进制数。可表示ASCII码表中的任意字符。标识符不要与保留字同名,最好也不要与库函数同名。应记住常用的转义字符和32个保留字。二、 练习题a) C语言源程序的最小单位是 ( )D选项A) 程序行 B) 语句 C) 函数 D) 字符2、C语言程序的基本单位是 ( )

2、C选项A) 子程序 B) 过程 C) 函数 D) 主程序和子程序3、 以下说法正确的是 ( ) D选项A) C语言中,要调用的函数必须在main()函数中定义B) C语言程序总是从第一个定义的函数开始执行。C) C语言程序中,main()函数必须放在程序的开始位置。D) C语言程序总是从main()函数开始执行。4、 在C语言中,下列哪个字符为合法的字符常量 ( )B选项A) 084 B) x43 C) “ab” D) “0”5、 在C语言中,不可表示的字符是 ( )C选项A) 换行符 B) 响铃符 C) 求和符 D) 垂直制表符6、 C语言提供的合法关键字是 ( )C选项A) AUTO B)

3、 include C) unsigned D) deafult7、 如果下面的变量都是整型变量,则执行一下程序片断后的输出结果是 ( )A选项Sum = i = j = 5; sum = (j-, i+, +i);printf(“%d”,Sum);A) 5 B) 6 C) 7 D) 48、 C语言字符集中,只有 , , ,才能用来构造标识符。9、 下列可作为C语言赋值语句的是 ( )C选项A) x = 3, y = 5 B) a = b = 6C) i-; D) y = int(x);10、 设有如下的变量定义int i = 8, k, a, b;unsigned long w = 5;dou

4、ble x = 1.42, y = 5.2;则以下符合C语言语法的表达式是 ( )A选项A) a += a -= (b=4)*(a=3) B) x%(-3);C) a = a*3 = 2 D) y = float(i)第二章 数据类型一、 知识点1、 C语言的数据类型(1) 数据类型的概念数据类型是一类数据的抽象表示,这类数据具有相同的形式,遵从相同的运算规则。(2) 数据类型的分类 包括基本类型和用户自定义类型(构造类型)等。指针类型既不是基本类型,也不是构造类型。(3) 数据类型的理解 应从形式和运算规则两方面来理解,例如整型数据类型有十进制、八进制、十六进制等,可进行加、减、乘、除、取余

5、等运算。(4) 数据类型的长度不同的数据类型在内存中占用的字节数是不同的。(5) 溢出处理 每种数据类型都有其对应的数据量变化范围。当整型数据超出计算机的表示范围时,溢出处理的的操作是将该数减去整型数据类型的模。如无符号整型数据65536,溢出处理时得到的是65536-65536=0,有符号整型数据32768,溢出处理时得到的是32768-65536=-32768。2、 常量和变量(1) 常量常量根据数据类型可分为:整型常量、实型常量、字符常量和字符串常量。整型常量有三种形式:十进制形式、八进制形式和十六进制形式。实型常量有两种形式:一般实数形式和指数形式。对字符串常量要注意当字符串中出现转义

6、字符时字符串长度的确定。另外还需注意字符串结束标志0的使用。0占用内存空间,但不算在字符串长度中。C中可以定义符号常量。(2) 变量变量必须先定义、再使用。定义一个变量的过程实际上就是向内存申请一个符合该类数据类型空间的过程。任一变量都有确定的数据类型,对变量的使用必须该类数据类型的规则。根据存储方式的不同,可以将变量划分为自动型、静态型、外部参照型和寄存器型。可以在变量定义时指出变量的存储类别,如果不指明,默认为是自动型。不同存储类别的变量具有不同的作用域与生存期。作用域指出变量在那些地方有效。生存期指出变量的存活期,它从系统为变量分配内存空间开始,到系统收回此内存空间为止。自动型变量在堆栈

7、中分配,其作用域为所在函数内部,生存期也仅仅是所在函数存活的时间。程序在未进入函数之前和退出函数之后,其内部所定义的所有自动型变量都没有意义。静态型变量在内存的数据区分配,生存期是整个程序的执行时间。静态型局部变量的作用域与自动型变量一样。静态型外部变量的作用域是其所在的文件。外部参照型变量用于多个编译单位之间的数据传递。它的生存期就是整个程序的执行周期,作用域是整个源程序。寄存器型变量的作用域与生存期与自动型变量相同。根据变量定义的位置可以将变量区分为内部变量和外部变量。根据变量的生存期可以将变量区分为局部变量和全局变量。可以将一种类型的数据转换为另一种类型的数据,转换遵循以下规则: 双目运

8、算符两侧的运算对象类型不一致时,低级别类型的数据要转换为高级别类型的数据。 赋值表达式中,右边表达式的值自动转换为左边变量的类型。 需要时可进行强制类型转换。 转换的规则是:字符型到整型是取字符的ASCII码;整型到字符型、长整型到整型是去掉多余的高位;实型到整型要去掉小数;双精度实型到单精度实型是舍入的。 表达式中的所有实型数据都是转换为双精度型后才参加运算的。注意:长整型常量也有三种形式,只是其后必须加上L或l,如0317l,18L,0X10L等。书写实型常量时可以作些省略,省略规则:小数部分和整数部分可以省略,但不能同时省略;小数点不能省略;指数形式中的E或e不能省略。实型常量的有效位为

9、7位,实型常量中超过7位的部分是无效的。转义字符是一个字符常量。单个汉字不是字符常量,而是字符串常量。用双引号括起来的单个字符是字符串常量,而不是字符常量。在复合语句中定义的自动型变量和寄存器变量,其作用域仅仅限于该复合语句。外部变量之间不可重名;不同函数或复合语句中的内部变量可以重名,但在同一函数或复合语句中不可重名;外部变量可以和内部变量重名。外部参照型变量不允许初始化,内部静态型变量仅在第一次执行时有效。3、 运算符C语言的运算符根据运算对象的个数可分为单目运算符、双目运算符和三目运算符。根据运算对象和运算结果的数据类型可分为算术运算符、关系运算符、逻辑运算符、赋值运算符、逗号运算符等。

10、每种运算符都有其特定的运算规则,其操作对象的数据类型必须符合该运算符的要求。在多个运算符的表达式中,要按照运算符优先级的高低进行运算。优先级相同的运算符则按照结合性确定运算次序。运算符的优先级和结合型有以下规则: 在双目运算符中,算术运算符的优先级高于关系运算符,关系运算符的优先级高于逻辑运算符(逻辑非运算符!例外)。 条件运算符的优先级高于赋值运算符,赋值运算符的优先级高于逗号运算符,这三种运算符的优先级都低于其它所有运算符。 除了单目运算符、条件运算符和赋值运算符(包括复合赋值运算符)的结合性是自右向左外,其它运算符都是自左向右。 位运算符和逻辑运算符的优先级低于关系运算符。自增自减运算符

11、的操作对象必须是整型变量,不允许对常量、表达式和其它数据类型的变量操作。自增自减运算符作为前缀操作符和后缀操作符时,运算顺序是不同的,运算结果可能不同。当仅对整型变量操作时,前缀与后缀的运算结果是一样的。求余运算符%的操作对象只能是整型数据。位运算符的操作对象只能是整型数据。除运算符/运算结果的数据类型和运算对象的类型有关,如两个运算对象都是整型,运算结果位整型;如有一个或两个运算对象都是实型,则运算结果为实型。逗号运算符,的优先级比赋值运算符的优先级低,所以a = b,c 和 a = (b,c)的值不同。=是赋值运算符,=才是相等运算符。4、 表达式表达式是由常量、变量、函数通过运算符连接起

12、来的式子。仅一个常量、一个变量或一个函数也可以看成是表达式。根据表达式值的数据类型和所使用的运算符的功能,可将表达式分为算术表达式、赋值表达式等。表达式实际上是一个数据加工的过程。表达式代表了一个具体的值,求这个值的时候要注意表达式中各个运算符的优先级和结合性。二、 练习题1、 不是C语言基本数据类型的是 ( )A选项A) 指针类型 B) 整型 C) 无符号长整型 D) 单精度型2、 不是C语言整型常量的是 ( )C选项A) 01 B) 0x11 C) 081 D) 327683、 正确的实型常量是 ( )B选项A) 0x12 B) 12345.e-3 C) 1e0.5 D) e-54、 若有

13、以下定义语句,则sizeof(x)和sizeof(y)的值是 ( )A选项 struct int hour; int minute; int second; x, *y; y = &x;A) 6, 2 B) 6, 6 C) 3, 2 D) 3, 35、 下面字符串的长度为 ( )A选项char *s = “xab107A”;A) 5 B) 13 C) 8 D) 96、 执行下面程序后的输出结果是 ( )A选项#include int x = 10;main() char *s =” ABCD”; count(s); printf(“%d”, x);count(char *s) char *p

14、= s; int x; while(*p) p+; x = p-s; printf(“%d, ”, x); return (x);A) 6, 10 B) 10, 6 C) 10, 10 D) 6, 67、 运行以下程序,输出结果是 ( )C选项 #include main() int a = 1, b = 2;printf(“%d, “, func(a,b);printf(“%d, “, func(a,b);func(int x, int y) static int a = 0, b = 1; a = b * 2; b = a + x + y; return(b);A) 5, 5 B) 4,

15、7 C) 5, 13 D) 5, 78、 在C语言中,只能用于整型数据操作的运算符是 ( )D选项A) ! B) 2 & 15 % 5 +2的值是 ( )A选项A) 0 B) 1 C) 2 D) 310、假定有以下变量定义 int k = 7, x = 12; 则能使值为3的表达式是 ( ) D选项 A) x %= (k %= 5) B) x %= (k k%5) C) x %= k k%5 D) (x %= k) (k %= 5)11、设x,y,z均为int型变量,则执行以下语句后,t的值为 ( ) C选项 x = y = z = 0; t = +x | y+ & z+; A) 不定值 B)

16、 2 C) 1 D) 0第三章 基本语句一、 知识点1 基本语句C语言的语句可分为表达式语句、空语句、函数调用语句、复合语句和流程控制语句五大类。表达式语句的形式是:表达式;。C中的”;”是语句结束符,是语句不可缺少的部分。复合语句是以”为结束标志的,其后不必加语句结束符。2 输入输出函数C语言本身不提供输入输出语句,输入输出是通过标准库函数中定义的一系列输入输出函数实现的。C语言提供了两个可以进行格式转换的输入输出函数printf和scanf。格式转换符必须牢记。使用这两个函数时可以不必将头文件包含进来。C语言还提供了两个专门用于输入输出字符的函数getchar和putchar,使用这两个函

17、数时必须将头文件stdio.h包含进来。使用scanf函数时,如果在格式符之间有其他字符,则输入数据时,必须在相应位置输入这些字符。printf的格式控制串中允许出现转义字符。若要输出”%”,则输出格式为”%”。3 goto语句和语句标号goto语句是非格式化语句,一般不提倡使用。其作用是使程序的执行无条件转移到某处。标号只在其所在函数的内部起作用。二、 练习题1、 下列语句中符合C语言语法的语句是 ( )C选项A) a = 7 + b + = a + 7;B) a = 7 + b, b +, a + 7C) a = 7 + b, c = a + 7;D) a = 7 + b + c = a

18、+ 7;2、 设int a = 10, 则执行语句a += a *= a / 5 + 10后,a的值是 ( )A选项A) 240 B) 120 C) 30 D) 603、 执行下面程序片段后的输出结果是 ( )D选项int a = 15;printf(“a = %d, a = %o, a = %xn”,a,a,a);A) a = 15, a = 15, a = 15B) a = 15, a = 017, a = 0xfC) a = 15, a = 17, a = 0xfD) a = 15, a = 17, a = f4、 执行下面程序片段后的输出结果是 ( )A选项float f1 = 111

19、.111;printf(“%f f1=%8.3fn”,f1);A) %f f1= 111.111B) %f f1=111.111C) f1=111.111D) f1= 111.1115、 设x,y为int型变量,z为float型变量,有以下语句:scanf(“%2d%*2d%2d%f”,&x,&y,&z);printf(“%d, %d, %f”,x,y,z);现从键盘上输入12345678,则输出结果为 ( )B选项A) 12, 34, 5678.000000B) 12, 56, 78.000000C) 12, 56, 78.0D) 输出格式有误,不能通过编译6、 设有一数学运算式= 1/(1

20、*2*3),能够正确求出x值的C语言表达式是 ( )D选项A) 1/1*2*3 B) 1/(1*2*3)C) 1/1/2/(float)3 D) (1.0)/1/2/37、 若x是int型变量,且有下面的程序片段:for(x = 1; x4; x+) printf(x%2)?(“*%d”) : (“#%dn”),x);则执行上述程序片段后的输出结果是 ( )D选项A) *1 B) #1 #2 *2 *3 #3 C) #1 D) *1#2*2#3 *38、 有以下输入语句scanf(“c=%c,a=%d”,&c,&a),现在要输入字符c和整数10到变量c,a中,则正确的输入形式为 ( )A选项A

21、) c=c,a=10B) c 10C) c,10D) c=c a=109、 有以下程序,请问执行后i的值和语句i+的执行次数分别为 ( )B选项main() int i = 0; loop: i+; if(i+ 10) goto loop;A) 11, 6 B) 12, 6 C) 12, 10 D) 12, 1110、设i是int型变量,f是float型变量,用下面的语句给这两个变量输入值: scanf(i=%d,f=%f, &i, &f); 为了把100和765.12分别赋给i和f,则正确的输入为 ( ) B选项 A) 100765.12 B) i=100,f=765.12 C) 10076

22、5.12 D) x=100,y=765.1211以下叙述中正确的是: D选项 A) 输入项可以是一个实型常量,例如:scanf(%f, 3.5); B) 只有格式控制,没有输入项也可以正确输入数据到内存,例如:scanf(a=%d, b=%d); C) 当输入一个实型数据时,格式控制部分可以规定小数点后位数,例如:scanf(%4.2f, &f); D) 当输入数据时,必须指明变量地址,例如:scanf(%f, &f);12以下程序的输出结果是 ( )B选项#include main() int i = 1, j = 3; printf(%d, , i+); int i = 0; i += j

23、 * 2; printf(%d, %d , , i, j); printf(%d, %d, i, j):A) 1, 6, 3, 1, 3 B) 1, 6, 3, 2, 3C) 1, 6, 3, 6, 3 D) 1, 7, 3, 2, 3第四章 选择结构程序设计一、 知识点1、 条件分支语句条件分支语句的形式为:if(表达式) 语句1 else 语句2,其中else子句可以不选。书写条件分支语句时,要注意语句1和语句2都必须带有分号。语句1和语句2如果是多条语句,则必须以复合语句的形式出现,既必须以大括号括起来。若是复合语句,则在复合语句的大括号后无须再加”;”。语句1和语句2也可以是条件分支语

24、句,这样就形成了分支中又有分支的结构。这时可能出现以下形式:if(表达式1) if(表达式2) 语句1 else 语句2在这种形式中,else与最近的if配套。若要改变这种配套结构,可以利用大括号。2、 开关语句开关语句的格式为:swith(变量) case 常量1:语句1或空;case 常量2:语句2或空; case 常量n:语句n或空;default: 语句n+1或空;执行switch语句时,将变量逐个与case后的常量比较,若与其中一个相等,则执行该常量下的语句,如与任何一个常量都不相等,则执行default后的语句。switch中的变量和case后的常量表达式都必须是整型(或字符型)。

25、case后的常量表达式的值必须互不相同。每个case或default后可以有多个语句,且不需要用大括号括起来。由于在执行一个case语句后,控制将自动转移到语句后的下一个语句,因此,在一个case结束,下一个case开始前,使用break语句经常是必要的。二、 练习题1、 已知a,b,c的值分别为1,2,3,则执行下列语句后,a,b,c的值分别为 ( )D选项if(a + b) b+ else a+;B) if(a b) b+; printf(“%d”,b); else a+; printf(“%d”,a); C) if(a b) b+; printf(“%d”,b) else a+; pri

26、ntf(“%d”,a); D) if(a b) b+; printf(“%d”,b); else printf(“%d”,a); 3、 有以下程序,运行后的输出结果是 ( )A选项main() int a=2, b=0, c=-1; if(a = b+c)if(a 0) b = c = a;else if(a = 0) a = b = c = 0; else a = b = c = 1;else a = b = c = -1;printf(“%d,%d,%d”,a,b,c); A) 1,1,1 B) 0,0,0 C) 1,-1,-1 D) 2,2,24、 以下程序的输出结果是 ( )A选项ma

27、in() int x=1, y=0, a=0, b=0; switch(x) case 1 :switch(y) case 0 : a+; break; case 1 : b+; break;case 2 : a+; b+; break;printf(“a = %d, b=%dn”,a, b);A) a = 2, b = 1 B) a = 1, b = 1C) a = 1, b = 0 D) a = 2, b = 25、有以下程序片断,其表示的代数关系是 ( ) C选项y = -1;if(x != 0)if(x 0) y = 1;else y = 0; -1 (x 0) 1 (x 0) 0 (

28、x 0) 0 (x 0) -1 (x 0) 0 (x 0)6、设a,b,w为整型变量,ch为字符型变量,用if语句改写以下的程序段:switch(ch) case + : w = a + b; break; case - : w = a b; break; case * : w = a * b; break; case / : w = a / b; break;在下列写法中,错误的是 ( )C选项A) if(ch = +) w = a + b; B) if(ch = *) w = a * b; if(ch = -) w = a b; else if(ch = /) w = a / b; if(

29、ch = *) w = a * b; if(ch = +) w = a + b; if(ch = /) w = a / b; else if(ch = -) w = a - b;C) if(ch = +) w = a + b; D) if(ch = +) w = a + b; else if(ch = -) w = a b; else if(ch = -) w = a - b; if(ch = *) w = a * b; if(ch = *) w = a * b; else w = a / b; else if(ch = /) w = a / b;7、实型变量a,b中放有两门课的成绩,如果两门

30、成绩都及格(成绩=60),则显示”pass”,如果a成绩不及格,则显示”fail”,如果a成绩及格而b成绩不及格则不做任何显示。下列程序段中可实现上述要求的是 ( )B选项A) if(a = 60) B) if( a 60) printf(“fail”); printf(“pass”); else if(b = 60) else printf(“pass”); printf(“fail”);C) if(a = 60) & (b= 60) D) if(b = 60) printf(“pass”); if(a = 60) else if(b 5) printf(%dn, m); else prin

31、tf(%dn, m-); A) 7 B) 6 C) 5 D) 49、当a=1,b=3,c=5,d=4时,执行下面一段程序后,x的值为 ( ) B选项 if(a b) if(c d) x = 1; else if(a c) if(b d) x = 2; else x = 3; else x = 6; else x =7; A) 1 B) 2 C) 3 D) 610、运行以下程序后,如果从键盘上输入china#,则输出结果为 ( ) C选项 #include main() int v1 = 0, v2 = 0; char ch; while(ch = getchar() != #) switch(

32、ch) case a : case h : default: v1+; case 0 : v2+; printf(%d, %dn, v1, v2); A) 2,0 B) 5,0 C) 5,5 D) 2,511、设有如下定义: int a=1, b=2, c=3, d=4, m=2, n=2; 则执行表达式:(m = a b) & (n = c d)后,n的值为 ( ) B选项 A) 1 B) 2 C) 3 D) 012、在执行以下程序时,为了使输出结果为:t=4,则给a和b输入的值应满足的条件是 ( )C选项main() int s, t, a, b; scanf(%d,%d, &a, &b)

33、; s = 1; t = 1; if(a 0) s = s + 1; if(a b) t = s + 1; else if(a = b) t = 5; else t = 2*s; printf(t = %dn, t);A) a b B) a b 0 C) 0 a a b13、若有以下定义: float x; int a, b; 则正确的switch语句是 ( ) C选项 A) switch(x) B) switch(x) case 1.0 : printf(*n); case 1, 2 : printf(*n); case 2.0 : printf(*n): case 3 : printf(*

34、n); C) switch(a+b) D) switch(a+b); case 1 : printf(*n); case 1 : printf(*n); case 1+2 : printf(*n): case 2 : printf(*n); 14、设有以下程序:#include main() chat ch1,ch2; scanf(“%c%c”,&ch1,&ch2); if(ch1 != B) switch(ch2) case B : switch(ch1) case A : printf(“AB”); case B : printf(“BB”); break; case A : switch

35、(ch1) case A : printf(“AA”); case B : printf(“BA”); else printf(“Nothing”);若执行此程序段时输入的数据是AB,则程序的输出是 ABBB15、下列程序段的输出结果是 passwarn 。 int n = c; switch(n+) default : printf(error); break;case a : case A : case b : case B : printf(good); break;case c : case C : printf(pass);case d : case D : printf(warn)

36、; 16、以下两条if语句可合并成一条if语句为:if(a = b) x = 1; printf(#x = %dn, x); else y = 2; printf(选项*y = %dn, y); if(a b) printf(选项*y = %dn, y); else printf(#x = %dn, x); 第五章 循环结构程序设计一、 知识点1、 三种循环结构语句用于实现循环结构的控制语句有三种:for循环语句,while循环语句和do while循环语句。循环体是希望多次执行的部分,可以是单个语句,也可以是复合语句,甚至可以是空语句。for循环语句和while循环语句都是首先测试循环条件,

37、如果满足则执行循环体,否则退出循环体。do while循环语句则是先执行循环体,后测试循环条件,所以循环体至少要执行一次。for循环语句在开始时首先设置循环初始条件,再测试循环条件;while语句则不设置循环初始条件,直接测试循环条件。三种循环语句都是根据循环条件来确定是否继续执行,所以在循环体内部或循环条件中必须有改变循环条件的动作,否则可能出现死循环等异常情况。循环条件可以不是单一的计数,也可以用其它形式或动作,如getchar()一类的取值动作。三种循环可以互相嵌套。对for语句要注意省略某一表达式的形式。2、 ontinue语句和break语句i. break语句break语句只能出现在三种循环语句和switch语句中,其作用是中断这四种语句的执行。ii. continue语句continue语句只能出现在三种循环语句中,其作用是中断循环体的本次执行。循环语句是比较重要的内容,应熟练掌握,特别是循环条件的形成和判断、循环体实现的功能、三种语句的不同执行过程等,是考试的重点所在。二、 练习题

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1