C语言采用多文件的工程结构百度,C语言学习知识复习资料结构框架学习知识重点.doc...

c8da8f5a7cda2d62dda9e5a200b168b9.gifC语言学习知识复习资料结构框架学习知识重点.doc

.思维导图1C语言程序设计知识结构第一课 C语言程序设计基础思维导图2第一课 C语言程序设计基础本课主要知识点1.知识点C程序基础l C语言是一种结构化程序设计语言。三种基本结构顺序、选择、循环。例1(2010-09-11)以下关于结构化程序设计的叙述中正确的是(C)A) 一个结构化程序必须同时由顺序、分支、循环三种结构组成B) 结构化程序使用goto语句会很便捷C) 在C语言中,程序的模块化是利用函数实现的D) 由三种基本结构构成的程序只能解决小规模的问题例2(2011-03-26)计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的是(A)AC语言程序仅可以编译执行BC语言程序仅可以解释执行CC语言程序既可以编译执行又可以解释执行D以上说法都不对【解析】计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序。 翻译的方式有两种,一个是编译,一个是解释。C语言程序仅可以编译。例3(2011-03-26)以下叙述中错误的是 DAC语言的可执行程序是由一系列机器指令构成的B用C语言编写的源程序不能直接在计算机上运行C通过编译得到的二进制目标程序需要连接才可以运行D在没有安装C语言集成开发环境的机器上不能运行C源程序生成的.文件【解析】C程序开发过程编辑(.c)编译(.obj)链接可执行文件(.)2.知识点C语言程序的构成l C程序是由函数构成的,一个C程序有且仅有一个main函数。一个函数由两部分组成函数的首部和函数体。函数体包括声明部分和执行部分。一个C程序总是从main函数开始执行(即程序的入口),由main函数结束,(即程序的出口)。例1(2010-03-12)以下叙述正确的是(B)A) C语言程序是由过程和函数组成的B) C语言函数可以嵌套调用,例如funfunxC) C语言函数不可以单独编译D) C语言中除了main函数,其他函数不可作为单独文件形式存在例2(2011-09-11)以下叙述中错误的是 (C) A.C语言编写的函数源程序,其文件名后缀可以是CB.C语言编写的函数都可以作为一个独立的源程序文件C.C语言编写的每个函数都可以进行独立的编译并执行D.一个C语言程序只能有一个主函数3.知识点标识符l 命名规则 标识符中只能包含字母 a-z,A-Z,数字0-9,下划线_。第一个字符必须是字母或下划线。类型说明符int,float,double等语句定义符if,for,while等l 分类都是小写 关键字(32个) (有固定含义,不可改变)库函数的名字printf , scanf 等编译预处理命令名include等 预定义标识符 (有特殊含义,可以改变) 用户自定义的标识符 格式合法,不能使用关键字,见名知意例1(2010-03-13)以下C语言用户标识符中,不合法的是(D)A_1 BAaBc Ca_b Da-b4.知识点数据类型例1(2010-03-16)以下关于C语言数据类型使用的叙述中错误的是(D)A若要准确无误差的表示自然数,应使用整数类型B若要保存带有多位小数的数据,应使用双精度类型C若要处理如“人员信息”等含有不同类型的相关数据,应自定义结构体类型D若只处理“真”和“假”两种逻辑值,应使用逻辑类型【解析】结构数据类型是根据已定义的一个或多个数据类型用构造的方法来定义的,一个结构类型的值可以分解成若干个“成员”或“元素”,每个“成员”都是一个基本数据类型或又是一个构造类型,C项正确。C语言没有逻辑类型,故D项错误。例2(2011-03-26)定义无符号整数类为UInt,下面可以作为类UInt实例化值的是(B)A-369 B369 C0.369 D整数集合1,2,3,4,5【解析】无符号整数类型为只有正整数和0,所有选择B。5.知识点常量l 整型常量十进制整常数没有前缀,其数码为0-9。例如65535,-568八进制整常数以0开头,其数码为0-7。例如015十六进制整常数以0X或0 x开头,其数码为0-9,A-F或a-f。例如0 x2A长整型数整型常数后缀为L或l。例如358000L无符号数整型常数后缀为U或u。例如158ul 实型常量的形式小数形式必须有小数点,小数点前后不能同时没有数字。指数形式aEn(其中a表示十进制数,E阶码标志,n阶码)。E前E后必须有数字,E后必为整数,可以带符号。例如2.1E-3、5E8例1(2011-09-13)以下选项中关于C语言常量的叙述错误的是(D)A.所谓常量,是指在程序运行过程中,其值不能被改变的量B.常量分为整型常量、实型常量、字符常量和字符串常量C.常量可分为数值型常量和非数值型常量D.经常被使用的变量可定义成常量【解析】根据常量的基本概念,则不难判断A、B、C均正确。例1(2009-04-13)以下选项中,能用作数据常量的是(D)Ao115 B0118 C1.5e1.5 D115L【解析】八进制整常数以0开头,A项错误;八进制整常数的数码味0-7,B项错误;实型常量的指数形式E后必为整数,故C项错误;长整型数后缀为L或l,故D项正确。例2(2010-03-26)以下选项中可用作C程序合法实数的是( A)A.1e0 B3.0e0.2 CE9 D9.12E【解析】实型指数表示方式“E前E后比有数,E后必须是整数”,故选Al 字符常量用单引号括起来的一个字符。包括普通字符常量和转义字符。普通字符常量如a、A、1。转义字符由一对单引号引起来的以开头的若干字符的组合。如n表示回车换行、表示反斜线符、表示单引号符、”表示双引号、ddd表示八进制数、xhh表示十六进制数。例3(2010-09-15)以下选项中能表示合法常量的是(C)A整数1,200 B实数1.5E2.0 C)字符斜杠 D)字符串“007”【解析】表示整常量不能用逗号分隔,A项错误;实型常量的指数形式E后必为整数,故B项错误;007是转义字符,只能用单引号括起来,不能用双引号或其他括号,故D项错误。例4(2010-03-26)以下选项中不能用作C程序合法常量的是( B)A1,234 B123 C123 Dx7G【解析】A中的,在编译时会出错的,直接写成1234即可,B是一个三位八进制数代表的字符,C是一个数字常量,D是一个字符串,其中x7是一个一位十六进制数代表的字符,也即D中的字符串是两个字符,如果sizeof的话是3,如果strlen的话是2。6.知识点变量l 整型变量和实型变量以考试标准Viusal c6.0为例,说明各类型变量所占的位数。 类型所占位数所占字节数类型所占位数所占字节数short162unsigned int324int324unsigned long324long324float324unsigned short162double648例1(2010-09-38)有以下程序include stdio.hmain0int s,t,A100;double B6;ssizeofA; tsizeofB;printf“d,dn”,s,t;在VC6平台上编译运行,程序运行后的输出结果是CA2,4 B4,4 C4,8 D10,6【解析】在VC6平台上,int型占4个字节,double型占8个字节,故答案是C。l 字符变量一个字符变量只能存放一个字符。字符串不能存放在字符变量中,只能用字符数组或指针存放字符串。例1(2009-09-22)有以下定义语句,编译时会出现编译错误的是CAchar aa; Bchar an; C)char aaa; D)char ax2d;【解析】一个字符变量只能存放一个字符,A项字符变量存放的是普通字符常量;B、D项字符变量存放的转义字符;字符常量只能是单个字符,不能是字符串,aa不是单个字符,故C项错误。7.知识点ASCII码l 0的ASCII码值为48;A的ASCII码值为65;a的ASCII码值为97。l 大写字母与小写字母的ASCII码值相差32。例1(2009-09-23)有以下程序include stdio.hmainchar c1,c2;c1A8-4;c2A8-5;printf“c,dn”,c1,c2;已知字母A的ASCII码为65,程序运行后的输出结果是(A)AE,68 BD,69 CE,D D输出无定值【解析】A的ASCII码值为65,8的ASCII码值为56,4的ASCII码值为52,6556-5269,对应于字符E。5的ASCII码值为53,6556-5368,对应于字符D。字符变量c1以c格式输出,即E。字符变量c2以d格式输出,即68。故答案是A。8.知识点进制转换l 十进制转换成二进制、八进制、十六进制将十进制的数字除以2(8、16),得到的商数继续除以2,直到商为0,然后将各次相除所得的余数从后往前排列。l 二进制、八进制、十六进制转换成十进制将二(八、十六)进制数的每一位数从高位到低位乘以2的n-1次幂,n为该位所在的位数。l 二进制与八进制之间的转换每个八进制数字转换成3位二进制数字。l 二进制与十六进制之间的转换每个十六进制数字转换成4位二进制数字。例1(2010-09)以下程序运行后的输出结果是 2008 。include stdio.hmainint a200,b010;printf(“ddn”,a,b);【解析】八进制数010转换成十进制数为8,按“dd”格式分别输出a、b,即2008。9.知识点运算符的优先级级别由大到小逻辑非 算术运算符 关系运算符 逻辑与 逻辑或 条件运算符 赋值运算符10.知识点强制类型转换运算符l 一般形式(类型说明符)(表达式)l 功能把表达式的运算结果强制转换成类型说明符所表示的类型例1(2009-04-06)表达式intdouble5/22.5的值是4。【解析】intdouble5/22.5intdouble22.5)int2.0000002.5int4.500000 4。例2以下程序运行后的输出结果是 () 。main int a;aintdouble3/20.5int1.99*2;printfdn,a;答案3【解析】3/21,double3/20.51.5,int1.99*22,所以double3/20.5int1.99*23.5,故a3。11.知识点算术运算符 、、*、/、参与运算的量均为整型。/当除号左右两边都是整数的时候,商也要是整数,如果不是整数则舍弃小数部分。当参与运算量有一个为实型,则商为double型。例1(2011-09-14)若有定义语句int a10;double b3.14;,则表达式Aab值得类型是 (C)A.charB.intC.doubleD.float【解析】各种类型数据混合运算时,最终结果的类型可依据以下转换规律char - short - int - long - float - double例1(2011-09-15)如有定义语句int x12,y8,z;,在其后执行语句z0.9x/y,则z的值为 (B)A.1.9 B.1 C.2 D.2.4【解析】x,y,z均为整型变量,因此x/y结果为1,即z0.911.9,z最终结果为1例1(2010-09-14)有以下定义int a;long b;double x,y;则以下选项中正确的表达式是(A)Aaintx-y Baxy; C a*yb Dyxyx【解析】参与运算的左右操作数均为整型,故A项正确,C项错误。B项是赋值语句,不是表达式。赋值运算符左边必须是变量,而不是表达式,而D项中xyx,错误。12.知识点逗号表达式l 一般形式表达式1,表达式2表达式nl 求值过程自左向右依次求解,最后一个表达式的值为整个逗号表达式的值。例1(2009-04-14)设有定义int x2;以下表达式中,值不为6的是Ax*x1 Bx,2*x Cx*1x D2*x,x2【解析】A项xx*x12*216;B项x后,x的值为3,2*x的值为6,整个逗号表达式的值为6;C项xx*1x2*36;D项xx2224,整个逗号表达式的值为4。故答案是D。13.知识点自增自减运算符i i自加1后再参与运算 i i参与运算后再自加1--i i自减1后再参与运算 i-- i参与运算后再自减1和- -的运算对象只能为变量,不能是常量或表达式。例1(2009-09-06)若有定义语句int a5;则表达式a的值是 5 。【解析】表达式a的值是a未加1之前的值,即5。.l 当或与printf语句结合时,若/--x的形式,则先自增/自减,然后输出;若x/--的形式,则先输出x原值,在进行自增/自减操作。例2(2011-03-26)有以下程序include main int x011;printfdn,x;程序运行后的输出结果是(C)A12 B11 C10 D9【解析】011是一个八进制的数,转为十进制则为1*819;x是x先自增1再参与其他运算,所以先x自增1为10再输出即为10,故选C。14.知识点赋值表达式l 一般形式变量名表达式l 赋值运算符左边必须是变量,而不是表达式。例1(2010-03-14)若有定义double a22;int i0,k18;则不符合C语言规定的赋值语句是( C)Aaa,i; Bi(ak)ik; Cia11; Dia;【解析】a为double型,参与运算的操作数均为整型,故C项错误。例2(2011-03-26)若有定义语句int a3,b2,c1;,以下选项中错误的赋值表达式是(A)Aab43; Babc1; Cab4c; Da1bc4;【解析】赋值表达式的左边必须是变量不能是表达式。而答案A中,(4)是一个赋值表达式。l 复合赋值运算符和表达式、、*、/、、、、 cc____D____;printf“dn”,c;若要使程序的运行结果为248,应在下划线处填入的是A2 B|248 C程序运行后的输出结果是(A)A21 B11 C6 D1【解析】左移2位相当于该数乘以22。52相当于5乘以4等于20。20|121。故答案是A。l 右移运算把左边的运算数的各二进位全部右移若干位。高位补0,低位丢弃。右移一位相当于该数除以2。右移n位相当于除以2n。例3(2009-09-39)若有以下程序段int r8;printf“dn”,r1;输出结果是(C)A16 B8 C4 D2【解析】右移一位相当于该数除以2。81相当于除以2,等于4,故答案是C。16.知识点关系运算符和表达式例1(2010-09-08)在C语言中,当表达式值为0时表示逻辑值“假”,当表达式值为 非0 时表示逻辑值“真”。例2(2010-03-06)设x为int型变量,请写出一个关系表达式 x30,执行表达式(k1k1k2)double y3.141593;printf“d8.6f”,x,y;的输出结果是(A)A123.141593 B12 3.141593 C12,3.141593 D123.1415930【解析】以8.6f格式输出,即输出的总宽度为8,小数的位数为6。19.知识点格式输入函数scanf(1)一般形式scanf“格式控制字符串”,地址列表;(2)若格式控制字符串中有非格式字符串,则按原样输入。若格式控制字符串中没有非格式字符作输入数据之间的间隔,则可用空格、Tab、回车作间隔。例12011-09-16若有定义int a,b;,通过语句scanf“d;d”,,能把整数3赋给变量a,5付给变量b的输入数据是 A.3 5B.3,5C.3;5D.35【解析】scanf格式字符串中两个d之间带有非格式字符分号,运行时应原样输入。例12005-04-19有以下程序mainint m,n,p;scanf“mdndpd”,printf“dddn”,m,n,p;若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是(A)Am123n456p789 Bm123 n456 p789Cm123,n456,p789 D123 456 789【解析】scanf“mdndpd”, 格式控制字符串中有非格式字符串,则按原样输入,故答案是A。例22011-03-26有以下程序段char name20;int num;scanfnames numd,name;当执行上述程序,并从键盘输入nameLili num1001回车后,name的值(A)ALili BnameLili CLili num DnameLili num1001【解析】scanf中格式字符串的非格式字符串原样输入,如其中的name和num,所以接受到的name值是后面的Lili,num值为1001。故选A。(3)在输入字符数据时,若格式控制字符串中无非格式字符,则认为所有输入的字符均为有效字符。空格会被当作字符赋值给变量。例3(2009-04-23)有以下程序include stdio.hmainint a1,a2; char c1,c2;scanf“dcdc”,printf“d,c,d,c”,a1,c1,a2,c2;若想通过键盘输入,使得a1的值为12,a2的值为34,c1的值为字符a,c2的值为字符b,程序输出结果是12,a,34,b则正确的输入格式是(以下_代表空格,CR代表回车)A12a34bCR B12_a_34_bCR C12,a,34,bCR D12_a34_bCR【解析】空格会被当作字符赋值给变量,故B、D错误;C项中逗号会被当作字符赋值给变量,故C项错误。(4)格式字符串l 一般形式*输入数据宽度长度类型l *表示该输入项,读入后不赋予相应的变量。l 输入数据宽度用十进制数指定输入的字符数。例4(2010-09-07)有以下程序include stdio.hmainint x,y;scanf“2dld”, printf“dn”xy;程序运行时输入1234567程序的运行结果是 34579 。【解析】2d输入的数据宽度为2,x的值为12,y的值为34567,xy34579。例5(2009-04-16)若有定义语句double x,y,*px,*py;执行了px Bscanf“ff”,Cscanf“lfle”,px,py; Dscanf“lflf”,x,y;【解析】A、D项地址列表,应为scanfd,c2c19;printfccn,c1,c2;若程序运行时从键盘输入48回车,则输出结果为 (09)。【解析】输入48,则c148,c2489,以字符输出c1和c2,则为输出ASCII码为48和57对应的字符,分别为0和9。20.知识点字符输出函数putchar一般形式putchara;putchar101;21.知识点字符输入函数getchar一般形式getchar;或chgetchar;例1(2010-03-15)有以下程序include stdio.hmainchar a,b,c,d;scanf“cc”,cgetchar; dgetchar;printf“ccccn”,a,b,c,d;当执行程序时,按下列方式输入数据(从第1列开始,CR代表回车,注意回车也是一个字符)12CR34CR则输出结果是BA1234 B12 C12 D12 3 34【解析】以c格式读取一个字符,以getchar形式也是读取一个字符。空格会被当作字符赋值给变量。所以,a1,b2,cn,d3。l getchar经常作为while循环条件,判断输入哪一个字符时,循环结束。例如,输入字符串,直到输入0,程序结束,则可写成while getchar0例2(2011-03-26)有以下程序段main while getcharn;以下叙述中正确的是(C)A此while语句将无限循环B getchar不可以出现在while语句的条件表达式中C当执行此while语句时,只有按回车键程序才能继续执行D当执行此while语句时,按任意键程序就能继续执行【解析】while条件表达式getcharn只要输入的字符不是回车,就一直执行循环,而循环内是一个空语句,所以按回车键程序才能继续执行,选择C。第二课 选择结构与循环结构本课重要知识点1.知识点if语句l if(表达式),其中表达式可以是任意合法的C语言表达式。例1(2011-09-19)下列条件语句中输出结果与其他语句不同的是(D)A.if(a) printf“dn”,x; else printf“dn”,y;B.if(a0) printf“dn”,y; else printf“dn”,x;C.if(a0) printf“dn”,x; else printf“dn”,y;D.if(a0) printf“dn”,x; else printf“dn”,y;【解析】作为if语句的条件,a等价于a0,因此 A和C是等价的。例2(2011-03-26)if语句的基本形式是if表达式语句,以下关于“表达式”值的叙述中正确的是(D)A必须是逻辑值 B必须是整数值 C必须是正数 D可以是任意合法的数值【解析】表达式不限于关系表达式、逻辑表达式,也可以是任意的数值类型,其中非0为真,0为假。故选D。l 对于单个if语句,其后跟随的受if控制的只能是1个语句或者是1个复合语句。例1(2009-09-17)设有定义int a1,b2,c3;以下语句中执行效果与其它三个不同的是(C)Aifab ca,ab,bc; Bifab ca,ab,bc;Cifab ca;ab;bc; Difab ca;ab;bc;【解析】对于单个if语句,其后跟随的受if控制的只能是1个语句或者是1个复合语句。故C项,ifab条件成立时,语句ca;才被执行,而无论ifab条件成立与否,语句ab;bc;都会被执行。A、B、D项,只有ifab条件成立时,语句ca; ab;bc; 才被执行。例2(2011-03-26)以下程序运行后的输出结果是 200 main int x10,y20,t0;ifxytx;xy;yt;printfd dn,x,y;【解析】x10,y20,所以xy为false,tx;不执行,直接执行xy;yt;x为20,y为0。注意和ifxytx;xy;yt;区别。l 当多个if表达式单分支形式并行出现时,其执行顺序是先判断第一if单分支的条件,如果为真,执行其后面的语句,执行完后,继续向下执行。判断第二个if单分支语句,依次类推。如果第一个if表达式的值为假,则不执行其后的语句,而去判断第二个if单分支条件。例1(2011-03-26)有以下程序main int x;scanfd,ifx15 printfd,x-5;ifx10 printfd,x;ifx5 printfdn,x5;若程序运行时从键盘输入12回车,则输出结果为 1217 【解析】输入12,比较不大于15所以不执行ifx15内的语句;大于10执行printfd,x;输出12;大于5执行printfd,x5;输出17。2.知识点if语句的嵌套l 内嵌结构中,else总是与前面最近的且未曾配对的if语句配对,组成一对if-else语句。例2(2010-09-18)有以下程序include stdio.hmainint a1,b0;ifa b;else ifa0 ifa b2;else b3;printf“dn”,b;程序运行后的输出结果是(A)A0 B1 C 2 D3【解析】else总是与前面最近的且未曾配对的if语句配对,组成一对if-else语句。即else b3;与ifa b2;配对。ifa不成立,不执行b;else ifa0不成立,不执行ifa b2;else b3;故直接执行printf“dn”,b;,输出结果为0。3.知识点条件表达式l 一般形式表达式1表达式2表达式3l 执行过程表达式1的值为真,条件表达式取表达式2的值;表达式1的值为假,条件表达式取表达式3的值。例1(2009-09-19)以下程序段中,与语句kabbc100;功能相同的是(A)Aifab B ifab||bc k1;else k0; else k0;C ifab k0; D ifab k1;else ifbc k1; else ifbc k1;else k0;【解析】条件运算符的结合性是从右至左。当bc时,bc10的值为1,kab10,同时当ab时,ab10的值为1,此时k1。否则k0。故答案为A。4.知识点switch语句l switch语句的圆括号中的表达式的值必须是整型或字符型,不能为实型。l case后的表达式可以是求得整型和字符型的常量表达式,但不能含有变量。l default的位置对程序的执行没有影响。例1(2010-09-19)若有定义语句in

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值