C语言程序设计教案-I(2013年9月)_第1页
C语言程序设计教案-I(2013年9月)_第2页
C语言程序设计教案-I(2013年9月)_第3页
C语言程序设计教案-I(2013年9月)_第4页
C语言程序设计教案-I(2013年9月)_第5页
已阅读5页,还剩247页未读 继续免费阅读

下载本文档

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

文档简介

全国计算机等级考试二级Email:huxiaoli@C语言程序设计主讲:胡晓丽高频考点CompanyLogo考试方式机试:120分钟,满分100分。(2)程序填空题(18分)(3)程序改错题(18分)(3)程序设计题(24分)(1)选择题(40分)CompanyLogo考试大纲◆基本要求

1.熟悉VisualC++6.0集成开发环境。

2.掌握结构化程序设计的方法,具有良好的程序设计风格。

3.掌握程序设计中简单的数据结构和算法并能阅读简单的程序。

4.在VisualC++6.0集成环境下,能够编写简单的C程序,并具有基本的纠错和调试程序的能力CompanyLogo目录1.程序设计基本概念2.C程序设计的初步知识3.顺序结构4.选择结构5.循环结构6.字符型数据7.函数8课时目录9.数组10.字符串11.对函数的进一步讨论12.用户标识符的作用域和存储类13.编译预处理和动态存储分配14.结构体、共用体和用户定义类型15.位运算16.文件8.地址和指针2课时8课时1课时1课时CompanyLogo第1章程序设计基本概念Top1:各种“程序”的概念Top3:结构化程序设计Top2:算法的特性C程序的上机步骤CompanyLogo什么是程序??Top1:各种“程序”的概念人们把需要用计算机完成的工作写成一条条指令,并把这些指令存储在内存中,当人们给出执行命令后,计算机就按指令顺序自动进行操作。这些可以连续执行的一条条指令的集合称为“程序”。CompanyLogo机器语言汇编语言高级语言面向过程面向对象程序设计语言的发展Top1:各种“程序”的概念CompanyLogo程序的“转换”机器语言汇编语言高级语言C语言编译汇编源程序目标程序.OBJTop1:各种“程序”的概念可执行程序.exe链接二进制语言CompanyLogoTop1:各种“程序”的概念真题分析(2013年3月)DCompanyLogoTop1:各种“程序”的概念真题分析(2007年4月)下列叙述中错误的是——A、计算机不能直接执行用C语言编写的源程序B、C程序经编译后,生成后缀为.Obj的文件是一个二进制文件C、后缀为.Obj的文件,经连接程序生成后缀为.Exe的文件是一个二进制文件D、后缀为.Obj和.Exe的二进制文件都可以直接运行DCompanyLogoTop1:各种“程序”的概念真题分析(2006年4月)以下叙述中错误的是——A、C语言源程序经编译后生成后缀为.OBJ的目标程序B、C程序经过编译、连接步骤之后才能形成一个真正可以执行的二进制机器指令文件C、用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中D、C语言中的每条可执行语句和非执行语句最终都将转换成二进制的机器指令D只有二进制语句才最终被转换成二进制机器指令CompanyLogoTop1:各种“程序”的概念真题分析(2007年9月)C语言源程序的后缀是——A、.exeB、.cC、.objD、.cpBCompanyLogoTop2:算法的特性什么是算法?算法是指为解决某个特定问题而采取的确定且有限的步骤。?CompanyLogo算法应具有以下五个特点:1有穷性:一个算法包含的步骤是有限的。即在若干个步骤后结束,并且每一步都在合理时间内完成2确定性:算法中每一条指令必须有确切的含义,不能有二义性,对于相同的输入必能得出相同的执行结果。3可行性:算法中指定的操作,都可以通过已经验证可以实现的基本运算执行有限次后实现。5有一个或多个输出:算法的目的是为了求解。这些“解”只有通过输出得到。4有零个或多个输入:算法都是用来处理数据对象的,通常情况下这些数据对象需要通过输入来得到。Top2:算法的特性CompanyLogo如何评价算法??时间复杂度1空间复杂度2对算法的要求有:必须是正确的,必须能高效率执行,即占用内存空间少,所需运行时间短。于是,对算法的评价可以从两个方面进行:Top2:算法的特性CompanyLogoTop2:算法的特性真题分析(2013年3月)ACompanyLogoTop2:算法的特性真题分析(2007年4月)算法中,对需要执行的每一步骤操作,必须给出清楚、严格的规定,这属于算法的是——A、正当性B、可行性C、确定性D、有穷性CCompanyLogoTop2:算法的特性真题分析(2006年4月)以下叙述中错误的是——A、算法正确的程序最终一定会结束B、算法正确的程序可以有零个输出C、算法正确的程序可以有零个输入D、算法正确的程序对于相同的输入一定有相同的结果B算法必须有一个或多个输出CompanyLogoTop3:结构化程序设计和模块化结构执行时按顺序逐条执行,没有分支,没有转移。可由赋值语句、输入/输出语句等构成。顺序结构根据不同的条件执行不同分支中的语句。可由if语句、switch语句等构成。选择结构根据各自的条件使一组语句重复执行多次或一次也不执行。可由for语句、while语句等构成。循环结构CompanyLogo什么是模块化结构??将复杂任务分解成若干个子任务,每个子任务又可分解成多个小子任务,每个小子任务只需完成一个简单的功能。在程序设计时用一个小模块实现这些功能。称这样的程序设计方法为“模块化”方法,由一个个功能模块构成的程序结构为模块化结构。Top3:结构化程序设计和模块化结构CompanyLogoTop3:结构化程序设计和模块化结构真题分析(2007年4月)以下叙述中错误的是——A、C语言是一种结构化的程序设计语言B、结构化程序由顺序、分支、循环三种基本结构组成C、使用三种基本结构构成的程序只能解决简单问题D、结构化程序设计提倡模块化的设计方法CCompanyLogo开始结束编辑编译连接运行运行结果可执行文件(.exe)源程序文件(.c)目标文件(.obj)图C程序上机调试过程此两种代码不能执行C程序的上机步骤CompanyLogo第2章C程序设计的初步知识Top4:C程序的结构和格式Top5:标识符的命名规则Top6:C语言基本数据类型及其定义规则Top7:基本类型数据的相互转换Top8:常见算术运算符的使用Top9:算术运算符的优先级顺序Top12:自加自减运算符Top10:赋值表达式的求值规则Top11:逗号表达式的求值规则CompanyLogo例2.1第一个程序Hello,World!/*example1.1ThefirstCProgram*/#include<stdio.h>main(){

printf(“Hello,World!”);}注释编译预处理函数语句输出:Hello,World!Top4:C语言程序的构成和格式CompanyLogo格式特点习惯用小写字母,大小写敏感不使用行号,无程序行概念可使用空行和空格常用锯齿形书写格式<>main(){

……………….………………

…………..…………..

……………….

………………………….

……………….………………..}main(){

inti,j,sum;sum=0;

for(i=1;i<10;i++){

for(j=1;j<10;j++){sum+=i*j;}}

printf(“%d\n”,sum);}Top4:C语言程序的构成和格式CompanyLogo结构特点函数与主函数程序由一个或多个函数组成必须有且只能有一个主函数main()程序执行从main开始,在main中结束,其它函数通过嵌套调用得以执行。程序语句C程序由语句组成用“;”作为语句终止符注释/**/为注释,不能嵌套不产生编译代码例:/*Thisisthemain/*ofexample1.1*/*/非法编译预处理命令Top4:C语言程序的构成和格式例:#include“stdio.h”命令行,不是C语句CompanyLogo真题分析(2013年3月)Top4:C语言程序的构成和格式CCompanyLogo真题分析(2013年3月)Top4:C语言程序的构成和格式DCompanyLogo真题分析(2013年3月)Top4:C语言程序的构成和格式CCompanyLogo真题分析(2007年4月)对于一个正常运行的C程序,以下叙述中正确的是——A、程序的执行总是从main函数开始,在main函数结束B、程序的执行总是从程序的第一个函数开始,在main函数中结束C、程序的执行总是从main函数开始,在程序的最后一个函数中结束。D、程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束。Top4:C语言程序的构成和格式ACompanyLogoTop4:C语言程序的构成和格式真题分析(2007年9月)以下叙述中正确的是——A、C语言程序将从源程序中第一个函数开始执行B、可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行C、C语言规定必须用main作为主函数名,程序将从此开始执行,在此结束D、main可作为用户标识符,用以命名任意一个函数作为主函数CCompanyLogoTop4:C语言程序的构成和格式真题分析(2008年9月)以下叙述中正确的是——A、C程序的基本组成单位是语句B、C程序中每一行只能写一条语句C、简单C语句必须以分号结束D、C语句必须在一行内写完CCompanyLogoTop5:标识符的命名规则什么是标识符??标识符是用来标识变量、符号常量、函数、数组、类型、标号以及一些具有专门含义的有效字符序列。通俗地讲,标识符就是一个名字。CompanyLogo标识分为三类:②预定义标识符③用户标识符①关键字(1)数据类型关键字12个(2)控制语句关键字12个(3)存储类型关键字4个(4)其它关键字4个一般指C语言提供的库函数名和编译预处理命令。在编程时,需要用户给一些变量、函数、数组等命名,这类由用户根据需要自定义的标识符称为用户标识符Top5:标识符的命名规则CompanyLogo组成:只能由字母、数字、下划线组成,且第一个字母必须是字母或下划线大小写敏感不能使用关键字长度:最长32个字符命名原则:见名知意不宜混淆如l与I,o与0例:判断下列标识符号合法性sumSum

M.D.JohndayDate3daysstudent_name#33lotus_1_2_3chara>b_above$123M.D.John3days#33char$123a>b如何命名标识符??CompanyLogoTop5:标识符的命名规则真题分析(2013年3月)ACompanyLogoTop5:标识符的命名规则真题分析(2013年3月)DCompanyLogoTop5:标识符的命名规则真题分析(2007年9月)可在C程序中用做用户标识符的一组标识符是——ATop5:标识符的命名规则真题分析(2009年4月)以下选项中合法的标识符是A)1_1B)1-1C)_11D)1__CompanyLogoCCompanyLogo一般用大写字母是宏定义预处理命令,不是C语句直接常量:整型常量实型常量字符常量字符串常量如#definePRICE30常量定义:程序运行时其值不能改变的量(即常数)分类:符号常量:用标识符代表常量定义格式:#define

符号常量常量>>>>例符号常量举例#definePRICE30main(){

int

num,total;num=10;total=num*PRICE;

printf("total=%d",total);}运行结果:total=300Top6:C语言基本数据类型及其定义规则CompanyLogo整型常量的类型根据其值所在范围确定其数据类型在整常量后加字母l或L,认为它是longint

型常量整型常量(整常数)三种形式:十进制整数:由数字0~9和正负号表示.如123,-456,0八进制整数:由数字0开头,后跟数字0~7表示.如0123,011十六进制整数:由0x开头,后跟0~9,a~f,A~F表示.如0x123,0XffTop6:C语言基本数据类型及其定义规则32767-32768

0

0120160x100X23FD0568o45ox12t-0X12只能是正数CompanyLogo实型常量(实数或浮点数)表示形式:十进制数形式:(必须有小数点)如0.123,.123,123.0,0.0,123.指数形式:(e或E之前必须有数字;指数必须为整数)如12.3e3,123E2,1.23e4,e-5,1.2E-3.5

实型常量的类型默认double型在实型常量后加字母f或F,认为它是float型Top6:C语言基本数据类型及其定义规则X在内存中,实数一律是以指数形式存储的1计算机中存储整数不会出现误差,存储实型数往往存入误差。2!注意:CompanyLogo44字符常量定义:用单引号括起来的单个普通字符或转义字符.

字符常量的值:该字符的ASCII码值例:‘A’-------’\101’-------’\x41’--------65如‘A’——65,‘a’——97,

‘0’——48,‘\n’——10如‘a’‘A’‘?’‘\n’‘\101’转义字符:反斜线后面跟一个字符或一个代码值表示Top6:C语言基本数据类型及其定义规则字符常量与字符串常量不同字符串常量定义:用双引号(“”)括起来的字符序列存储:每个字符串尾自动加一个‘\0’作为字符串结束标志hello\0例字符串“hello”在内存中aa\0例‘a’“a”例空串“”\0例:charch;

ch=“A”;例:charch;

ch=‘A’;Top6:C语言基本数据类型及其定义规则CompanyLogo变量概念:其值可以改变的量变量的定义变量初始化:定义时赋初值变量的使用:先定义,后使用变量定义位置:一般放在函数开头int

x,y,z;x=y=z=1;Top6:C语言基本数据类型及其定义规则例:

inta=2,b,c=4;floatdata=3.67;charch=‘A’;

intx=y=z=1;CompanyLogo整型变量占字节数随机器不同而不同,一般占一个机器字short≤int≤long可用sizeof(类型标识符)测量实型变量float:占4字节,提供7位有效数字double:占8字节,提供15~16位有效数字字符型变量字符变量存放字符ASCII码char与int数据间可进行算术运算没有字符串变量,用字符数组存放Top6:C语言基本数据类型及其定义规则CompanyLogoTop6:C语言基本数据类型及其定义规则真题分析(2013年3月)BCompanyLogoTop6:C语言基本数据类型及其定义规则真题分析(2013年3月)DCompanyLogoTop6:C语言基本数据类型及其定义规则真题分析(2013年3月)ACompanyLogoTop6:C语言基本数据类型及其定义规则真题分析(2013年3月)ACompanyLogoTop6:C语言基本数据类型及其定义规则真题分析(2013年3月)ACompanyLogoTop6:C语言基本数据类型及其定义规则真题分析(2013年3月)ACompanyLogoTop6:C语言基本数据类型及其定义规则真题分析(2013年3月)DCompanyLogoTop6:C语言基本数据类型及其定义规则真题分析(2013年3月)DTop6:C语言基本数据类型及其定义规则真题分析(2005年9月)以下程序运行后的输出结果是——

main(){intx=0210;printf("%X\n",x);}0210010八进制数001000000880二进制数88CompanyLogo隐式转换什么情况下发生运算转换-----不同类型数据混合运算时赋值转换----把一个值赋给与其类型不同的变量时输出转换------输出时转换成指定的输出格式函数调用转换------实参与形参类型不一致时转换运算转换规则:不同类型数据运算时先自动转换成同一类型Top7:基本数据类型间的转换CompanyLogo显式转换(强制转换)一般形式:(类型名)(表达式)例(int)(x+y)(int)x+y(double)(3/2)(int)3.6说明:强制转换得到所需类型的中间变量,原变量类型不变Top7:基本数据类型间的转换CompanyLogo真题分析(2006年9月)以下选项中值为1的表达式是——A、1-'0'B、1-'\0'C、'1'-0D、'\0'-'0'Top7:基本数据类型间的转换1是整型,’0’、’\0’、’1’都是字符型。‘0’换成整型的ASCII码值为48,’1’为49‘\0’是转义字符,表示0或空。BCompanyLogoC运算符算术运算符:(+-*/%++--)关系运算符:(<<===>>=!=)逻辑运算符:(!&&||)位运算符:(<<>>~|^&)赋值运算符:(=及其扩展)条件运算符:(?:)逗号运算符:(,)指针运算符:(*&)求字节数:(sizeof)强制类型转换:(类型)分量运算符:(.->)下标运算符:([])其它:(()-)Top8:常见算术运算符的使用CompanyLogoTop8:常见算术运算符的使用知识点1、基本的算术运算符有:+、-(减法/取负)

、*、/、%(取余数)2、关于除法运算/C语言规定:两个整数相除,其商为整数,小数部分被舍弃。例5/2=-5/2.0=例5/2=2

-5/2.0=-2.53、关于求余数运算%

要求两侧的操作数均为整型数据,否则出错。例5%2=-5%2=1%10=

5%1=5.5%2例5%2=1

-5%2=-11%10=

1

5%1=

05.5%2()CompanyLogoTop8:常见算术运算符的使用真题分析(2013年3月)ACompanyLogoTop8:常见算术运算符的使用真题分析(2013年3月)DCompanyLogoTop8:常见算术运算符的使用真题分析(2013年3月)D*CompanyLogoTop8:常见算术运算符的使用真题分析(2007年4月)以下选项中,当x为大于1的奇数时,数为0的表达式为——A、x%2==1B、x/2C、x%2!=0D、x%2==0D%(求余运算符)的两边都必须是整型。大于1的奇数除以2,余数必为1。表达式成立时,整个表达式逻辑值为1表达式不成立时,整个表达式逻辑值为0。1、算术运算符的优先级()+-

*/

%+-单目双目高低Top9:算术运算符的优先级顺序CompanyLogoTop9:算术运算符的优先级顺序真题分析(2006年4月)表达式3.6-5/2+1.2+5%2的值是___A、4.3B、4.8C、3.3D、3.83.6-5/2+1.2+5%22①③1.6④2.8②1⑤3.8DCompanyLogo赋值运算1赋值符号“=”就是赋值运算符,它的作用是将一个表达式的值赋给一个变量。赋值运算符的一般形式为:如果表达式值的类型,与被赋值变量的类型不一致,但都是数值型或字符型时,系统自动地将表达式的值转换成被赋值变量的数据类型,然后再赋值给变量.例a=3;d=func();c=d+2;b=a;Top10:赋值表达式的求值规则变量=赋值表达式

CompanyLogo几点说明:(1)赋值运算符的优先级只高于逗号运算符,比其它的运算符优先级都低,且具有自右向左的结合性。 如:a=2+7/3(2)赋值运算符左边只能是变量,不能是常量或是表达式。如a+b=c就是错误的。(3)赋值运算符右边也可以是赋值表达式。如a=b=7+1,而a=7+1=b则是错误的。(4)”=“视作运算符,a=19是一个表达式,C语言规定最左边变量中所得到的新值就是赋值表达式的值。Top10:赋值表达式的求值规则CompanyLogo复合赋值表达式2复合赋值运算符是由赋值运算符之前再加一个双目运算符构成的。复合赋值运算的一般格式为:变量双目运算符=表达式└──┬──┘复合赋值运算符等价于:变量

=变量双目运算符(表达式)。当表达式为简单表达式时,表达式外的一对圆括号才可缺省,否则可能出错。例:x+=3x=x+3y*=x+6 y=y*(x+6)Top10:赋值表达式的求值规则CompanyLogo思考2:

a=12;a+=a-=a*a思考3:

inta=2;a%=4-1;a+=a*=a-=a*=3;//a=-264等价于a=a+(a=a-(a*a))//a=0等价于a=a+(a=a*(a=a-(a=a*3)))思考1:已有变量a,其值为9,计算表达式a+=a-=a+a(1)a+a=9+9,表达式的值为18,但是a的值不变,仍为9(2)a=a-18,表达式的值为-9,a的值变为-9。(3)a=a+a,表达式的值为-18,a的值为-18Top10:赋值表达式的求值规则Top10:赋值表达式的求值规则真题分析(2013年3月)BCompanyLogoTop10:赋值表达式的求值规则真题分析(2006年4月)以下叙述中错误的是——A、C程序中的#include和#define均不是C语句B、除逗号运算符外,赋值运算符的优先级最低C、C程序中,j++;是赋值语句D、C程序中,+、-、*、/、%是算术运算符,可用于整型和实型数的运算。DCompanyLogoTop10:赋值表达式的求值规则真题分析(2005年9月)下列能正确定义且赋初值的语句是——A、int

nl=n2=10;B、charc=32;C、floatf=f+1.1;D、doublex=12.3E2.5;C语言规定,变量必须先定义,后使用。A、C错误。A如果写成:intn1,n2;对待n1=n2=10;则正确C如果写成:floatf;f=f+1.1;则正确选项D中,E后面必须为整数,不能是实数。BCompanyLogoTop11逗号表达式的运算规则形式:表达式1,表达式2,……表达式n结合性:从左向右优先级:所有运算符中,逗号运算符优先级最低逗号表达式的值:等于表达式n的值用途:常用于循环for语句中例a=3*5,a*4a=3*5,a*4,a+5例x=(a=3,6*3)x=a=3,6*a//a=15,表达式值60//a=15,表达式值20//赋值表达式,表达式值18,x=18//逗号表达式,表达式值18,x=3CompanyLogoTop11逗号表达式的运算规则真题分析(2013年3月)CTop11逗号表达式的运算规则真题分析(2013年3月)DCompanyLogoTop11逗号表达式的运算规则真题分析(2007年4月)执行以下程序后的输出结果是——main(){

inta=10;

a=(3*5,a+4);

printf("a=%d\n",a);}

a=(3*5,a+4);①15②10+41414CompanyLogoTop11逗号表达式的运算规则真题分析(2005年9月)有以下程序,main(){chara1='M',a2='m';printf(“%c\n”,(a1,a2));}则下列说法正确的是——A、程序输出大写字母MB、程序输出小写字母mC、格式说明符不足,编译出错D、程序运行时产生出错信息BCompanyLogoTop12自加、自减运算符自加运算符++、自减运算符--1i++(或i--)表示在使用该表达式值之后将i值加1(或减1)。++i(或--i)表示在使用该表达式值之前将i值加1(或减1)CompanyLogo例自增、自减运算符的用法与运算规则示例。

main(){inta=100;

printf(“a++=%d\n”,a++);

printf(“++a=%d\n”,++a);

printf(“a--=%d\n”,a--);

printf(“--a=%d\n”,--a);}/*输出a++=100,a的值变为101*/ /*输出++a=102,a的值变为102*/ /*输出a--=102,a的值变为101*/ /*输出--a=100,a的值变为100*/Top12自加、自减运算符CompanyLogo考点:Top12自加、自减运算符1、自增、自减运算符只能用于变量,不能用于常量和表达式。5++、--(a+b)等都是非法的。2、自增、自减运算符和其它运算符混合使用时,其结合性为:至右向左。3、自增、自减运算符,无论作为前缀(++a,--a)还是后缀(a++,a--)运算符,对于变量本身来说自增1或自减1都具有相同的效果,但对表达式来说却有着不同的值。Top12自加、自减运算符真题分析(2013年3月)CTop12自加、自减运算符真题分析(2013年3月)DCompanyLogoTop12自加、自减运算符真题分析(2006年9月)有以下程序,程序运行后的输出结果为——main(){int

x,y,z;x=y=1;z=x++,y++,++y;printf("%d,%d,%d\n",x,y,z);}A、2,3,3 B、2,3,2C、2,3,1 D、2,2,1CCompanyLogoTop12自加、自减运算符真题分析(2005年4月)下列程序的输出结果是——main(){intm=12,n=34;printf("%d%d",m++,++n);printf("%d%d\n",n++,++m);}A、12353514 B、12353513C、12343514 D、12343513ACompanyLogo第3章顺序结构Top13:赋值表达式与赋值语句Top14:数据的输出Top15:数据的输入CompanyLogoTop13:赋值表达式与赋值语句赋值语句:在赋值表达式的尾部加上一个“;”, 又称为表达式语句。例:a=b+c;--i;i++;a=b=c;a=b,b=c;CompanyLogoTop13:赋值表达式与赋值语句考点赋值语句必须在最后出现分号,分号是语句中必不可少的部分。任何赋值表达式都可以加上分号而成为赋值语句,C语言规定赋值号左边不能为常量或表达式。CompanyLogoTop13:赋值表达式与赋值语句真题分析(2004年4月)若以下选项中的变量已经正确定义,则正确的赋值语句是——A、x1=26.8%3;B、1+2=x2;C、x3=0x12;D、x4=1+2=3;CCompanyLogo格式:putchar(c)参数:c为字符常量、变量或表达式功能:把字符c输出到显示器上返值:正常,为显示的代码值;出错,为EOF(-1)字符输出函数Top14:数据的输出CompanyLogo#include<stdio.h>main(){intc;chara;c=65;a='B';

putchar(c);putchar('\n');putchar(a);}运行结果:AB例Top14:数据的输出CompanyLogo格式:printf(“格式控制串”,输出表)功能:按指定格式向显示器输出数据返值:正常,返回输出字节数;出错,返回EOF(-1)格式输出函数输出表:要输出的数据(可以没有,多个时以“,”分隔)格式控制串:包含两种信息格式说明:%[修饰符]格式字符

,用于指定输出格式普通字符或转义序列:原样输出格式字符Top14:数据的输出CompanyLogoTop14:数据的输出d,ix,Xoucse,Efg%%格式字符:十六进制无符号整数不带符号十进制整数十进制整数指数形式浮点小数单一字符字符串八进制无符号整数小数形式浮点小数e和f中较短一种百分号本身inta=567;printf(“%d”,a);inta=255;printf(“%x”,a);inta=65;printf(“%o”,a);inta=567;printf(“%u”,a);chara=65;printf(“%c”,a);printf(“%s”,“ABC”);floata=567.789;printf(“%e”,a);floata=567.789;printf(“%f”,a);floata=567.789;printf(“%g”,a);printf(“%%”);567ff101567AABC5.677890e+02567.789000567.789%说明: 格式字符要用小写格式字符与输出项个数应相同,按先后顺序一一对应输出转换:格式字符与输出项类型不一致,自动按指定格式输出CompanyLogo附加格式说明符(修饰符).n对实数,指定小数点后位数(四舍五入)对字符串,指定实际输出位数修饰符功能m输出数据域宽,数据长度<m,左补空格;否则按实际输出输出数据在域内左对齐(缺省右对齐)-指定在有符号数的正数前显示正号(+)+输出数值时指定左面不使用的空位置自动填00在八进制和十六进制数前显示前导0,0x#在d,o,x,u前,指定输出精度为long型在e,f,g前,指定输出精度为double型lTop14:数据的输出CompanyLogoTop14:数据的输出考点格式字符、长度修饰符和附加格式字符以及它们各自的功能。在格式控制字符串中,格式说明与输出项从左到右在类型上必须一一对应匹配。在格式控制串中,格式说明与输出项的个数应相同,若格式说明明少于输出项,则多余的输出项不输出,相反,对于多余的格式将输出不定值。在格式控制串中,可以包含任意的合法字符(包括转义字符)。CompanyLogoTop14:数据的输出真题分析(2013年3月)ACompanyLogoTop14:数据的输出真题分析(2006年4月)若变量a,b已定义为int

类型并赋值21和55,要求用printf

函数以a=21,b=55的形式输出,请写出完整的的输出语句______printf(“a=%d,b=%d”,a,b);CompanyLogoTop14:数据的输出真题分析(2004年9月)有以下程序,程序运行后的输出结果是——main(){intm=0256,n=256;printf(“%o%o\n”,m,n);}A、0256 0400 B、0256 256C、256 400 D、400400CCompanyLogoTop14:数据的输出真题分析(2004年4月)有以下程序,执行后的结果是——main(){intx=102,y=012;printf(“%2d,%2d\n”,x,y);}A、10,01 B、02,12C、102,10 D、02,10C格式控制符%2d中的2表示输出数据的最小宽度为2,如果指定的宽度不够,并不影响数据的完整输出。CompanyLogo格式:getchar()功能:从键盘读一字符返值:正常,返回读取的代码值;出错,返回EOF(-1)字符输入函数例#include<stdio.h>main(){intc;

printf("Enteracharacter:");c=getchar();

printf("%c--->hex%x\n",c,c);}运行结果:Enteracharacter:AA--->hex41Top15数据输入CompanyLogo格式输入函数格式:scanf(“格式控制串”,地址表)功能:按指定格式从键盘读入数据,存入地址表指定的存储单元中,并按回车键结束返值:正常,返回输入数据个数地址表:变量的地址,常用取地址运算符&格式字符:d,i,o,x,u,c,s,f,e例scanf(“%d”,&a);

输入:10

则a=10例scanf(“%x”,&a);

输入:11

则a=17Top15数据输入CompanyLogo附加格式说明符(修饰符)l修饰符功能hm*用于d,o,x前,指定输入为short型整数用于d,o,x前,指定输入为long型整数用于e,f前,指定输入为double型实数指定输入数据宽度,遇空格或不可转换字符则结束抑制符,指定输入项读入后不赋给变量例scanf(“%4d%2d%2d”,&yy,&mm,&dd);

输入19991015

则1999yy,10mm,15dd例scanf(“%3d%*4d%f”,&k,&f);

输入12345678765.43

则123k,8765.43f例scanf(“%2d%*3d%2d”,&a,&b);

输入1234567

则12a,67b例scanf(“%3c%2c”,&c1,&c2);

输入abcde

则‘a’c1,‘d’c2Top15数据输入CompanyLogo输入分隔符的指定一般以空格、TAB或回车键作为分隔符其它字符做分隔符:格式串中两个格式符间字符例scanf(“%d%o%x”,&a,&b,&c);

printf(“a=%d,b=%d,c=%d\n”,a,b,c);

输入123123123

输出a=123,b=83,c=291例scanf(“%d:%d:%d”,&h,&m,&s);

输入12:30:45则12h,30m,45s例scanf(“%d,%d”,&a,&b)

输入3,4

则3a,4b例scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);

输入a=12,b=24,c=36Top15数据输入CompanyLogo说明:用“%c”格式符时,空格和转义字符作为有效字符输入如scanf(“%c%c%c”,&c1,&c2,&c3);

若输入abc

则ac1,

c2,bc3输入数据时,遇以下情况认为该数据结束:遇空格、TAB、或回车遇宽度结束遇非法输入如scanf(“%d%c%f”,&a,&b,&c);

若输入1234a123o.26

则1234a,‘a’b,123c输入函数留下的“垃圾”:例intx;charch;

scanf(“%d”,&x);

ch=getchar();

printf(“x=%d,ch=%d\n”,x,ch);执行:123输出:x=123,ch=10例intx;charch;

scanf(“%d”,&x);

scanf(“%c”,&ch);

printf(“x=%d,ch=%d\n”,x,ch);执行:123输出:x=123,ch=10解决方法:(1)用getchar()清除(2)用函数fflush(stdin)清除全部剩余内容(3)用格式串中空格或“%*c”来“吃掉”例intx;charch;

scanf(“%d”,&x);

scanf(“%c”,&ch);或scanf(“%*c%c”,&ch);

Top15数据输入CompanyLogoTop15数据输入考点熟知各种格式字符的功能scanf函数中的输入项必须是“地址量”输入数据时,各个数据间可以用空格符、回车符或Tab键作为分隔符除了3中所述分隔符外,还可以自己指定其它字符作为分隔符,但在输入时应输入与这些字符相同的字符。输入数据时,遇到以下情况时该数据被认为表示结束:遇到空格、Tab键或回车符按指定的宽度结束,如”%4d“,只取4列遇到非法输入。CompanyLogoTop15数据输入真题分析(2013年3月)DCompanyLogoTop15数据输入真题分析(2013年3月)ACompanyLogoTop15数据输入真题分析(2005年4月)下列程序运行时若从键盘输入:1020

30<CR>。输出结果是——#include<stdio.h>main(){inti=0,j=0,k=0;scanf("%d%*d%d",&i,&j,&k);printf("%d%d%d\n",i,j,k);}10300CompanyLogoTop16复合语句和空语句C语句控制语句函数调用语句表达式语句空语句9种复合语句例:printf(“cworld!”);例:a=23;b=a+6;只有一个分号;用{}把一些语句括起来构成CompanyLogo复合语句1用{…}括起来的一组语句一般形式:

{[数据说明部分;]

执行语句部分;

}说明:“}”后不加分号语法上和单一语句相同复合语句可嵌套main(){

int

a,b=4;a=3;

printf(“%d”,a);

for(i=1;i<5;i++){b=b+i;printf(“%d\n”,b);}}Top16复合语句和空语句CompanyLogo空语句2main(){;}Top16复合语句和空语句CompanyLogoTop16复合语句和空语句真题分析(2005年9月)以下叙述中错误的是——A、C语句必须以分号结束B、复合语句在语法上被看作一条语句C、空语句出现在任何位置都不会影响程序运行D、赋值表达式末尾加上分号就构成赋值语句CC程序中所有语句都必须以“;”作为结束,如果只有一个分号,也当成一条语句,称为“空语句”,执行时不产生任何动作。程序设计中有时候需要加一个空语句来表示存在一条语句,但随意加分号会导致逻辑上的错误,影响程序运行。CompanyLogo第4章选择结构Top17:关系运算Top19:条件表达式及其构成的选择结构Top20:几类运算符的优先级Top21:If语句Top22:含else的If语句Top23:嵌套的If语句Top24:switch语句及其与break语句构成的选择结构Top18:逻辑运算Top25:语句标号和goto语句CompanyLogo

所谓“关系运算”实际上就是“比较运算”,即将两个数据进行比较,判定两个数据是否符合给定的关系。Top17关系运算在C语言中,“等于”关系运算符是双等号“==”而不是单等号“=”(赋值运算符)。注意:<(小于)<=(小于或等于),>(大于),>=(大于或等于),==(等于),!=(不等于)1.关系运算符(6种):CompanyLogo2.优先级(2)与其它种类运算符的优先级关系关系运算符的优先级低于算术运算符但高于赋值运算符。Top17关系运算(1)在关系运算符中且前4个高于后2个。前4个优先级相同(<、<=、>、>=)后2个也相同(==、!=)CompanyLogoTop17关系运算3.关系表达式所谓关系表达式是指,用关系运算符将两个表达式连接起来,进行关系运算的式子。a>ba+b>c-d(a=3)<=(b=5)'a'>='b'(a>b)==(b>c)CompanyLogo例,假设num1=3,num2=4,num3=5,则:num1<num2<num3=1思考:任意改变num1或num2的值,会影响整个表达式的值吗?Top17关系运算注意:由于C语言没有逻辑型数据,所以用整数“1”表示“逻辑真”,用整数“0”表示“逻辑假”。 关系表达式的值是逻辑值。CompanyLogoTop17关系运算注意:应避免对实数作相等或不等的判断.注意区分“=”与“==”例1.0/3.0*3.0==1.0Xfabs(1.0/3.0*3.0-1.0)<1e-6√CompanyLogoTop17关系运算考点6个关系运算符(结合方向是自左到右)>>=<<==!=在C语言中,关系表达式的结果值为1或0。当关系表达式成立时,其结果值为1当关系表达式不成立时,其值为0。优先级低优先级高CompanyLogoTop17关系运算真题分析(2013年3月)DCompanyLogoTop17关系运算真题分析(2006年4月)在以下给出的表达式中,与while(E)中的E不等价的表达式是——A、(!E==0)B、(E>0)||(E<0)C、(E==0)D、(E!=0)C

while(E)中的E表示条件成立,即E不等于0CompanyLogo逻辑运算符种类:!&&||逻辑运算真值表Top18逻辑运算ab!a!ba&&ba||b真假真假假假真真真假假假假假真真假假真真真假真真关系表达式只能描述单一条件,例如“x>=0”如何描述“x>=0”、同时“x<10”CompanyLogo

短路特性:逻辑表达式求解时,并非所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符a&&b&&c例//只在a为真时,才判别b的值;只在a、b都为真时,才判别c的值a||b||c//只在a为假时,才判别b的值;只在a、b都为假时,才判别c的值例a=1;b=2;c=3;d=4;m=1;n=1;(m=a>b)&&(n=c>d)练习m=?n=?m=0n=1Top18逻辑运算CompanyLogoTop18逻辑运算真题分析(2013年3月)ACompanyLogoTop18逻辑运算真题分析(2006年9月)以下关于逻辑运算符两侧运算对象的叙述中正确的是——A、只能是整数0或1B、只能是整数0或非0整数C、可以是结构体类型的数据D、可以是任意合法的表达式DCompanyLogoTop18逻辑运算真题分析(2006年4月)以下程序用于判断a、b、c能否构成三角形,若能,则输出YES,否则输出NO。当给a、b、c输入三角形三条边长时,确定a、b、c能构成三角形的条件是需要同时满足三个条件:a+b>c,a+c>b,b+c>a。请填空。main(){floata,b,c;scanf(“%f%f%f”,&a,&b,&c);if(_______) printf(“YES\n”);else printf(“NO\n”);}(a+b>c)&&(a+c>b)&&(b+c>a)CompanyLogoTop18逻辑运算真题分析(2005年9月)设有定义:inta=2,b=3,c=4;则以下选项中值为0的表达式是——A、(!a==1)&&(!b==0)B、(a>b)&&!c||1C、a&&bD、a||(b+b)&&(c-a)A条件运算符是C语言提供的唯一的三目运算符1、条件表达式的形式:表达式1?表达式2:表达式3例:若x=50,则y=x>10?100:200的值为多少?例:若x=-5,则abs=x<0?(-1)*x:xTop19条件表达式及其构成的选择结构?:1005CompanyLogoTop19条件表达式及其构成的选择结构3、条件表达式的嵌套:例如:x>0?1:(x<0?-1:0)条件运算符是C语言提供的唯一的三目运算符?:高于赋值运算符,但是低于关系运算符和算术运算符2、条件运算符的优先级(c>=‘a’&&c<=‘z’)?c-’a’+’A’:cprintf(“a+|b|=%d\n”,b>0?a+b:a-b);求a+|b|将小写字母转换为大写字母(x%2==1)?1:0判断x是否为奇数CompanyLogoTop19条件表达式及其构成的选择结构真题分析(2006年9月)以下程序运行后的输出结果是——main(){int

x,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);}x=a=1a<b成立a<c成立x=1d>x成立x=11CompanyLogoTop20几类运算符的优先级考点 逻辑运算符与条件运算符、赋值运算符、关系运算符、算术运算符的优先级为:逻辑非(!)算术运算关系运算逻辑与(&&)逻辑或(||)条件运算符赋值运算高低CompanyLogo真题分析(2005年4月)有以下程序,程序运行后的输出结果是——A、123B、234C、223D、233main(){inti=1,j=2,k=3;if(i++==1&&(++j==3||k++==3))printf(“%d%d%d\n”,i,j,k)}DTop20几类运算符的优先级CompanyLogoTop21If语句if语句(条件选择语句)exprstatement非0=0例:if(x>y)

printf(“%d”,x);if(expression)statement格式:执行过程:CompanyLogoTop21If语句说明:if后面的表达式类型任意如:if(a==b&&x==y)printf(“a=b,x=y”);if(3)printf(“OK”);

if(‘a’)printf(“%d”,’a’);if(x)if(x!=0)if(!x)

if(x==0)CompanyLogoTop21If语句真题分析(2013年3月)DCompanyLogoTop21If语句真题分析(2013年3月)BCompanyLogoTop21If语句真题分析(2005年9月)当把以下四个表达式用作if语句的控制表达式时,有一个选项与其他三个选项含义不同,这个选项是——A、k%2B、k%2==1C、(k%2)!=0D、!k%2==1DCompanyLogoif(expression)

statement1else

statement2exprstatement1statement2非0=0例:if(x>y)max=x;elsemax=y;例if(a>b)

printf(“%d”,a);else

printf(“%d”,b);printf(“%d”,a>b?a:b);Top22含else的IF语句格式一:执行过程:CompanyLogoTop22含else的IF语句格式二if(expr1)statement1elseif(expr2)statement2elseif(expr3)statement3…...[elsestatementn]执行过程:例:expr1statemnt1非0=0expr2expr3statemntnstatemnt3statemnt2非0非0=0=0if(salary>1000)index=0.4;elseif(salary>800)index=0.3;elseif(salary>600)index=0.2;elseif(salary>400)index=0.1;elseindex=0;CompanyLogoTop22含else的IF语句例考虑下面程序的输出结果:#include<stdio.h>main(){int

x,y;

scanf(“%d,%d”,&x,&y);

if(x>y)x=y;y=x;elsex++;y++;

printf(“%d,%d\n”,x,y);}CompileError!说明:语句可以是复合语句CompanyLogoTop22含else的IF语句真题分析(2013年3月)CCompanyLogoTop22含else的IF语句真题分析(2013年3月)DCompanyLogoTop22含else的IF语句真题分析(2007年4月)设变量x和y均已经正确定义并赋值,以下if语句中,在编译时将产生错误信息的是——A、if(x++);B、if(x>0&y!=0);C、if(x>y) x— else y++;D、if(y<0) {;} else x++;CCompanyLogoTop22含else的IF语句真题分析(2005年9月)以下程序运行后的输出结果是——main(){inta=1,b=2,c=3;if(c=a)printf(“%d\n”,c);else printf(“%d\n”,b);}1CompanyLogoif--else配对原则:缺省{}时,else总是和它上面离它最近的未配对的if配对if(……)if(……)if(……)else…...else…...else…...Top23If语句的嵌套考点:CompanyLogo例:if(a==b)

if(b==c)

printf(“a==b==c”);else

printf(“a!=b”);修改:if(a==b)

{

if(b==c)

printf(“a==b==c”);

}else

printf(“a!=b”);实现if~else正确配对方法:加{}Top23If语句的嵌套CompanyLogoTop23If语句的嵌套真题分析(2006年9月)在嵌套使用if语句时,C语言规定else总是——A、和之前与其具有相同缩进位置的if配对B、和之前与其最近的if配对C、和之前与其最近不带else的if配对D、和之前的第一个if配对CCompanyLogoTop23If语句的嵌套真题分析(2005年9月)设变量a,b,c,d和y都已经正确定义并已经赋值。若有以下if语句,该语句所表示的含义是——if(a<b)if(c==d)y=0;elsey=1;ABDCC

if(c==d)y=0;CompanyLogoTop24switch--break语句构成的选择结构考点switch语句的一般形式switch(表达式){caseE1:

语句组1;

break;caseE2:

语句组2;

break;…….caseEn:

语句组n;

break;[default:

语句组;break;]}说明①常量表达式必须是与表达式对应一致的整数、字符或枚举常量。各case语句标号的值应该互不相同。②switch后的表达式通常为字符型变量,也允许是枚举型变量,其结果为相应的整数、字符或枚举常量。③break语句不是一

温馨提示

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

评论

0/150

提交评论