C语言程序设计的精串讲资料.doc_第1页
C语言程序设计的精串讲资料.doc_第2页
C语言程序设计的精串讲资料.doc_第3页
C语言程序设计的精串讲资料.doc_第4页
C语言程序设计的精串讲资料.doc_第5页
已阅读5页,还剩126页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

更多优质自考资料尽在百度贴吧自考乐园俱乐部(/club/5346389)欢迎加入.欢迎交流.止不住的惊喜等着你.C语言程序设计的精串讲资料课程介绍当前讲授一、课程性质及考试目标1. 课程性质二级C语言程序设计课程讲解是全国计算机等级考试二级考试中C语言部分。2.基本要求(1)熟悉Visual C+ 6.0集成开发环境。(2)掌握结构化程序设计的方法,具有良好的程序设计风格。(3)掌握程序设计中简单的数据结构和算法并阅读简单的程序。(4)在Visual C+ 6.0集成环境下,能够编写简单的C程序,并具有基本的纠错和调试程序的能力。二、教材的选用本课程所选用教材是教育部考试中心指定的教材全国计算机等级考试二级教程C语言程序设计(2011版),田淑清主编,高等教育出版社三、考试分析1.笔试:90分钟,满分100分,其中含公共基础知识部分的30分。(1)选择题40道,共70分。其中公共基础部分10道,20分,C语言部分30道,50分,前10道每道1分,后20道每道2分。(2)填空题,15个空,30分。其中公共基础部分5空,10分,C语言部分10空,20分。2.上机考试:90分钟,满分100分。上机操作包括:(1) 填空题,1道,30分;(2) 改错题,1道,30分;(3) 编程题,1道,40分。四、备考方法1.认真听精讲视频。2.要做真题,通过做并认真分析10套真题来掌握相关知识、把握出题脉络,总结考核知识点,高效率的进行备考。3.不要一味看教材,不要一味做教材上的题目。五、考试过程中的注意事项1.排除一切思想杂念,一心一意答题。2.拿到试卷后,从前往后顺序答题,遇到一时难答的题果断跳过,答后面的题,以防在某道题上耽搁时间,影响后面的答题。3. 完全没有思路的题目上不要花太多时间,认真检查会做的题目,做到会做就要做对。4.不要盲目提前交卷,在确保没有漏题的情况下经过两遍检查方可交卷。第一章 程序设计基本概念当前讲授一、C语言程序的运行过程。【解析】C语言程序的运行过程:二、程序设计包含五部分:1确定数据结构2确定算法3编码4在计算机上调试5整理并写出文档资料三、算法算法是指为解决某个特定问题而采取的确定且有限的步骤。一个算法应当具有以下五个特性:1有穷性。一个算法包含的操作步骤应该是有限的。也就是说,在执行若干个操作步骤之后,算法将结束,而且每一步都在合理的时间内完成。2确定性。算法中每一条指令必须有确切的含义,不能有二义性,对于相同的输入必能得出相同的执行结果。3可行性。算法中指定的操作,都可以通过已经验证过可以实现的基本运算执行有限次后实现。4有零个或多个输入。计算机上实现的算法是用来处理数据对象的,在大多数情况下这些数据对象需要通过输入来得到。5有一个或多个输出。算法的目的是为了求“解”,这些“解”只有通过输出才能得到。四、结构化程序的基本结构:1顺序结构2选择结构3循环结构已经证明,由三种基本结构组成的算法可以解决任何复杂的问题。由三种基本结构所构成的算法称为结构化算法;由三种基本结构所构成的程序称为结构化程序。五、模块化结构1结构化程序设计提倡模块化的设计方法2C语言是一种结构化程序设计语言,它提供了三种基本结构的语句3C语言中的函数可以单独进行编译,从而实现模块化历年真题1.以下叙述中正确的是() 。A用C程序实现的算法必须要有输入和输出操作B用C程序实现的算法可以没有输出但必须要有输入C用C程序实现的算法可以没有输入但必须要有输出D用C程序实现的算法可以既没有输入也没有输出隐藏答案【答案】C【解析】一个算法有零个或多个输入;一个算法有一个或多个输出。2.算法中,对需要执行的每一步操作,必须给出清楚、严格的规定,这属于算法的( )。A正当性B可行性C确定性D有穷性隐藏答案【答案】C【解析】一个算法应当具有以下5个基本特性:1有穷性;2确定性;3有零个或多个输入;4可行性;5有一个或多个输出。其中确定性指算法中每一条指令必须有确切的含义,不能有二义性,对于相同的输入必能得出相同的执行结果。3.下列叙述中错误的是()。A计算机不能直接执行用C语言编写的源程序BC程序经C编译程序编译后,生成后缀为.obj的文件是一个二进制文件C后缀为.obj的文件,经连接程序生成后缀为.exe的文件是一个二进制文件D后缀为.obj和.exe的二进制文件都可以直接运行隐藏答案【答案】D【解析】C语言程序的运行过程:由此可见,选项D叙述错误。4.以下叙述中错误的是( )。AC语言是一种结构化程序设计语言B结构化程序有顺序、分支、循环三种基本结构组成C使用三种基本结构构成的程序只能解决简单问题D结构化程序设计提倡模块化的设计方法隐藏答案【答案】C【解析】C语言是一种结构化程序设计语言;C程序由三种基本的结构组成,分别为顺序结构、选择结构和循环结构,这三种结构可以组成任何复杂的C程序,即可以完成任何复杂的任务。结构化程序设计提倡模块化的设计方法,C语言中的函数可以单独进行编译,从而实现模块化。由上可见,选项C叙述不正确。第二章 C程序设计的初步知识 内容讲解一当前讲授程序实例问题:C程序的基本结构是什么样?程序演示:【例】求三个实数的平均值,三个实数由键盘输入。程序清单如下。void main()/* 定义主函数 */ float x,y,z,a;/* 定义四个存放实数的变量x,y,z,a */scanf(“%f,%f,%f”,&x,&y,&z);/* 输入三个实数并存放到变量x,y,z中 */a=(x+y+z)/3;/* 用赋值语句计算x,y,z的平均值并存入变量a中 */printf(”%fn”,a);/* 输出变量a中的3个实数的平均值 */输入:2,4,9注意输入方法结果:5.000000一、C语言程序的结构和格式C程序构成的特点:(1)程序是由若干个函数构成的。 每个程序有且仅有一个主函数,该主函数的函数名规定为main。(2)每个函数(包括主函数)的定义分为两个部分:函数头和函数体。函数头:返回值的类型 函数名(类型 形式参数,类型 形式参数,)函数体: 数据定义部分实现函数功能的语句串函数名后面的一对圆括号“( )”是用来写函数的参数的。参数可以有,也可以没有,但圆括号不能省略。(3)程序中的每个语句以“分号”作为语句的结束,“分号”是C语句的组成部分,不可以省略。(4)用“/*”和“*/”括住的任意字符序列,称为“注释”。注释可以出现在程序的任何位置上,通常放在一段程序的开始,用于说明该段程序的功能;或者放在某个语句的后面,对该语句进行说明。源程序编译时,注释被忽略。(5)程序的书写格式很灵活,在一行上可以书写多个语句,一个语句也可以写在多行上。在程序清单的任何一处都可以插入空格符号或回车符号。但是,为了程序清单层次分明、便于阅读,通常都采用缩格并对齐的书写方法。(6)程序的执行总是从主函数开始,并在主函数中结束。主函数和其它函数的位置是任意的。其它函数总是通过函数调用语句被执行。(7)主函数可以调用任何其它函数;任何其它函数都可以相互调用,但不能调用主函数。(8)C语言编译系统区分字母大小写。历年试题1.以下叙述中正确的是()。AC程序中注释部分可以出现在程序中任意合适的地方B花括号和只能作为函数体的定界符C构成C程序的基本单位是函数,所有函数名都可以由用户命名D分号是C语句之间的分隔符,不是语句的一部分隐藏答案【答案】A【解析】本题考核的知识点是C语言的特点。在C语言中,允许在任何能够插入空格符的位置插入注释,但C语言的注释不能进行嵌套,故选项A正确;花括号还可以作为复合语句的定界符,故选项B错误;选项C中前半句是正确的,C程序由一个或多个函数所组成,但不是所有的函数都由用户自己命名,有些函数比如库函数,主函数main()就不能由用户来命名,故选C不正确;在C语言中明确规定每条语句以分号“;”结束,分号是语句不可缺少的一部分,故选项D不正确。所以,4个选项中选项A符合题意。2.对于一个正常运行的C程序,以下叙述中正确的是( ) 。A程序的执行总是从main函数开始,在main函数结束B程序的执行总是从程序的第一个函数开始,在main函数结束C程序的执行总是从main函数开始,在程序的最后一个函数中结束D程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束隐藏答案【答案】A【解析】本题考查的是C语言的特点。程序的执行总是从主函数开始,并在主函数中结束。主函数和其它函数的位置是任意的。其它函数总是通过函数调用语句被执行。3.以下叙述中正确的是( )。AC程序中的注释只能出现在程序的开始位置和语句的后面BC程序书写格式严格,要求一行内只能写一个语句CC程序书写格式自由,一个语句可以写在多行上D用C语言编写的程序只能放在一个程序文件中隐藏答案【答案】C【解析】注释可以出现在程序的任何位置上,通常放在一段程序的开始,用于说明该段程序的功能;或者放在某个语句的后面,对该语句进行说明。源程序编译时,注释被忽略。程序的书写格式很灵活,在一行上可以书写多个语句,一个语句也可以写在多行上。每个程序可以包括多个C程序文件。综上所述,选项C为正确答案。二、标识符、常量和变量1.标识符C语言中按照一定规则命名的符号称为标识符。本章开头程序中的 x,y,z,a,float,printf都是标识符。标识符是由字母或下划线开头的字母、数字、下划线组成的字符序列。包括以下三类:(1)关键字本章开头程序中的C语句:float x,y,z,a;中的float 就是关键字。autobreakcasecharcontinueconstdefaultdodoubleelseenum自动中止情况字符继续常量缺省做双否则枚举externfloatforgotointiflongregisterreturnshortsigned外部浮点对于转向整如果长寄存器返回短带符号sizeofstaticstructswitchtypedefunionunsignedvoidvolatilewhile计算字节数静态结构开关类型定义共用无符号空可变的当说明:所有的关键字均由小写字母组成,一旦有一个字母大写,其不再是关键字原来的含义。根据关键字的作用,可分其为数据类型关键字、控制语句关键字、存储类型关键字和其它关键字四类。数据类型关键字(12个):char, double, enum, float, int, long, short, signed, struct, union, unsigned, void控制语句关键字(12个):break, case, continue, default, do, else, for, goto, if, return, switch, while存储类型关键字(4个):auto, extern, register, static其它关键字(4个):const, sizeof, typedef, volatile(2)预定义标识符本章开头程序中的scanf、printf就是预定义标识符所谓预定义标识符是指在C语言中预先定义并具有特定含义的标识符,如C语言提供的库函数的名字(如printf)和预编译处理命令(如define)等。C语言允许把这类标识符重新定义另作他用,但这将使这些标识符失去预先定义的原意。建议用户不要把这些预定义标识符另作他用。(3)用户自定义标识符本章开头程序中的 x,y,z,a就是用户自定义标识符用户自定义的标识符一般用来给符号常量名、变量名、数组名、函数名等命名。标识符中的字母是区分大小写的,例如,CCW、CCw、CcW、Ccw、cCW、cCw、ccW、ccw是不同的标识符。正确的标识符: sum PI ia2a_2 _a2 _a_2 If printf错误的标识符: 2a (非字母或下划线开头)a? (含有非字母、数字、下划线的字符?)c.g(含有非字母、数字、下划线的字符.)a-2(含有非字母、数字、下划线的字符-)if(用户选取的标识符不能是语言的保留字)由于标识符主要用来命名,所以用户应选取有实际含义的标识符,以增强程序的可读性。历年真题1.按照C语言规定的用户标识符命名规则,不能出现在标识符中的是( ) 。A大写字母B连接符C数字字符D下划线隐藏答案【答案】B【解析】本题考查的是C语言的标识符。C语言规定的用户标识符由字母、数字和下划线组成,并且第一个字符必须为字母或下划线,并且不能与C语言关键字相同。故本题应该选择B。2.可在C程序中用做用户标识符的一组标识符是( )A and _2007B Date Y-M-DC Hi Dr.TomD case BIgl隐藏答案【答案】A【解析】本题考查的是C语言的标识符。C语言规定的用户标识符由字母、数字和下划线组成,并且第一个字符必须为字母或下划线,并且不能与C语言关键字相同。选项B和C中出现了字母、数字和下划线以外的字符,选项D中出现了关键字“case”,选项A的一组符合符合C语言用户标识符的规定。3.以下不能定义为用户标识符的是()。AscanfBVoidC_3com_Dint隐藏答案【答案】D【解析】本题考核的知识点是用户标识符的定义。在C语言中,合法的标识符由字母、数字和下划线组成,并且第1个字符必须为字母或下划线。选项D中int为C语言中的保留字,不能作为用户的标识符;选项A中scanf虽然与库函数名相同,但在C语言中是允许的。选项B中Void的首字母是大写的,这和关键字void不同, C语言中大小写字母是有区别的。选项C也是合法的标识符。所以,4个选项中选项D符合题意。2.常量常量是指在程序运行过程中,其值不发生变化的量。例:12,10,12.5,a,“abc”3.符号常量符号常量的定义方法如下: #define 符号常量常量【例】计算圆的面积。#include “stdio.h”#define PI 3.14159 /* 定义了符号常量PI为3.14159 */main()double r,s;r=5.0;s=PI*r*r;printf(“s=%fn”,s);执行以上程序后的输出结果如下:s=78.539750说明:(1)符号常量应按标识符的规则构成,建议用大写英文字母组成。其中的常量可以是任何类型的常量。(2)符号常量的定义一般放在程序的开头,每个定义必须独占一行,其后不跟分号。4.变量的概念本章开头程序中的 x,y,z,a就是变量(1)变量定义 :变量是指在程序运行过程中其值可以发生变化的量,通常是用来保存程序运行过程中的输入数据、计算获得的中间结果和最终结果。(2)变量的初始化:变量的初始化是给变量赋值的一种方式。在定义变量的同时给变量赋予初始值就称为变量的初始化。(3)变量的定义:数据类型符 变量名1=初值1,.,变量名n=初值n;例:int a=2;变量必须先定义后使用。历年真题以下选项中正确的定义语句是( )。Adouble a;b;Bdouble a=b=7;Cdouble a=7,b=7;Ddouble ,a,b;隐藏答案【答案】C【解析】选项A中实质是两条C语句,变量b没有定义。选项D中多了一个逗号。选项C是正确的第一语句。C语言不允许象选项B那样定义变量并赋初值。三、整型数据1. 整型常量在语言中,整型常量有三种书写形式:(1)十进制整数:由数字09和正负号表示。如:0、-111、+15、21等。(2)八进制整数(在前面0)。例如00 、0111、015、021。(3)十六进制整数(在前面0x)。 例如 0x0 、0x111、0xff、0x2d。说明:(1)正整数前面的“+”号可以省略。(2)十进制整数可以是负数,而八进制和十六进制只能是整数 。长整型常量(在整数的末尾字母“L”):例如0L(十进制)、0111L(八进制)、0x15L(十六进制)2.整型变量整型变量可以分为:基本型、短整型、长整型、和无符号型四种。例:int a,b,c;long d=10L;3.整型数据的分类。数据类型数据类型符占用字节数数值范围整型signed int4-2147483648+2147483647 (-231231-1)短整型signed short int2-32768+32767(-215215-1)长整型signed long int4-2147483648+2147483647(-231231-1)无符号整型unsigned int404294967295 (0232-1)无符号短整型unsigned short int2065535(0216-1)无符号长整型unsigned long int404294967295(0232-1)4.整型数据在计算机中的表示整数在计算机中表示的几种编码原码:一个符号位表示数据的正负,0代表正号,1代表负号,其余的代表数据的绝对值。例: 5的原码:0000 0000 0000 01015的原码:1000 0000 0000 0101反码:正数的反码与原码相同,负数的反码是将其原码除符号位外将其它二进制位按位取反。例: 5的反码:1111 1111 1111 1010补码:正数的补码与原码相同,负数的补码是在其反码的最低位上加1。例: 5的补码:1111 1111 1111 1011(1)正整数在内存中按原码存放。例:short 型数5; 在计算机中存放的是:0000 0000 0000 0101两个字节的short型最大正整数是:0111 1111 1111 1111,值是32767。(2)负整数在内存中按补码存放。例:short 型数5; 在计算机中存放的是:1111 1111 1111 1011两个字节的short型最小正整数是:1000 000 000 000,值是-32768。计算机内存中存放整数的二进制码,如果最高位是0,表示存放的是正整数,将该二进制码直接转换为十进制数就是它表示的值。如果最高位是1,表示存放的是以补码形式存放的负整数。把内存中以补码形式存放的二进制码转化成十进制的负整数的步骤:先对除符号位之外的各位取反。例如有补码1111 1111 1111 1011 取反后为。1000 0000 0000 0100将所得二进制数转换成十进制数。例如1000 0000 0000 0100的十进制数为4。对所求得的数再减1,即为5。(3)无符号数最高位也用来存放数据。16位二进制数能表示的最小无符号数为:0000 0000 0000 0000值为0,最大无符号数为:1111 1111 1111 1111,值为65535。历年真题1.以下选项中可作为C语言合法整数的是()。(2003年9月)A10110BB0386C0XffaDx2a2隐藏答案【答案】C【解析】本题考核的知识点是C语言中整数的表示方法。C程序中允许使用十进制、八进制和十六进制来表示整数,选项A为二进制表示,故选项A不正确;C语言中以0开头的数字是八进制数,在八进制数中,各个位数只能为数字07,故选项B不正确;C语言规定十六进制数必须以0X或0x开头,选项D的开头缺少0,故选项D不正确。选项C是正确的十六进制数。所以,4个选项中选项C符合题意。2.C源程序中不能表示的数制是( )。A二进制B八进制C十进制D十六进制隐藏答案【答案】A【解析】C源程序中,可以表示十进制数,如+15、-2.1;可以表示八进制整数(在前面加0),例如00 、015;可以表示十六进制整数(在前面加0x),如 0x0 、0xff;但不能表示二进制数。第二章 C程序设计的初步知识 内容讲解二当前讲授四、实型数据1.实型常量实型常量只使用十进制,它的书写形式有两种:(1)十进制数形式:(必须有小数点) 如0.123, .123, 123.0, 0.0, 123.(2)指数形式:(e或E之前必须有数字;e后面的指数必须为整数)如12e3 ,123E2, 1.23e4 ,错误表示: e-5 , 1.2E-3.5说明:(1)实型常量在一般的微型机中占用4个字节数值范围都是-10381038。(2)实型常量有效数字是7位。例如,1.23456789和1.234567 是相同的,1.23456789中的后两位数字是无效的。2.实型变量本章开头程序中的float x,y,z,a;就定义了x,y,z,a四个单精度实型变量。实型变量分为单精度型和双精度型两种,分别用类型名float和double进行定义。double a,b,c;定义了a,b,c三个双精度实型变量。单精度实float4-10381038(保留7位有效数字)双精度实型double8-1030810308(保留1516位有效数字)历年真题以下选项中,合法的一组C语言数值常量是( )。隐藏答案【答案】B【解析】本题考查的是C语言的数值常量的表示。数值常量包括整型常量和实型常量,其中,整型常量又分为十进制、八进制(以0开头)和十六进制(以0x或0X开头)三种表示形式;实型常量只使用十进制,它的书写形式有两种:十进制数形式:(必须有小数点)指数形式:字母e(或E)之前必须有数字(可以是一个十进制的整数或小数),之后必须是一个整数。选项A,八进制数中数字的范围是07, 028是非法的。选项C中4e1.5字母e之后是一个小数,是非法的表示。选项D中10,000中有“,”,是非法的表示。选项B的三个常量表示都是合法的。五、算术表达式1.算术运算符 (+、-;+、-、*、/、%)说明:(1) 除运算(/)和运算对象的数据类型有关。例如,14/5=21/2=0 1/2.0=0.5 1.0/2=0.5。(2)模运算(%)的对象必须是整型数据,结果是整除后的余数。例如,14%5=4(3)算术运算符的优先级由高到低:(单目)+、*、/、%(双目)+、-2.强制数据类型转换命令格式: (数据类型符)(表达式)当被转换的表达式是一个简单表达式时,外面的一对圆括号可以缺省。例如,(double)a 等价于(double)(a)/*将变量a的值转换成double型*/(int)(x + y) /*将x+y的结果转换成int型*/历年真题1.表达式3.6-5/2+1.2+5%2的值是( ) 。A4.3B4.8C3.3D3.8隐藏答案【答案】D【解析】本题考查的知识点是算术表达式的运算。算术表达式是由+、-、*、和五种算术运算符所组成的表达式,其中*、和的优先级要高于+和,同级别的运算符从左至右运算。所以本题首先计算5/2和52, 5/2的结果是2, 52表示的是5除以2所得的余数,其结果为1。计算完后,表达式变为3.6-2+1.2+1,最后结果为3.8,故应该选择D。2. 以下不能正确表示代数式的C语言表达式是( )A2*a*b/c/dBa*b/c/d*2Ca/c/d*b*2D2*a*b/c*d隐藏答案【答案】D【解析】选项A、B、C都能正确表示代数式。选项D表示的代数式是。六、赋值表达式1.赋值运算符和自反赋值运算符赋值运算符 (=)复合赋值运算符 (+=-=*=/=%=&=|=)说明:(1)赋值运算符左侧只能是变量,不能是常量或表达式。例: b+2=7 错误的赋值表达式(2)赋值表达式最左边变量中所得到的新值就是赋值表达的值。例: a=2+b=3 计算这个表达式后b的值是3,a的值是5,表达式的值是5。(3)复合赋值运算符右边的表达式是自动加括号的。其结合方向自右至左。例: “c%=a-3”不能理解为“c=c%a-3”,应理解为“c=c%(a-3)”。(4)赋值运算符和复合赋值运算符优先级只比逗号运算符高,比其它运算符都低。2.运算结果存入变量时数据类型的自动转换规则先将运算结果的数据类型自动转换成左边变量的数据类型,然后再赋予该变量。【例】 设变量定义如下:int a=2;计算表达式a=2*1.7后a的值为3,而不是3.4。历年真题若以下选项中的变量已正确定义,则正确的赋值语句是()。Ax1=26.8%3B1+2=x2Cx3=0x12Dx4=1+2=3;隐藏答案【答案】C【解析】本题考核的知识点是赋值和取余运算。赋值操作是将“=”右侧表达式的值赋给“=”左侧的变量。不能将一个表达式的值赋给一个表达式或一个常量,所以,选项B和D错误。运算符“%”的运算对象必须为整数,而选项A中26.8不是整数,故选项A不正确;选项C是将十六进制数0x12赋给变量x3,是正确的赋值语句。七、自加、自减运算符和逗号运算符1.自加、自减运算符(+ - -)说明:(1)+变量或-变量:先加(或减1)再使用该变量的新值;变量+或变量-:先使用该变量的值再加给该变量加1(或1)。(2)自加、自减运算符的运算对象是整型、字符型、指针型等变量,不能是常量或表达式。历年真题1.设有定义:int k=0;,以下选项的四个表达式中与其他三个表达式的值不相同的是()。Ak+Bk+=1C+kDk+1隐藏答案【答案】A【解析】本题考查的是自增运算。前缀自增运算时,表达式的值和变量自增之后的值相同;后缀自增运算时,表达式的值为变量自增之前的值。选项A, k+是先取k的值作为表达式的值,然后k的值再加1,所以该表达式的值是0,k的值是1。选项B,k+=1等价于k=k+1,表达式和k的值均为1。选项C, +k是先将k的值再加1,再取k的值作为表达式的值,所以该表达式和k的值是都1。选项D,k+1,该表达式为1,k的值不变,还是0。综上所述,正确答案为A。2.有以下程序 main() int m=3,n=4,x; x=-m+; x=x+8/+n; printf(%dn,x); 程序运行后的输出结果是()。A3B5C-1D-2隐藏答案【答案】D【解析】本题考核的知识点是自加运算。x=-m+;的计算过程是先m的当前值3添上负号后付给x,然后m再自增1,等价于x=-m;m+;两条语句。x=x+8/+n;的运算过程是n先增1,变为5,然后再计算8/5得1,最后计算x+1,等于-2,最后x得到的值就是-2。(该语句等价+n; x=x+8/n; 两条语句。)因此最后输出x的值为-2。所以,4个选项中选项D符合题意。2.逗号运算符逗号表达式的一般形式为: 表达式l,表达式2,表达式n说明:(1)由逗号运算符组成的式子也是表达式,其值等于最右边表达式的值。(2)任何运算符都优先于逗号运算符历年真题设变量已正确定义为整型,则表达式n=i=2,+i,i+的值为_。隐藏答案【答案】3【解析】表达式n=i=2,+i,i+是由三个表达式构成的逗号表达式,先计算第一个表达式n=i=2,则i和n及表达式的值均为2;再计算第二个表达式+i,则表达式和i的都是3 ;最后计算第三个表达式i+,则先取i的值作为表达式的值,为3,然后i再加1,最后i的值为4。第三个表达式的值为整个表达式的值,为3。第三章 顺序结构当前讲授程序实例问题:【例】设计一个C程序,完成由终端输入两个整数给变量x和y;然后输出x和y;在交换x和y中的值后,再输出x和y。验证两个变量中的数整是否正确地进行了交换。程序演示:#include main( )int x, y,t;printf(“Enter x&y:n”);scanf(“%d%d”,&x,&y);printf(“x=%d y=%dn”,x,y);t=x;x=y;y=t;printf(“x=%d y=%dn”,x,y);以下是程序运行情况:Enter x&y:(由第4行的printf输出)l23 456(从键盘输入两个整数)x=l23 y=456(由第6行的printf输出)x=456 y=l23(由第8行的printf输出)一、赋值语句前面程序中的C语句:t=x;x=y;y=t;就是赋值语句。赋值语句是在赋值表达式的尾部加上个”;”号,就构成了赋值语何,也称表达式语句。【例】a=3+5; j+; 合法的赋值语句a=b=c=2; 合法的赋值语句。a+2=5; 错误的赋值语句,不能把一个值赋给一个表达式。二、数据输出前面程序中的C语句:printf(“x=d y=dn”,x,y);就是数据输出语句。【函数调用格式】printf(格式控制,输出项1,输出项2)【函数功能】先按照自右向左的顺序,依次计算”输出表达式表”中诸表达式的值。然后按照”输出格式字符串”中规定的格式顺序,将各个表达式值输出到显示器上显示。格式字符数据对象的类型输出形式数据输出方法%-mdintshortunsigned intunsigned shortchar十进制整数无m 按实际位数输出有m 输出m位超过m位,按实际位数输出不足m位,则用空格补足m位无-号 右对齐(左补空格)有-号 左对齐(右补空格)%-mo八进制整数%-mx十六进制整数%-mu无符号整数%-mldlongunsigned long十进制整数%-mlo八进制整数%-mlx十六进制整数%-mlu无符号整数%-m.nffloatdouble十进制小数无m.n 按实际位数输出有m.n 输出n位小数,总宽度为m超过m位,按实际位数输出不足m位,用空格补足m位无-号 右对齐(左补空格)有-号 左对齐(右补空格)%-m.ne十进制指数%g自动选取f或e中宽度较小的格式%p内存变量输出内存变量的地址%输出一个%注意:1.尽量不要在输出语句中改变输出变量的值,因为可能会造成输出结果的不确定性。例如:int k=8;printf(“d,%dn”,k,+k);输出结果不是8,9,而是9,9。这是因为调用函数printf时,其参数是从右至左进行处理的,将先进行+k运算。2.使输出数据总带+号或-号,可以在”和格式字符问加一个”+”号来实现。历年真题1.有以下程序,其中%u表示按无符号整数输出main()unsigned int x=0xFFFF; /* x的初值为十六进制数 */printf(“%un”,x);程序运行后的输出结果是( )。A-1B65535C32767D0xFFFF隐藏答案【答案】B【解析】本题考查的是标准函数printf()。在VC+ 6.0系统中变量x=0xFFFF在计算机中占4个字节,存放的二进制数为0000 0000 000 000 1111 1111 1111 1111。变量x按照%u格式输出的值为65535。所以本题正确答案为B。2.有以下程序段char ch; int k;ch=a; k=12;printf(%c,%d, ,ch,k); printf(k=%dn,k);已知字符a 的ASC 十进制代码为97,则执行上述程序段后输出结果是( )。A因变量类型与格式描述符的类型不匹配输出无定值B输出项与格式描述符个数不符,输出为零值或不定值Ca,97,12k=12Da,97,k=12隐藏答案【答案】D【解析】使用printf(格式控制,输出项表)输出数据时,格式说明与输出项必须匹配,若格式说明个数少于输出项,则多余的输出项不输出;若格式说明个数多于输出项,则输出一些毫无意义的乱码。printf(%c,%d, ,ch,k); 中的k的值将不输出,ch按%c格式输出a,按%d格式输出97。所以,程序段输出结果是a,97,k=12。3.若整型变量a和b中的值分别为7和9,要求按以下格式输出a和b的值:a=7b=9请完成输出语句:printf(_,a,b);隐藏答案【答案】a=%dnb=%d【解析】输出格式中除了输出a和b的值外还输出了a=和,这就要求在printf的格式控制段要有a= 和b=。另外,输出a的值后进行了换行,这要求在格式控制段中要有n。综上,输出语句应该是printf(“a=%dnb=%d”,a,b);。4.有以下程序main()int a; char c=10;float f=100.0; double x;a=f/=c*=(x=6.5);printf(%d %d %3.1f %3.1fn,a,c,f,x);程序运行后的输出结果是()。A1 65 1 6.5B1 65 1.5 6.5C1 65 1.0 6.5D2 65 1.5 6.5隐藏答案【答案】B【解析】本题考核的知识点是自反赋值运算。a=f/=c*=(x=6.5);先把6 .5赋值给x然后执行“c*=(x=6.5)”相当于执行 “ c=c*6.5”,则c的值变为65,接着向左执行“f=f65” ,则f的值变为1.538462,接着执行“a=f”,由于a是整型变量,所以a最后取f的整数部分为1。%3.1f的含义是输出的数据宽度为3,保留1位小数。程序最后输出的a、c、f和x的值分别为1、65、1.5、6.5。所以,4个选项中选项B符合题意。三、数据的输入前面程序中的C语句:scanf(“%d%d”,&x,&y);就是数据输入语句。【函数调用格式】scanf(格式控制,输入变量地址表)【函数功能】从键盘按照”格式控制”中规定的格式读取若干个数据,按”输入变量地址表”中变量的顺序,依次存入对应的变量。格式字符说 明c输入一个字符d输入带符号的十进制整型数i输入整型数,整型数可以是带先导0的八进制数,也可以是带先导0x(或0X)的十六进制数o以八进制格式输入整型数,可以带先导0,也可以不带x以十六进制格式输入整型数,可以带先导0x或0X,也可以不带u以无符号十进制形式输入整型数f(lf)以带小数点的数学形式或指数形式输入浮点数(单精度数用f,双精度数用lf)e(le)同上s输入一个字符串,直到遇到”0”。若字符串长度超过指定的精度则自动突破,不会截断字符串说明:1.在VC 6O环境下,输入short型整数,格式控制要求用%hd。要输入double型数据,样式控制必须用%lf(或%le)。否则,数据不能正确输入。2.输入数值数据时,输入的数据之间必须用空格、回车符、制表符(Tab键)隔开,间隔符个数不限。【例】int k; float a; double y;scanf(“%d%f%1e”,&k,&a,&y);输入格式可以是:10 12.3 1234567.89 也可以是:10 12.3 1234567.89 也可以是:10l2.3l234567893.scanf函数的格式字符前可以加入一个正整数指定输入数据所占的宽度,但不可以对数指定小数位的宽度。【例】 scanf(“%3d%5f%51e”,&k,&a,&y);若从键盘上从第l列开始输入:l23456.789.123用printf(“%d %f %fn”,k,a,y);打印的结果是:l23 456.7000000 89.1200004.可以在%和格式字符之间加入”*”号,作用是跳过对应的输入数据。【例】 int x,y,z;scanf(“%d%*d%d%d”,&x,&y,&z);printf(“%d %d %d %dn”,x,y,z);若是输入:2345678则输出是:1256785.在格式控制字符串中插入其他字符,在输入数据时按照一一对应的位置原样输入这些字符。【例】scanf(“%d,%d,%d”,&x,&y,&z);输入格式必须是:l 2,34,56或者是:l 2, 34, 56但输入:1 2 ,34 ,56是错误的。历年真题1.有以下程序main() int m,n,p;scanf(m=%dn=%dp=%d,&m,&n,&p);printf(%d%d%d ,m,n,p);若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是()。Am=123n=456p=789Bm=123 n=456 p=789Cm=123,n=456,p=789 D123 456 789隐藏答案【答案】A【解析】本题考查的是标准输入函数scanf()的运用。scanf函数的第一个参数是格式控制串,若在格式控制串中插入了格式控制符以外的其它字符,则在输入数据时要在对应的位置原样输入这些字符才能正确输入。所以本题正确的输入是 “m=123n=456p=789”。注意不能像选项B和选项C那样中间加空格或其它字符。所以,4个选项中选项A符合题意。2.设有定义:int a; float b;执行scanf(%2d%f,&a,&b);语句时,若从键盘输入876 543.0,a和b的值分别是_。 (2006年9月)A876和543.000000B87和6.000000C87和543.000000 D76和543.000000隐藏答案【答案】B【解析】本题考查了格式输入函数scanf()的运用。scanf()函数的一般形式为: scanf(格式控制,地址表列)。本题中的“格式控制”是“%2d%f”,其中%2d的意思是要输入一个整数,但该整数最宽只占2个字符,而%f是要输入一个浮点数。而题目要求输入的是876 543.0,所以scanf()函数将87这两个字符当作第1个整数读入到变量a中,而剩下的6 543.0因为中间有空格隔断,所以只将6这一个字符当作浮点数读入到变量b中。因此,选项B正确。3.设变量均已正确定义,若要通过scanf(“%d%c%d%c”,&a1,&c1,&a2,&c2);语句为变量a1和a2赋数值10和20,为变量c1和c2赋字符X和Y。以下所示的输入形式中正确的是(注:代表空格字符)( )。 (2007年4月)A10X20Y B10X20Y C10X 20Y D10X 20Y 隐藏答案【答案】D【解析】本题考查格式输入函数scanf()的运用。scanf()函数的一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论