C语言考研笔试易错考点

上传人:博****1 文档编号:498390673 上传时间:2023-01-12 格式:DOCX 页数:20 大小:33.31KB
返回 下载 相关 举报
C语言考研笔试易错考点_第1页
第1页 / 共20页
C语言考研笔试易错考点_第2页
第2页 / 共20页
C语言考研笔试易错考点_第3页
第3页 / 共20页
C语言考研笔试易错考点_第4页
第4页 / 共20页
C语言考研笔试易错考点_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《C语言考研笔试易错考点》由会员分享,可在线阅读,更多相关《C语言考研笔试易错考点(20页珍藏版)》请在金锄头文库上搜索。

1、C语言考研笔试易错考点1. 关于条件表达式。形如:逻辑表达式?表达式1 :表达式2。 逻辑表达式的值若为非零(真),则条件表达式的值等于表达式1,若逻辑表达值的值为零 (假),则条件表达式的值等于表达式2的值。特别要注意的是条件表达式的结合方向是从 右向左结合的。例:与y=(xO?l:xO?-l:O);的功能相同的if语句是:if(x0) y=1;else if(x0)y=-1;else y=0;解:y=(xO?l:xO?-l:O)与 y=(xO?l:(xO?-l:O)等价。2. 关于赋值表达式,将赋值号=右侧表达式的值赋给赋值号左边的变量。赋值表达式的值 为执行赋值后被赋值的变量的值。形如a

2、=b , b会被转换为符合a的类型,如果不能转换, 要么报警告,要么报错。赋值表达式也是从右向左结合的。例:下列选项中,不正确的赋值语句是_C_A) +t B) n1=(n2=(n3=0)C)k=1=jD) a=b+c=1解:C选项里先执行的是右结合的1=j显然错误,注意B选项是以赋值表达式赋值,是正确 的,其整个表达式最终的值是0。3. 关于逗号表达式,顺序求(表达式1,表达式2表达式n)的值,则整个表达式的类 型和值都为表达式n的值。例:设有以下定义:main()int x=10,y=3,z; printf(%dn,z=(x%y,x/y);输出结果是_3_4. 关于实型表达式,只要表达式中

3、有一个运算量是实型(float或double),运算过程中 所有的运算量都要转换为double型,表达式的结果也为实型。其余类似,即往宽的地方转 换。如果两个整形值相除,其结果被截尾取整,如果该操作数是负数,则截断的方向并无规 定。例:若已定义X和Y为double型,则表达式:x=1,y=x+3/2的值是_C_A) 1B) 2C) 2.0D)2.5解:/的优先级较高,所以先算3/2,这是两个整形相除,结果是1,而不是1.5。然后算x+1,因为x是double型,所以整形的运算量1要转换为double型,最终结果为double型。5. 形如a+=x的表达式的等价于a=a+x。例:设int a=1

4、2,则执行完语句a+=a-=a*a后,a的值是_-264解:赋值表达式的结合顺序是从右向左结合的。先执行 a-=a*a,即 a=a-a*a,在这一步时 a=12-12*12,即 a=-132再执行 a+=,即 a=a+a,在这一步时 a=-132+(-132),所以 a=-2646. 常用字符 ASCI I 码:048, 957, A65, a97, 0或 0000(代表空操作字符,同时也是字符串的结束标记),小写字母比大写字母的ASCII 码大,两者相差32。例:若有以下定义和语句:char c1=b,c2=e;printf(%d,%cn,c2-c1,c2-a+A);则输出结果是_B_A)

5、2,MB) 3,EC) 2,eD) 输出结果不确定7. a+就是将a的值先用作表达式的值,然后a的值再加1,+a是先将a的值加1,然后 再将a的值作为表达式的值。例 1: main()int a=10;int i;i=a+ + +a + a+ + +a;printf(i=%d,a=%dn,i,a);问i=多少,a=多少?解:这题的答案是不确定的,a=14,但i根据编译器的不同或者等于45,或者等于48。例2: 两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是_7和5_ main()int x;scanf(%d,&x);if(x+5) printf(%d,x);else printf

6、(%dn,x-);&各类运算符的优先级别:详细请看谭老的C程序设计(第二版)的P375页。 初等运算符(括号加结构体运算符,单目运算符(注意逻辑非运算符! 它是除初等运算符外具有最高优先级别的) 算术运算符(先乘除模,后加减,再移位)关系运算符 逻辑运算符(& ,| ,不包括 ! ) 条件运算符(唯一一个三目运算符,即 ? :)赋值运算符 逗号运算符(即顺序求值运算符) 例:以下十个运算符+ ! != , ?: & = | %中优先级别最高和最低的分别是!和,。9. static的作用。l一是其声明的局部变量为静态局部变量,静态局部变量的值在程序整个运行期间不释放,即下次调用该函数时其值仍保留

7、;其如果在编译时赋初值的,只赋值一次; 不赋初值的,编译器自动赋值为0(数字型)或空字符(字符型);虽然静态局部变量在函 数调用结束后仍存放,但外部的程序仍然不能引用。l二是其声明的外部变量为静态外部变量,只能用于本文件,即使其他文件用了 extern仍不能引用。10. 十进制(一般的数字序列),八进制(以0开头的数字序列,字符用ddd赋值),十六进制(以0x开头的数字序列,字符用xhh赋值)。另外1.5e-2表示1.5*10-2或者0.015。 例:设有以下语句:char c;c=x1C;则C的二进制的值是_C_A) 00011011B) 00010100C) 00011100D) 0001

8、1000解:c=x1C;是指以十六进制的形式给字符c赋值,其相当于c=28;所以转换为二进制即11100。11. 定义结构体与typedef的代码:struct people/ people 是结构体名 /成员列表/分号千万不能漏/用typedef方式定义新的类型名SP,char name10; int age;float height; double weight;typedef struct people SP;方便些 / 也可以写成这样 typedef struct people char name10; int age;float height; double weight;SP;12

9、. 判别几个容易混淆语句的异同。异同都在我的脑海里,懒得打出来了,希望你自己想想 然后可以印在你脑海里。break 与 continue while,dowhile 与 forifelse ifelse与 switchcasedefaultdefine 与 typedef13. int *p4与 int (*p)4的异同。lint *p4表示p是指针数组。由于口比*优先级高,因此p先与4结合,形成p4形式,这显然是数组形式,它有4个元素。然后再与p前面的“*”结合,“*” 表示此数组是指针类型的,每个数组元素(相当于一个指针变量)都可指向一个整型变量。lint(*p)4表示p是一个指针变量。它

10、有4个元素,每个元素为整型。也就是p所指的对象是有4个整型元素的数组,即p是行指针。应该记住,此时p只能指向一 个包含4个元素的一维数组,p的值就是该一维数组的首地址。p不能指向一维数组中的第 j个元素。14. *p+与*(+p), *(p+) 与*(+p),还有 (*p)+l*p+与*(+p)作用不同。前者是先取*p值,后使p的指针值加1。后者是先使p的指针值加1,再取*p值。l若p初值为a(即&a0),输出*(p+)时,得a0的值,而输出*(+p),则得到a1的值。l(*p)+表示p所指向的元素值加1,即(a0)+,如果a0=3,则(a0)+的值为4。注意:是元素值加1,而不是指针值加1。

11、15. 若有定义 int asizesize;l请记住*(a+i)和a i 是等价的。l*(a i +j)、*(*(a+i)+j)都是二维数组元素a i j的值。有人可能会问“a+1的值和a+1的地址怎么会是一样的呢”?其实,+1是地址(指向第1行首地址), 而*(a+1)并不是“a+1单元的内容(值)”,因为a+1并不是一个实际变量,也就谈不上它的 内容。*(a+1)就是a1,而a1是一维数组名,所以也是地址。以上各种形式都是地址计 算的不同表示。la,a0的值虽然相同,但是由于指针的类型不同(a是指向一维数组,a0指向a00元素)因此,对这些指针进行加1的运算,得到的结果是不同的。请记住,

12、二 维数组名(如a)是指向行的。因此a+1中的“1”代表一行中全部元素所占的字节数。一维 数组名(如a0, a1)是指向列元素的。a0+1中的“1”代表一个元素所占的字节数。在行指针前面加一个*,就转换为列指针。例如,a和a+1是行指针,在它们前面加一个*就是 *&和*(a+l),它们就成为列指针,分别指向a数组0行0列的元素和1行0列的元素。反 之,在列指针前面加&,就成为行指针。例如&a是指向0行0列元素的列指针。例1:设有数据定义如下,则可以引用组中第i个元素(0=i=9)的表达式有(ABCD)int a10=0,1,2,3,4,5,6,7,8,9,*p=a;A、a i B、*(a+i)

13、C、p i D、*(p+i)E、*p+i 例2:若有以下的变量说明和语句,则在语句被执行后,*(*(pt+1)+2)表示的数组元素是 _D_int t33,*pt3,k; for(k=0;k3;k+) ptk=&tk0;A) t20B)t22C)t21D) t12南师教育技术考研C语言第一章 概述1. C语言的特点 语言简洁、紧凑,使用方便、灵活。共有3 2个关键字,9种控制语句。 运算符丰富,公有3 4种运算符。 数据结构丰富,数据类型有:整型、实型、字符型、数组、指针、结构体、共用体等。 具有结构化的控制语句(如ifelse、while、dowhile、switch、for) 语法限制不太

14、严格,程序设计自由度大。 允许直接访问物理地址,能进行位(bit)操作,可以直接对硬件操作。 生成目标代码质量高,程序执行效率高。 可移植性好。2. C语言的用途C虽不擅长科学计算和管理领域,但对操作系统和系统实用程序以及对硬件进行操作方面, C有明显的优势。现在很多大型应用软件也用C编写。第二章 数据类型、运算符与表达式I. C的数据类型c的数据类型包括:整型、字符型、实型或浮点型(单精度和双精度)、枚举类型、数组 类型、结构体类型、共用体类型、指针类型和空类型。2. 常量与变量常量其值不可改变,符号常量名通常用大写。变量其值可以改变,变量名只能由字母、数字 和下划线组成,且第一个字符必须为字母或下划线。否则为不合法的变量名。变量在编译时 为其分配相应存储单元。3. 整型数据整型常量的表示方法:十进制不用说了,八进制以0开头,如0123,十六进制以Ox开头, 如 Oxle。整型变量分为:基本型(int)、短整型(short int)、长整型(long int)和无符号型。 不同机器上各类数据所占内存字节数不同,一般int型为2个字节,long型为4个字节。4. 实型数据实型常量表示形式:十进制形式由数字和小数点组成

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号