




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
二级C语言强化班2013.8主讲:韦晓虎电子邮件
:adog12@163.com二级C语言考试特点1,基本概念;2,考点较少,不断重复;3,注重细节;模块一:程序设计基本概念
各种“程序”的概念程序:人们把需要用计算机完成的工作写成一条条指令,并把这些指令存储在内存中,当人们给出执行命令后,计算机就按指令顺序自动进行操作。这些可以连续执行的一条条指令的集合称为“程序”。程序设计语言的发展机器语言:CPU指令系统,由0、1序列构成的指令码组成汇编语言:用助记符号描述的指令系统低级语言:机器语言和汇编语言
高级语言:分为面向对象的语言及面向过程的语言两种。用汇编语言和高级语言写的程序,称为源程序。C语言即为高级语言,C语言源程序文件的扩展名为.c各种程序之间的转换汇编语言-----汇编程序----机器语言高级语言----编译程序-----目标程序(二进制语言)-----链接程序-------可执行程序(二进制语言)计算机只能执行机器语言程序,对于汇编语言和高级语言源程序必须经过转换后才能被计算机执行。真题实战1.下列叙述中错误的是——A、计算机不能直接执行用C语言编写的源程序B、C程序经编译后,生成后缀为.obj的文件是一个二进制文件C、后缀为.obj的文件,经连接程序生成后缀为.Exe的文件是一个二进制文件D、后缀为.obj和.exe的二进制文件都可以直接运行2.以下叙述中错误的是——A、C语言源程序经编译后生成后缀为.obj的目标程序B、C程序经过编译、连接步骤之后才能形成一个真正可以执行的二进制机器指令文件C、用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中D、C语言中的每条可执行语句和非执行语句最终都将转换成二进制的机器指令3.计算机能直接执行的程序是——A、源程序 B、目标程序 C、汇编程序 D、可执行程序4.C语言源程序的后缀是——A、.exe B、.c C、.obj D、.cp5.以下说明中正确的是——A、C语言比其它语言高级 B、C语言可以不用编译就能被计算机执行C、C语言以接近英语和数学言语作为语言的表达式 D、C语言出现最晚,具有其它语言的一切优点以下叙述中正确的是——A、C语言的源程序不必通过编译就可以直接运行B、C语言中的每条可执行语句最终都将被转换成二进制的机器指令C、C程序经编译形成的二进制代码可直接执行D、C语言中的函数不可以单独进行编译算法的特性1.算法的概念:算法是指为解决某个特定问题而采取的确定且有限的步骤。2.算法的五个特点有穷性:一个算法包含的步骤是有限的。即在若干个步骤后结束,并且每一步都在合理时间内完成确定性:算法中每一条指令必须有确切的含义,不能有二义性,对于相同的输入必能得出相同的执行结果。可行性:算法中指定的操作,都可以通过已经验证可以实现的基本运算执行有限次后实现。有零个或多个输入:算法都是用来处理数据对象的,通常情况下这些数据对象需要通过输入来得到有1个或多个输出:算法的目的是为了求解。这些“解”只有通过输出得到。3.评价算法的标准:时间复杂度空间复杂度真题实战1算法中,对需要执行的每一步骤操作,必须给出清楚、严格的规定,这属于算法的是——A、正当性 B、可行性 C、确定性 D、有穷性2以下叙述中错误的是——A、算法正确的程序最终一定会结束B、算法正确的程序可以有零个输出C、算法正确的程序可以有零个输入D、算法正确的程序对于相同的输入一定有相同的结果参考答案:1.C 2.B 牛刀小试一个算法应该具有“确定性”等5个特性,下面对另外4个特性的描述中错误的是——A、有零个或多个输入B、有零个或多个输出C、有穷性D、可行性参考答案:B结构化程序设计知识点结构化程序的三种基本结构顺序结构:执行时按顺序逐条执行,没有分支,没有转移。可由赋值语句、输入/输出语句等构成。选择结构:根据不同的条件执行不同分支中的语句。可由if语句、switch语句等构成。循环结构:根据各自的条件使一组语句重复执行多次或一次也不执行。可由for语句、while语句等构成。由上述三种基本结构可以构成任意复杂的程序。模块化结构:将复杂任务分解成若干个子任务,每个子任务又可分解成多个小子任务,每个小子任务只需完成一个简单的功能。在程序设计时用一个小模块实现这些功能。称这样的程序设计方法为“模块化”方法,由一个个功能模块构成的程序结构为模块化结构。真题实战以下叙述中错误的是——A、C语言是一种结构化的程序设计语言B、结构化程序由顺序、分支、循环三种基本结构组成C、使用三种基本结构构成的程序只能解决简单问题D、结构化程序设计提倡模块化的设计方法参考答案:C牛刀小试C语言中用于结构化程序设计的三种基本结构是——A、顺序结构、选择结构、循环结构B、if、switch、breakC、for、while、do-whileD、if、for、continue参考答案:A模块二:C语言程序设计的基本知识C程序的结构和格式知识点1格式特点1)习惯用小写字母,大小写敏感;2)不使用行号,无程序行概念;3)可使用空行和空格;4)常用锯齿形书写格式;2结构特点
2.1函数与主函数程序由一个或多个函数组成;必须有且只能有一个主函数main();程序执行从main开始,在main中结束,其它函数通过嵌套调用得以执行;
2.2程序语句C程序由语句组成;用“;”作为语句终止符;
2.3注释/**/为注释,不能嵌套不产生编译代码
2.4编译预处理命令:命令行,不是C语句真题实战1对于一个正常运行的C程序,以下叙述中正确的是——A、程序的执行总是从main函数开始,在main函数结束
B、程序的执行总是从程序的第一个函数开始,在main函数中结束
C、程序的执行总是从main函数开始,在程序的最后一个函数中结束。
D、程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束。2以下关于函数的叙述中正确的是———A、每个函数都可以被其他函数调用(包括main函数)
B、每个函数都可以被单独编译
C、每个函数都可以单独运行
D、在一个函数内部可以定义另一个函数3以下叙述中正确的是——A、C语言程序将从源程序中第一个函数开始执行
B、可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行
C、C语言规定必须用main作为主函数名,程序将从此开始执行,在此结束
D、main可作为用户标识符,用以命名任意一个函数作为主函数4以下叙述中正确的是——A、C程序的基本组成单位是语句
B、C程序中每一行只能写一条语句
C、简单C语句必须以分号结束(复合语句)
D、C语句必须在一行内写完参考答案:1.A 2.B 3.C 4.C标识符的命名规则知识点1、标识符的概念:标识符是用来标识变量、符号常量、函数、数组、类型、标号以及一些具有专门含义的有效字符序列。 通俗地讲,标识符就是一个名字。2、标识符分为三类:关键字预定义标识符用户标识符3、标识符
3.1组成:只能由字母、数字、下划线组成,且第一个字母必须是字母或下划线;大小写敏感;不能使用关键字;
3.2长度:最长32个字符;
3.3命名原则:见名知意;不宜混淆如1与I,o与0;真题实战1.下列定义变量的语句中错误的是—A、int_int; B、doubleint_;C、charFor; D、floatUS$;2.以下叙述中错误的是——A、用户所定义的标识符允许使用关键字
B、用户所定义的标识符应尽量做到“见名知意”
C、用户所定义的标识符必须以字母或下划线开头
D、用户定义的标识符中大、小写字母代表不同标识3.下列不合法的用户标识符是——A、j2_KEY B、Double C、4d D、_8_4.按照C语言规定的用户标识符命名规则,不能出现在标识符中的是:
A、大写字母
B、连接符
C、数字字符
D、下划线5.可在C程序中用做用户标识符的一组标识符是——A)andB)DateC)HiD)case_2007y-m-dDr.TomBigl6.以下选项中不合法的标识符是——A、print B、FOR C、&a D、_00参考答案:1.D 2.A 3.C 4.B 5.A 6.CC语言基本数据类型及其定义规则(常量)知识点1.常量的概念:程序运行时其值不能改变的量(即常数)2.常量的分类符号常量:用标识符代表常量定义格式:#define符号常量常量一般用大写字母是宏定义预处理命令,不是C语句直接常量整型常量实型常量字符常量字符串常量3.整型常量(三种形式):十进制整数:由数字0~9和正负号表示.如123,-456,0八进制整数:由数字0开头,后跟数字0~7表示.如0123,011十六进制整数:由0x开头,后跟0~9,a~f,A~F表示.如0x123,0Xff
八进制和十六进制只能是正数。要掌握三种形式之间的转换关系。4.实型常量(实数或浮点数)表示形式:十进制数形式:(必须有小数点)
指数形式:(e或E之前必须有数字;指数必须为整数)在计算机中,实数一律是以指数形式存储的。计算机中存储整数不会出现误差,存储实型数往往存入误差。5.字符常量:用单引号括起来的单个普通字符或转义字符.6.字符串常量:用双引号(“”)括起来的字符序列,存储时,每个字符串尾自动加一个‘\0’作为字符串结束标志。真题实战有以下程序,其中%u表示按无符号整数输出,程序运行后的输出结果是————#include“stdio.h”main(){unsignedintx=0xFFFF;/*x的初值为16进制数*/printf(“%u\n”,x);}A.-1 B.65535 C.32767 D.0xFFFF下列不合法的数值常量是——A、011 B、1e1 C、8.0E0.5 D、0xabcd参考答案:1、B 2、C 3、88 C语言基本数据类型及其定义规则(变量)知识点变量概念:其值可以改变的量变量定义应遵循原则:先定义,后使用。变量的分类整型变量实型变量字符型变量注意:无字符串变量真题实战以下程序运行后的输出结果是——main(){ intx=0210;printf("%X\n",x); }参考答案:1、88基本类型数据的相互转换知识点doublefloatlongunsignedintchar,short低高转换的优先级:doublefloatlongunsignedintchar,short低高强制类型转换一般形式:(类型名)(表达式)真题实战以下选项中值为1的表达式是——A、1-'0' B、1-'\0' C、'1'-0 D、'\0'-'0'设有定义:floatx=123.4567;,则执行下列语句printf("%f\n",(int)(x*100+0.5)/100.0);
后的输出结果是——已知字母A的ASCII码为65。以下程序运行后的输出结果为——main(){chara,b;a='A'+'5'-'3';b=a+'6'-'2';printf("%d%c\n",a,b);}参考答案:1、B 2、123.460000 3、67G有以下程序,程序运行后的输出结果为——main(){unsignedinta;intb=-1;a=b;printf(“%u”,a);}A、-1 B、65535 C、32767 D、-32768以下程序运行后的输出结果是——main(){inta,b,c;a=25;b=025;c=0x25;printf(“%d%d%d\n”,a,b,c);}参考答案:1、B 2、252137常见算术运算符的使用基本的算术运算符:+、-(减法/取负)、*、/、%(取余数)除法运算:C语言规定:两个整数相除,其商为整数,小数部分被舍弃。求余数运算:要求两侧的操作数均为整型数据,否则出错。两边运算数类型不一致:系统将自动进行转换,使两边一致后再进行运算。实型数的运算:所有实型数的运算均以双精度方式进行,若是单精度,则在尾数部分添0,转换为双精度。算术表达式的概念表达式的概念:用运算符和括号将运算对象(常量、变量和函数等)连接起来的、符合C语言语法规则的式子,称为表达式。算术表达式的概念:表达式中的运算符都是算术运算符。强制类型转换表达式转换格式为:
(要转换成的数据类型)(被转换的表达式)注意:强制转换类型得到的是一个所需类型的中间量,原表达式类型并不发生变化。以下选项中,当x为大于1的奇数时,数为0的表达式为——(A、x%2==1 B、x/2 C、x%2!=0 D、x%2==0下列isprime函数的功能是判断形参a是否为素数,是素数,函数返回1,否则返回0。请填空intisprime(inta){inti;for(i=2;i<=a/2;i++)if(a%i==0)————;————;}设有定义:intk=1,m=2;floatf=7;则下列选项中错误的表达式是———A、k=k>=k B、-k++ C、k%int(f) D、k>=f>=m参考答案:1、D 2、return0return1 3、C算术运算符的优先级顺序算术运算符的优先级算术运算符和圆括号的结合性所谓结合性是指,当一个操作数两侧的运算符具有相同的优先级时,该操作数是先与左边的运算符结合,还是先与右边的运算符结合。自左至右的结合方向,称为左结合性。反之,称为右结合性。结合性是C语言的独有概念。除单目运算符、赋值运算符和条件运算符是右结合性外,其它运算符都是左结合性。算术运算符的结合方向是“自左至右”,即:在执行“a–b+c”时,变量b先与减号结合,执行“a-b”;然后再执行加c的运算。真题实战表达式3.6-5/2+1.2+5%2的值是___A、4.3 B、4.8 C、3.3 D、3.8下列不能正确计算代数式sin2(1/2)/3值的C语言表达式是____A、1/3*sin(1/2)*sin(1/2) B、sin(0.5)*sin(0.5)/3C、pow(sin(0.5),2)/3 D、1/3.0*pow(sin(1.0/2),2)参考答案:1、D 2、A设有定义:floata=2,b=4,h=3;以下C语言表达式与代数式计算结果不相符的是——A、(a+b)*h/2 B、(1/2)*(a+b)*h C、(a+b)*h*1/2 D、h/2*(a+b)参考答案:B赋值表达式的求值规则赋值运算的一般形式:变量=赋值表达式赋值运算符的优先级只高于逗号运算符,比其它的运算符优先级都低,且具有自右向左的结合性。 如:a=2+7/3赋值运算符不是数学中的“等于号”,而是进行“赋予”操作。赋值运算符左边只能是变量,不能是常量或是表达式。如a+b=c就是错误的。赋值运算符右边也可以是赋值表达式。如a=b=7+1,而a=7+1=b则是错误的。”=“视作运算符,a=19是一个表达式,C语言规定最左边变量中所得到的新值就是赋值表达式的值。复合赋值表达式的一般形式:变量双目运算符=表达式结合方向:自右向左左侧必须是变量,不能是常量或表达式(3=x-2*y;及a+b=3;都是错误的)赋值运算中的类型转换当赋值号左边的变量为短整型,右边的值为长整型时,短整型变量只能接受长整型数据低位上的两个字节的数据,高位上的数据将丢失。也就是说,右边的值不能超过短整型的数值范围。当赋值号左边的变量为无符号整型,右边的值为有符号整型时,则把内存中的内容原样复制。右边数据的范围不应超出左边变量可以接受的数据范围。同时要注意,这时负数将转换为正数。当赋值号左边的变量为有符号整型,右边的值为无符号整型时,复制的机制同上,这时,若符号位为1,将按负数处理。以下叙述中错误的是——A、C程序中的#include和#define均不是C语句B、除逗号运算符外,赋值运算符的优先级最低C、C程序中,j++;是赋值语句D、C程序中,+、-、*、/、%是算术运算符,可用于整型和实型数的运算。下列能正确定义且赋初值的语句是——A、intnl=n2=10;B、charc=32;C、floatf=f+1.1;D、doublex=12.3E2.5;若变量x、y已正确定义并赋值,下列符合C语言语法的表达式是——A、++x,y=x--B、x+1=yC、x=x+10=x+yD、double(x)/10参考答案:1、D 2、B 3、A逗号表达式的求值规则知识点逗号表达式的形式:表达式1,表达式2,……表达式n结合性:从左向右优先级:所有运算符中,逗号运算符优先级最低逗号表达式的值:等于表达式n的值用途:常用于循环for语句中真题实战执行以下程序后的输出结果是——main(){ inta=10;
a=(3*5,a+4); printf("a=%d\n",a);}自加自减运算符知识点自增、自减运算符只能用于变量,不能用于常量和表达式。5++、--(a+b)等都是非法的。自增、自减运算符和其它运算符混合使用时,其结合性为:至右向左。自增、自减运算符,无论作为前缀(++a,--a)还是后缀(a++,a--)运算符,对于变量本身来说自增1或自减1都具有相同的效果,但对表达式来说却有着不同的值。真题实战设有定义:intk=0;,以下选项的四个表达式中与其他三个表达式的值不相同的是——A、k++B、k+=1C、++kD、k+1有以下程序,程序运行后的输出结果为——main(){intx,y,z;x=y=1;z=x++,y++,++y;printf("%d,%d,%d\n",x,y,z);}A、2,3,3 B、2,3,2 C、2,3,1 D、2,2,1下列程序的输出结果是——main(){intm=12,n=34;printf("%d%d",m++,++n);printf("%d%d\n",n++,++m);}A、12353514 B、12353513 C、12343514 D、12343513参考答案:1、A 2、C 3、A牛刀小试下列关于单目运算符++、--叙述中正确的是——A、它们的运算对象可以是任何常量和变量B、它们的运算对象可以是char型变量和int型变量,但不能是float型变量C、它们的运算对象可以是int型变量,但不能是double型和float型变量D、它们的运算对象可以是char型变量,int型变量和float型变量有以下程序,程序运行后的输出结果是——main(){chara=‘a’,b;printf(“%c,”,++a);printf(“%c\n”,b=a++);}A、b,b B、a,b C、b,c D、a,c参考答案:1、D 2、C模块三:顺序结构程序设计赋值表达式与赋值语句赋值语句:在赋值表达式的尾部加上一个“;”,又称为表达式语句。赋值语句必须在最后出现分号,分号是语句中必不可少的部分。任何赋值表达式都可以加上分号而成为赋值语句,C语言规定赋值号左边不能为常量或表达式。真题实战若以下选项中的变量已经正确定义,则正确的赋值语句是——A、x1=26.8%3;B、1+2=x2;C、x3=0x12;D、x4=1+2=3;参考答案:1、C数据的输出知识点字符输出函数:putchar(c)格式输出函数:printf(“格式控制串”,输出表)格式字符、长度修饰符和附加格式字符以及它们各自的功能。在格式控制字符串中,格式说明与输出项从左到右在类型上必须一一对应匹配。在格式控制串中,格式说明与输出项的个数应相同,若格式说明明少于输出项,则多余的输出项不输出,相反,对于多余的格式将输出不定值。在格式控制串中,可以包含任意的合法字符(包括转义字符)。数据的输入字符输入函数:getchar()格式输入函数:scanf(“格式控制串”,地址表)熟知各种格式字符的功能scanf函数中的输入项必须是“地址量”输入数据时,各个数据间可以用空格符、回车符或Tab键作为分隔符除了3中所述分隔符外,还可以自己指定其它字符作为分隔符,但在输入时应输入与这些字符相同的字符。输入数据时,遇到以下情况时该数据被认为表示结束:遇到空格、Tab键或回车符按指定的宽度结束,如”%4d“,只取4列遇到非法输入。复合语句与空语句知识点复合语句:用{…}括起来的一组语句 一般形式:{[数据说明部分;]
执行语句部分;
}空语句:由单独的分号组成真题实战以下叙述中错误的是——A、C语句必须以分号结束B、复合语句在语法上被看作一条语句C、空语句出现在任何位置都不会影响程序运行D、赋值表达式末尾加上分号就构成赋值语句参考答案:1、C模块四:选择结构程序设计关系运算关系运算符<=(小于或等于)<=(大于或等于)>(大于)<(小于)==(等于)!=(不等于)关系运算的优先级关系运算符自身的优先级(<=、>=、<、>)四个优先相同(!=、==)两个优先级相同(<=、>=、<、>)优先级高于(!=、==)与其它运算符的优先级 关系运算符的优先级低于算术运算符,但高于赋值运算符。关系表达式:用关系运算符将两个表达式连接起来,进行关系运算的式子。应避免对实数作相等或不等的判断.关系表达式的结果值为1或0。当关系表达式成立时,其结果值为1当关系表达式不成立时,其值为0。真题实战在以下给出的表达式中,与while(E)中的E不等价的表达式是——A、(!E==0)B、(E>0)||(E<0)C、(E==0)D、(E!=0)参考答案:1、C逻辑运算逻辑运算符的种类(三类):!&&||
运算量:0表示“假”,非0表示“真”运算结果:0表示“假”,1表示“真”逻辑运算符的优先级与结合方向优先级(!高---&&中---||低)结合方向(自左向右)短路特性:逻辑表达式求解时,并非所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符若&&的左边运算结果已经为0,则&&右边的表达式将不再进行计算,结果总为0;若||左边运算结果已经为1,则||右边的表达式也不再进行计算,结果总为1。
若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是——A、abs(x-y)<10 B、x-y>10&&x-y<10C、@(x-y)<-10||!(y-x)>10 D、(x-y)*(x-y)<100有以下程序,程序运行后的输出结果是——main(){inta=1,b=2,m=0,n=0,k;k=(n=b>a)||(m=a<b);printf(“%d%d\n”,k,m);}A、0,0 B、0,1 C、1,0 D、1,1参考答案:1、C 2、C条件表达式及其构成的选择结构条件运算符由两个符号“?”和“:”组成,要求有3个操作对象,称为三目运算符,它也是C语言中唯一的三元运算符。条件表达式的一般形式为: 表达式1?表达式2:表达式3表达式1值为真时,取表达式2的值,表达式1的值为假时,取表达式3的值。通常情况下,表达式1可以是关系表达式或是逻辑表达式,用于描述表达式中的条件,表达式2和表达式3可以是常量、变量或表达式。条件运算符的优先级:高于赋值运算符,但是低于关系运算符和算术运算符条件运算符的结合方向:为“自右向左”。以下程序运行后的输出结果是——main(){intx,a=1,b=2,c=3,d=4;x=(a<b)?a:b;x=(a<c)?x:c;x=(d>x)?x:d;printf(“%d\n”,x);}有以下程序段,执行该程序后,k的值是——intk=0,a=1,b=2,c=3;k=a<b?b:a;k=k>c?c:k;A、3 B、2 C、1 D、0参考答案:B几类运算符的优先级真题实战有以下程序,程序运行后的输出结果是——main(){inti=1,j=2,k=3;if(i++==1&&(++j==3||k++==3))printf(“%d%d%d\n”,i,j,k)}A、123 B、234 C、223 D、233有以下程序,程序运行后的输出结果是——main(){inta=1,b=2,m=0,n=0,k;k=(n=b>a)||(m=a<b)printf(“%d,%d\n”,k,m);}A、0,0 B、0,1 C、1,0 D、1,1参考答案:1、D 2、C牛刀小试以下程序运行后的输出结果是——main(){intp=30;printf(“%d\n”,(p/3>0?p/10:p%3));}参考答案:1、3if语句if语句是选择结构的一种形式,又称为条件分支语句。格式为:
if
(expression) statementif语句的流程控制方式是:根据给定的条件进行判定,由判定的结果(真或假)决定执行给出的两种操作之一。真题实战当把以下四个表达式用作if语句的控制表达式时,有一个选项与其他三个选项含义不同,这个选项是——A、k%2 B、k%2==1 C、(k%2)!=0 D、!k%2==1以下程序运行后的输出结果是—main(){inta=3,b=4,c=5,t=99;if(b<a&&a<c)t=a;a=c;c=t;if(a<c&&b<c)t=b,b=a,a=t;printf("%d%d%d\n",a,b,c);}参考答案:1、D 2、4599 牛刀小试有以下程序,执行后的输出结果是——main(){intn=0,m=1,x=2;if(!n) x-=1;if(!m) x-=2;if(!x) x-=3;printf(“%d\n”,x);}参考答案:1含else的if语句知识点格式
if(表达式)语句1 else 语句2注意:
else不是一条独立的语句,它只是if语句的一部分,在程序中else必须和if配对,共同组成一条if~else语句。执行过程首先计算紧跟在if后面一对圆括号内表达式的值。如果表达式值非零,则执行if子句,然后跳过else子句,去执行if语句后的下一条语句如果表达式的值为零,则跳过if子句,去执行else子句,接着去执行if语句后的下一条语句。
真题实战设变量x和y均已经正确定义并赋值,以下if语句中,在编译时将产生错误信息的是——A、if(x++); B、if(x>0&y!=0);C、if(x>y) x-- D、if(y<0) {;}else y++; else x++;以下程序运行后的输出结果是——main(){inta=1,b=2,c=3;if(c=a)printf(“%d\n”,c);else printf(“%d\n”,b);}参考答案:1、C 2、1牛刀小试有以下程序,执行后的输出结果是——main(){inta=5,b=4,c=3,d=2;if(a>b>c) printf(“%d\n”,d);elseif((c-1>=d)==1) printf(“%d\n”,d+1);else printf(“%d\n”,d+2);}参考答案:3嵌套的if语句
if--else配对原则:缺省{}时,else总是和它上面离它最近的未配对的if配对真题实战在嵌套使用if语句时,C语言规定else总是——A、和之前与其具有相同缩进位置的if配对B、和之前与其最近的if配对C、和之前与其最近不带else的if配对 D、和之前的第一个if配对设变量a,b,c,d和y都已经正确定义并已经赋值。若有以下if语句,该语句所表示的含义是—— if(a<b) if(c==d)y=0; elsey=1;参考答案:1、C 2、C牛刀小试有以下程序,程序运行后的输出结果是——main(){inta=3,b=4,c=5,d=2;if(a>b)if(b>c) printf(“%d”,d+++1);else printf(“%d”,++d+1);printf(“%d\n”,d);}A、2 B、3 C、43 D、44参考答案:Aswitch语句及其与break语句构成的选择结构switch语句及其与break语句构成的选择结构的格式switch(表达式){caseE1:
语句组1;break;caseE2:
语句组2;break;…….caseEn:
语句组n;break;[default:
语句组;break;]}常量表达式必须是与表达式对应一致的整数、字符或枚举常量。各case语句标号的值应该互不相同。switch后的表达式通常为字符型变量,也允许是枚举型变量,其结果为相应的整数、字符或枚举常量。break语句不是一定需要加上的。在执行完一个case后面的语句后,若没遇到break语句,就自动进入下一个case继续执行,而不再判断是否与之匹配,直到遇到break语句才停止执行,退出break语句。因此,若想执行一个case分支后立即跳出switch语句,就必须在此分支的后面添加一个break语句。switch语句及其与break语句构成的选择结构的执行过程首先计算switch后面圆括号表达式的值,然后用其结果依次与各个case的常量表达式相比较,若圆括号中表达式的值与某个case后面的常量表达式的值相等,就执行此case后面的语句,执行后遇break语句就退出switch语句;若圆括号中表达式的值与所有的case后面的常量表达式的值都不相同,则执行default后面的语句n+1,执行后退出switch语句,退出后程序流程转向开关语句的下一个语句。真题实战有以下程序,程序运行后的输出结果是——#include"stdio.h"main(){intk=5,n=0;do{ switch(k) {case1:case3:n+=1;k--;break; default:n=0;k--; case2:case4:n+=2;k--;break; }printf("%d",n);}while(k>0&&n<5);}A、235 B、0235 C、02356 D、2356以下程序的运行结果是——main(){inta=2,b=7,c=5;switch(a>0) {case1:switch(b<0) {case1:printf("@");break; case2:printf("!");break; } case0:switch(c==5) {case0:printf("*");break; case1:printf("#");break; case2:printf("$");break;} default:printf("&"); }printf("\n");}#&以下程序运行后的输出结果是—2,1—main(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y) {case0:a++;break; case1:b++;break; }case2:a++;b++;break;}printf("%d%d\n",a,b);}有以下程序,程序运行后的输出结果是——main(){inta=15,b=21,m=0;switch(a%3){case0:m++;break;case1:m++;switch(b%2) {default:m++; case0:m++;break; }}printf(”%d\n”,m);}A、1 B、2 C、3 D、4语句标号和GOTO语句知识点语句标号标号可以是任意合法的标识符,在标识符后面加上一个冒号,如flag1:
stop0:就形成了一个语句标号。通常,标号用作goto语句的转向目标。如:
gotostop;
stop:语句goto语句一般形式为:goto语句标号;功能:无条件转移语句说明:不能用整数作标号只能出现在goto所在函数内,且唯一只能加在可执行语句前面限制使用goto语句模块五:循环结构程序设计While语句while语句的一般形式:while(表达式)
{循环体语句组;}while后的表达式,可以是C语言中任意合法的表达式,通常为关系表达式或逻辑表达式,但也可以是其它运算表达式当表达式值的值为零时,表示条件为假;表达式值为非零时,表示条件为真。循环体可以是一条简单可执行语句,也可以是复合语句。while语句的执行流程计算“表达式”,根据其结果判断循环是否继续如果表达式值为非0,执行循环体语句组,执行完毕后,再计算表达式的值,根据其值作出判断。。。如果表达式的值为0,则结束循环,执行执行while语句的下一条语句。如果第一次计算时表达式的值就为0,则循环语句一次也不被执行,流程直接跳过while语句,执行下一条语句。真题实战有以下程序,执行后的输出结果是——A、1 B、2 C、4 D、死循环main(){intk=5;while(--k)printf("%d",k-=3);printf("\n");}有下列程序,若运行时从键盘输入:18,11<CR>,则程序的输出结果是——main(){inta,b;printf("Entera,b:");scanf("%d,%d",&a,&b);while(a!=b){while(a>b)a-=b;while(b>a)b-=a;}printf("%3d%3d\n",a,b);}参考答案:1、A 2、11 牛刀小试有以下程序,程序执行后的输出结果是——main(){intx=0,y=5,z=3;while(z-->0&&++x<5)y=y-1;printf("%d,%d,%d\n",x,y,z);}参考答案:1、3,2,-1Dowhile循环结构do-while语句的格式do
{循环体语句组;}while(表达式); (1)do是C语言的关键字,必须和while联合使用。(2)循环由do开始,至while结束。while后的分号“;”不能丢,它表示do-while语句的结束。do-while循环体的执行过程执行循环体语句组。计算“循环继续条件”表达式。如果“循环继续条件”表达式的值为非0(真),则转向(1)继续执行;否则,转向(3)。执行do-while的下一条语句。do-while循环语句的特点:先执行循环体语句组,然后再判断循环条件。有以下程序main(){ints=0,a=1,n;scanf("%d",&n);do{s+=1;a=a-2;}while(a!=n);printf("%d\n",s);}若要使程序的输出值为2,则应该从键盘给n输入的值是——A、-1 B、-3 C、-5 D、0参考答案:1、Bfor语句的一般形式知识点for语句的格式for(表达式1;表达式2;表达式3)
{循环体语句组;}for循环的执行过程求解“变量赋初值”表达式。求解“循环继续条件”表达式。如果其值非0,执行(3);否则,转至(4)。执行循环体语句组,并求解“循环变量增值”表达式,然后转向(2)。执行for语句的下一条语句。真题实战设变量已正确定义,则以下能正确计算f=n!的程序段是——A、 f=0;for(i=1;i<=n;i++)f*=i;B、 f=1;for(i=1;i<n;i++)f*=i;C、 f=1;for(i=n;i>1;i++)f*=i;D、 f=1;for(i=n;i>=2;i--)f*=i;有以下程序,程序运行时,从键盘输入:01<回车>,程序执行后的输出结果是—main(){chark;inti;for(i=1;i<3;i++){scanf("%c",&k);switch(k) {case'0':printf("another\n"); case'1':printf("number\n"); }}}AanothernumberB,anothernumberanotherC,anothernumbernumberD、numbernumberfor语句表达式的省略及其特点for语句表达式的省略及特点表达式1可以省略,但后面的分号不能省略,此时应在for语句之前给循环变量赋初值。如果省略表达式2,表示条件始终为真,循环将无终止。如果省略表达式1,3,此时完全等价于while语句。for语句的循环语句可以是空语句,用来实现延时,但是后面的分号不能省略。真题实战有以下程序,程序执行后的输出结果是——main(){intt=1,i=5;for(;i>=0;i--) t*=i;printf(“%d\n”,t);}参考答案:1、0牛刀小试有以下程序,程序运行后的输出结果是——main(){intk=4,n=0;for(;n<k;){n++;if(n%3!=0) continue;k--;}printf("%d,%d\n",k,n);}A、1,1 B、2,2 C、3,3 D、4,4参考答案:1、C嵌套循环结构1循环语句的循环体内,又包含另一个完整的循环结构,叫做循环的嵌套。三种循环可互相嵌套,层数不限外层循环可包含两个以上内循环,但不能相互交叉嵌套循环的跳转禁止:从外层跳入内层跳入同层的另一循环向上跳转2循环的嵌套可以有多层,但是第一层循环在逻辑上必须是完整的。有以下程序,程序运行后的输出结果是——main(){inti,j;for(i=1;i<4;i++){for(j=i;j<4;j++) printf("%d*%d=%d",i,j,i*j);printf("\n");}}A、1*1=1
1*2=2
1*3=32*1=4
2*2=63*1=9B、1*1=1
1*2=2
1*3=32*2=4
2*3=63*3=9C、1*1=1
1*2=2
2*2=41*3=2
2*3=6
3*3=9D、1*1=1
2*1=2
2*2=43*1=33*2=6
3*3=9有以下程序,程序运行后的输出结果是——#include"stdio.h"main(){inta[4][4]={{1,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1}},i,j,k,t;for(i=0;i<4;i++) for(j=0;j<3;j++) for(k=j+1;k<4;k++) if(a[j][i]>a[k][i]){t=a[j][i],a[j][i]=a[k][i],a[k][i]=t;} for(i=0;i<4;i++) printf("%d,",a[i][i]);}A、1,6,5,7 B、8,7,3,1 C、4,7,5,2 D、1,6,2,1参考答案:1、B 2、A 牛刀小试有以下程序,程序运行后输出结果是______main(){inti,n=0;for(i=2;i<5;i++){do {if(i%3) continue;n++;}while(!i);n++;}printf("n=%d\n",n);}参考答案:1、n=4 break在循环结构中的应用知识点break语句的使用说明:只能在循环体内和switch语句体内使用break语句。当break出现在循环体中的switch语句体内时,则执行break后,跳出本层循环体。注意:break语句使流程跳出本层循环体,从而提前结束本层循环。break语句只能跳出一层循环,即从当前循环层中跳出。如果要跳出多层循环,可使用goto语句。真题实战下列叙述中正确的是——A、break语句只能用于switch语句B、在switch语句中必须使用defaultC、break语句必须与switch语句中的case配对使用D、在switch语句中,不一定使用break语句有以下程序,程序执行后的输出结果是——main(){inta=1,b;for(b=1;b<=10;b++){if(a>=8)break;if(a%2==1) {a+=5;continue;}a=3;}printf("%d\n",b);}A、3 B、4 C、5 D、6参考答案:1、D 2、B 牛刀小试以下程序运行后的输出结果是——main(){inti,m=0,n=0,k=0;for(i=9;i<=11;i++)switch(i/10){case0:m++;n++;break;case10:n++;break;default:k++;n++;}printf("%d%d%d",m,n,k);}参考答案:1、132 continue在循环结构中的应用
continue的作用是结束本次循环,即跳过本次循环体中余下尚未执行的语句,接着再一次进行循环的条件判断。continue语句只是结束循环结构中的本次循环,并非跳出整个循环过程。对while和do-while语句,遇continue语句后,转向执行while之后圆括号内的条件表达式的判断。执行continue语句并没有使整个循环终止。真题实战有以下程序,程序执行后的输出结果是——main(){inti,j,x=0;for(i=0;i<2;i++) {x++; for(j=0;j<=3;j++) {if(j%2)continue; x++;} x++; }printf("x=%d\n",x);}A、x=4 B、x=8 C、x=6 D、x=12参考答案:1、B模块六:字符型数据字符型常量的定义知识点字符常量:是用一对单引号括起来的一个字符单引号中的大写字母和小写字母代表不同的字符常量,如’A’和’a’是不同的字符常量。字符常量只能包含一个字符。在C语言中,字符常量具有数值,这个值就是该字符在规定的字符集中的ASCII代码值。在ASCII字符集中的256个字符的值为0~255。字符常量在机器内以整型常量的形式存放,占一个字节。因此,字符常量与整型量等价。真题实战已知字符A的ASCII码值为65,以下语句的输出结果是________charch=‘B’;printf(“%c%d\n”,ch,ch)参考答案:1、B66字符型常量的运算字符型常量可参与任何整数运算和关系运算。
字符型常量的数值是它们的ASCII码值,字符型常量的运算都是以它们的ASCII代码值为进行运算。真题实战已知大写字母A的ascii码是65,小写字母a的ascii码是97。以下不能将变量c中的大写字母转换为对应的小写字母的语句是——A、c=(c-’A’)%26+’a’ B、c=c+32C、c=c-’A’+’a’ D、c=(‘A’+c)%26-’a’参考答案:1、D牛刀小试数字字符0的ASCII值为48,若有以下程序,程序运行后的输出结果是——main(){chara=‘1’,b=‘2’;printf(“%c”,b++);printf(“%d\n”,b-a);}A、3,2 B、50,2 C、2,2 D、2,50有以下程序,执行后的输出结果是——main(){chara;a='H'-'A'+'0';printf("%c\n",a);}参考答案:1、D 2、7转义字符的定义转义字符常量:是以一个“\”开头的字符序列。转义字符常量只代表一个字符。反斜线后的八进制数可以不用0开头。反斜线后的十六进制数只可由小写字母x开头,不允许用大写字母X,也不能用0x开头。C语言规定,被一对单引号括起来的字符不允许是单引号或反斜杠,即‘’’或‘\’真题实战以下合法的字符常量是——A、‘\x13’ B、‘\081’ C、‘65’ D、“\n”已经定义ch为字符型变量,以下赋值语句中错误的是——A、ch=‘\’; B、ch=62+3; C、ch=NULL; D、ch=‘\xaa’;参考答案:1、A 2、A字符型变量的定义知识点字符型变量的说明格式:char变量名表;字符变量在内在中占一个字节,只能存放一个字符,可以是ASCII字符集中的任何字符。当把字符放入一个字符变量中时,字符变量中的值就是该字符的ASCII码值。在合法的取值范围内,字符型变量与整型变量可以通用。下列程序的功能是输入任意整数给n后,输出n行由大写字母A开始构成的三角形字符阵列图形。例如,输入整数5时(注意:n不得大于10),程序运行结果如下,请填空完成该程序。main(){inti,j,n;charch='A';scanf("%d",&n);if(n<11){for(i=1;i<=n;i++) {for(j=1;j<=n-i+1;j++) {printf("%2c",ch); ————; } ————;}}elseprintf("nistoolarge!\n")printf("\n");}ABCDEFGHIJKLMNO参考答案1、ch++printf(“\n”);牛刀小试有以下程序编译时出现错误,以下叙述中正确的是——main(){chara,b,c,*d;a=‘\’;b=‘\xbc’;c=‘\0xab’;d=“\0127”;printf(“%c%c%c\n”,a,b,c,*d);}A、程序中只有a=‘\’;语句不正确 B、b=‘\xbc’;语句不正确C、d=“\0127”;语句不正确 D、a=‘\’;和c=‘\0xab’;语句都不正确参考答案:1、D字符串常量的定义及其与字符型常量的区别字符串常量是由双引号括起来的一串字符。在C语言中,系统在每个字符串的最后都自动加入一个字符“\0”作为字符串结束的标志。字符串常量与字符常量的区别使用的引号的类型不同容量不同:字符常量只能是单个字符,字符串常量则可以含一个或多个字符。占用内存空间不同:字符常量占一个字节的内存空间,字符串常量中的内存字节数等于字符串中字节数加1。增加的一个字节用来存放字符’\0’作为字符串的结束标志。C语言中没有专门存放字符串的字符串变量,字符串如果需要放在变量中,应该放在一个字符型数组中,即用一个字符型数组来存放一个字符串。真题实战有以下程序,程序运行后的输出结果是——main(){chara[7]="a0\0a0\0";inti,j;i=sizeof(a);j=strlen(a);printf("%d%d\n",i,j);}A、22 B、76 C、72 D、62参考答案:1、C用printf和scanf函数对字符进行输出和输入用printf函数输出字符时,只须使用格式说明%c,可以在格式字符前加一个整数,用来指定输出字符的宽度。用scanf函数输入字符时,也要使用格式说明%c.当使用的格式说明%c一个紧接一个时,在输入字符时,字符之间没有间隔符,这时空格、回车符和横向跳格符都将按字符输入。当交叉输入数值和字符数据时,即在输入项表中交替出现字符变量和数值变量:例如: inta1,a2;charc1,c2;scanf(“%d%c%d%c”,&a1,&c1,&a2,&c2);则输入必须用以下格式:10A20B<CR>真题实战设变量均已正确定义,若要通过scanf(“%d%c%d%c”,&a,&c1,&a2,&c2);语句为变量a1和a2赋数值10和20,为变量c1和c2赋字符X和Y。以下所示的输入形式中正确的是——(2007年4月)A、10□X□20□Y<回车>B、 10□X20□Y<回车>C、 10□X<回车>
20□Y<回车>D、10X<回车>
20Y<回车>参考答案:1、D牛刀小试若有以下程序段,若从键盘上输入:10A10<CR>,则输出结果是——intm=0,n=0;charc=‘a’;scanf(“%d%c%d”,&m,&c,&n);printf(“%d,%c,%d”,m,c,n);A、10,A,10 B、10,a,10 C、10,a,0 D、10,A,0参考答案:1、A用putchar和getchar函数对字符进行输出输入知识点putchar函数的一般形式为:putchar(参数)
参数可以是字符变量或是字符常量或整型变量,也可以是某个字符对应的ASCII码值,还可以是表达式。并且还可以是控制字符,如’\n’。getchar函数的一般形式为:getchar()getchar不需要参数,函数的值是从输入设备得到的字符。该函数的使用方法有两种:一是把getchar得到的字符代码赋给一个字符型或整型变量二是把getchar得到的字符代码直接作为表达式的一部分,而不赋给任何变量。真题实战当执行以下程序时,输入1234567890<回车>,则其中while循环体将执行___0____次。#include<stdio.h>main(){charch;while((ch=getchar())=='0') printf("#");}要求通过while循环不断读入字符,当读入字母N时结束循环。若变量已正确定义,下列正确的程序段是————A、while((ch=getchar())!='N')printf("%c",ch);B、while(ch=getchar()!='N')printf("%c",ch);C、while(ch=getchar()=='N')printf("%c",ch);D、while((ch=getchar())=='N')printf("%c",ch);有以下程序#include<stdio.h>main(){charc1,c2,c3,c4,c5,c6;scanf("%c%c%c%c",&c1,&c2,&c3,&c4);c5=getchar();c6=getchar();putchar(c1);putchar(c2);printf("%c%c\n",c5,c6);}程序运行后,从键盘上输入(第1列开始)123<回车>45678<回车>则输出的结果是——A、1267 B、1256 C、1278 D、1245牛刀小试以下叙述中正确的是——A、调用printf函数时,必须有输出项B、调用putchar函数时,必须在之前包含头文件stdio.hC、在C语言中,整数可以以十二进制、八进制或是十六进制的形式输出D、调用getchar函数读入字符时,可以从键盘上输入字符对应的ASCII码值。参考答案:1、B模块七:函数
函数定义和返回值函数定义存储类型说明符函数返回值类型函数名(类型名形参1,类型名形参2,。。){说明部分执行部分}存储类型说明符是用来说明该函数是内部函数还是外部函数。函数返回值的类型是用来说明该函数返回值的类型,如果没有返回值,则其类型说明符应该为void。函数名和形式参数都是由用户命名的标识符。在同一程序中,函数名必须唯一,形参名只要在同一函数中唯一即可,可以与其它函数中的变量重名。若省略了函数返回值的类型默认为int型。形参可以省略,称为无参函数。在调用时不用参数。函数体中,除形参外,用到的其它变量必须在说明部分进行定义,且可以和其它函数中的变量重名。函数返回值函数值通过return语句返回,一般形式为: return(表达式); 或 return表达式;
或 return;return语句中表达式的值就是所求的函数值,且其类型必须与函数首部所说明的类型一致,若类型不一致,则由系统自动转换为函数值的类型。在程序执行到return语句时,流程就返回到调用该函数处,并带回函数值。在同一个函数体内,可以在多处return语句。return语句也可以不含表达式。此时,它只是使流程返回到调用函数,并没有确定的函数值。函数体内也可以没有reture语句,程序就一直执行到函数末尾,然后返回到调用函数,此时也没有确定的函数值带回。真题实战在C语言中,函数返回值的类型最终取决于——A、函数定义时在函数首部所说明的函数类型 B、return语句中表达式值的类型C、调用函数时主调函数所传递的实参类型 D、函数定义时形参的类型已经定义以下函数,fun函数的返回值是—— intfun(int*p) {return*p;)A、不确定的值 B、一个整数 C、形参p中存放的值 D、形参p的地址参考答案:1、A 2、B牛刀小试程序中对fun函数有如下说明void*fun()此说明的含义是——A、fun函数无返回值。B、fun函数的返回值可以是任意类型的数据类型C、fun函数的返回值是无值型的指针类型D、指针fun指向一个函数,该函数无返回值。参考答案:1、C有返回值函数的一般调用有返回值的函数的调用形式: 函数名(实际参数列表) 调用的结果是获得一个返回值,该返回值可以参加相应类型的计算。调用函数时,函数名必须与所调用的函数名字完全一致。实参的个数必须与形参一致。C语言规定,函数必须先定义后调用。实参与形参实参:在调用函数时,函数名后面括号中的表达式称为“实际参数”。形参:在定义函数时,函数名后面括号中变量名称为“形式参数”。在定义函数中指定的形参变量,在未出现函数调用时,它们并不占内存中的存储单元。只有发生函数调用时函数中的形参才被分配内存单元。调用结束后,形参所占用的内存单元也同时被释放。实参可以是常量、变量或表达式,如:max(3,a+b);但要求它们有确定的值。在调用时将实参的值赋给形参变量(如果形参是数组名,则传递的是数组首地址,而不是变量的值)。在定义的函数中,必须指定形参的类型。实参与形参的类型应一致。只有字符型和整型可以互相通用。实参变量对形参变量的数据传递是“值传递”,即单向
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 体操模块 技巧直腿后滚翻 教学设计-2024-2025学年高一上学期体育与健康人教版必修第一册
- 第14课 向世界介绍我的学校 教学设计2024-2025学年浙教版(2023)学年初中信息技术七年级上册
- 21《芦花鞋》教学设计-2023-2024学年统编版语文四年级下册
- 秒的认识(教学设计)-2024-2025学年三年级上册数学人教版
- Unit 8 Knowing the world Lesson 3(教学设计)2024-2025学年冀教版(2024)七年级英语上册
- 2025至2031年中国单缸双节电脑控制炸炉行业投资前景及策略咨询研究报告
- 高中信息技术选修2教学设计-5.2.1 动画的分类2-粤教版
- Unit4 My Favourite Subject Section A (1a~1d)第一课时教学设计 -2024-2025学年人教版(2024)七年级英语上册
- 2025至2030年中国锯肩机数据监测研究报告
- 2025至2030年中国邮通工具数据监测研究报告
- 做账实操-农贸市场的账务处理示例
- 余华《活着》解读课件
- 部编版2024-2025学年三年级上册语文期末测试卷(含答案)
- 护理带教老师述职报告
- 《中国居民膳食指南》课件
- 银行柜面业务操作流程手册
- 门窗安装施工安全管理方案
- 妇科手术麻醉
- Unit1RelationshipsLesson2HowDoWeLikeTeachers'Feedback课件高中英语北师大版选择性
- 库存管理规划
- 2024年安徽省高校分类对口招生考试数学试卷真题
评论
0/150
提交评论