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

下载本文档

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

文档简介

C语言程序设计主讲:CompanyLogo教材、参考书与课时安排参考书1、全国计算机等级考试二级教程—C语言程序设计(2014年版)

教育部考试中心高等教育出版社2、二级C语言高频考题导航南开大学出版社3、C语言真题分析与实战训练清华大学出版社课时安排授课:34学时CompanyLogo课程要求课前请做好预习,课后复习记笔记认真、独立、按时完成作业重视上机实践,有效利用宝贵的上机时间CompanyLogo考试大纲◆基本要求

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

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

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

4.在VisualC++6.0集成环境下,能够编写简单的C程序,并具有基本的纠错和调试程序的能力CompanyLogo目录1.程序设计基本概念2.C程序设计的初步知识3.顺序结构4.选择结构5.循环结构6.字符型数据7.函数8.地址和指针CompanyLogo目录9.数组10.字符串11.对函数的进一步讨论12.用户标识符的作用域和存储类13.编译预处理和动态存储分配14.结构体、共用体和用户定义类型15.位运算16.文件CompanyLogo第1章程序设计基本概念Top1:各种“程序”的概念Top3:结构化程序设计Top2:算法的特性C程序的上机步骤CompanyLogo什么是程序??Top1:各种“程序”的概念人们把需要用计算机完成的工作写成一条条指令,并把这些指令存储在内存中,当人们给出执行命令后,计算机就按指令顺序自动进行操作。这些可以连续执行的一条条指令的集合称为“程序”。CompanyLogo机器语言汇编语言高级语言面向过程面向对象CPU指令系统,由0、1序列构成的指令码组成如:10000000加

10010000减用助记符号描述的指令系统如ADDA,B面向机器的语言程序设计是数据被加工的过程客观世界可以分类,对象是类的实例对象是数据和方法的封装对象间通过发送和接受消息发生联系程序设计关键是定义类,并由类派生对象程序设计语言的发展Top1:各种“程序”的概念CompanyLogo程序的“转换”机器语言汇编语言高级语言C语言编译汇编源程序目标程序.OBJTop1:各种“程序”的概念可执行程序.exe链接二进制语言CompanyLogoTop1:各种“程序”的概念真题分析(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:各种“程序”的概念真题分析(2008年9月)计算机能直接执行的程序是——A、源程序B、目标程序C、汇编程序D、可执行程序DCompanyLogoTop1:各种“程序”的概念真题分析(2007年9月)C语言源程序的后缀是——A、.exeB、.cC、.objD、.cpBCompanyLogoTop43函数的声明真题分析(2006年9月)以下说明中正确的是——A、C语言比其它语言高级B、C语言可以不用编译就能被计算机执行C、C语言以接近英语和数学言语作为语言的表达式D、C语言出现最晚,具有其它语言的一切优点CCompanyLogoTop1:各种“程序”的概念练习题1、以下叙述中正确的是——A、C语言的源程序不必通过编译就可以直接运行B、C语言中的每条可执行语句最终都将被转换成二进制的机器指令C、C程序经编译形成的二进制代码可直接执行D、C语言中的函数不可以单独进行编译BCompanyLogoTop2:算法的特性什么是算法?算法是指为解决某个特定问题而采取的确定且有限的步骤。?CompanyLogo算法应具有以下五个特点:1有穷性:一个算法包含的步骤是有限的。即在若干个步骤后结束,并且每一步都在合理时间内完成2确定性:算法中每一条指令必须有确切的含义,不能有二义性,对于相同的输入必能得出相同的执行结果。3可行性:算法中指定的操作,都可以通过已经验证可以实现的基本运算执行有限次后实现。5有一个或多个输出:算法的目的是为了求解。这些“解”只有通过输出得到。4有零个或多个输入:算法都是用来处理数据对象的,通常情况下这些数据对象需要通过输入来得到。Top2:算法的特性如何把大象关进冰箱?CompanyLogo如何评价算法??时间复杂度1空间复杂度2对算法的要求有:必须是正确的,必须能高效率执行,即占用内存空间少,所需运行时间短。于是,对算法的评价可以从两个方面进行:Top2:算法的特性CompanyLogoTop2:算法的特性真题分析(2007年4月)算法中,对需要执行的每一步骤操作,必须给出清楚、严格的规定,这属于算法的是——A、正当性B、可行性C、确定性D、有穷性CCompanyLogoTop2:算法的特性真题分析(2006年4月)以下叙述中错误的是——A、算法正确的程序最终一定会结束B、算法正确的程序可以有零个输出C、算法正确的程序可以有零个输入D、算法正确的程序对于相同的输入一定有相同的结果B算法必须有一个或多个输出CompanyLogoTop2:算法的特性练习题1、一个算法应该具有“确定性”等5个特性,下面对另外4个特性的描述中错误的是——A、有零个或多个输入B、有零个或多个输出C、有穷性D、可行性BCompanyLogoTop3:结构化程序设计和模块化结构执行时按顺序逐条执行,没有分支,没有转移。可由赋值语句、输入/输出语句等构成。顺序结构根据不同的条件执行不同分支中的语句。可由if语句、switch语句等构成。选择结构根据各自的条件使一组语句重复执行多次或一次也不执行。可由for语句、while语句等构成。循环结构AB条件?AB成立不成立条件?A成立不成立A条件?成立不成立图1.3循环结构流程图CompanyLogo什么是模块化结构??将复杂任务分解成若干个子任务,每个子任务又可分解成多个小子任务,每个小子任务只需完成一个简单的功能。在程序设计时用一个小模块实现这些功能。称这样的程序设计方法为“模块化”方法,由一个个功能模块构成的程序结构为模块化结构。Top3:结构化程序设计和模块化结构CompanyLogoTop3:结构化程序设计和模块化结构真题分析(2007年4月)以下叙述中错误的是——A、C语言是一种结构化的程序设计语言B、结构化程序由顺序、分支、循环三种基本结构组成C、使用三种基本结构构成的程序只能解决简单问题D、结构化程序设计提倡模块化的设计方法CCompanyLogoTop3:结构化程序设计和模块化结构练习题1、C语言中用于结构化程序设计的三种基本结构是——A、顺序结构、选择结构、循环结构B、if、switch、breakC、for、while、do-whileD、if、for、continueACompanyLogo开始结束编辑编译连接运行运行结果可执行文件(.exe)源程序文件(.c)目标文件(.obj)图

C程序上机调试过程此两种代码不能执行C程序的上机步骤CompanyLogo课后习题1.在VC6.0环境中和RUN命令运行一个C程序时,这时所运行的程序的后缀是__。2.C语言源程序文件名的后缀是__;经过编译后,生成文件的后缀是__;经过链接后,生成文件的后缀是__。3.结构化程序由__、__、__三种基本结构组成。.exe.C.OBJ.EXE顺序选择循环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例2.2/*example1.1calculatethesumofaandb*/#include<stdio.h>/*Thisisthemainprogram*/main(){inta,b,sum;

a=10;b=24;sum=add(a,b);

printf(”sum=%d\n",sum);}/*Thisfunctioncalculatesthesumofxandy*/int

add(int

x,inty){intz;z=x+y;return(z);}运行结果:sum=34函数语句预处理命令注释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考点命令行要以#开头,后面不要分号,文件名用“”或<>括起来1main是主函数名,后面的括号不能省略2函数体要用{}括起来3每一条语句都要用;结尾,分号是C语句的一部分4注释必须放在/**/之间,且之间不允许有空格5Top4:C语言程序的构成和格式CompanyLogo真题分析(2007年4月)对于一个正常运行的C程序,以下叙述中正确的是——A、程序的执行总是从main函数开始,在main函数结束B、程序的执行总是从程序的第一个函数开始,在main函数中结束C、程序的执行总是从main函数开始,在程序的最后一个函数中结束。D、程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束。Top4:C语言程序的构成和格式ACompanyLogoTop4:C语言程序的构成和格式真题分析(2005年9月)以下关于函数的叙述中正确的是———A、每个函数都可以被其他函数调用(包括main

函数)B、每个函数都可以被单独编译C、每个函数都可以单独运行D、在一个函数内部可以定义另一个函数BCompanyLogoTop4:C语言程序的构成和格式真题分析(2007年9月)以下叙述中正确的是——A、C语言程序将从源程序中第一个函数开始执行B、可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行C、C语言规定必须用main作为主函数名,程序将从此开始执行,在此结束D、main可作为用户标识符,用以命名任意一个函数作为主函数CCompanyLogoTop4:C语言程序的构成和格式真题分析(2008年9月)以下叙述中正确的是——A、C程序的基本组成单位是语句B、C程序中每一行只能写一条语句C、简单C语句必须以分号结束D、C语句必须在一行内写完CCompanyLogoTop4:C语言程序的构成和格式练习题1、在一个程序中,——A、main函数必须出现在所有函数之前B、main函数可以在任何地方出现C、main函数必须出现在所有函数之后D、main函数必须出现在固定位置BCompanyLogoTop5:标识符的命名规则什么是标识符??标识符是用来标识变量、符号常量、函数、数组、类型、标号以及一些具有专门含义的有效字符序列。通俗地讲,标识符就是一个名字。CompanyLogo标识分为三类:②预定义标识符③用户标识符①关键字(1)数据类型关键字12个(2)控制语句关键字12个(3)存储类型关键字4个(4)其它关键字4个一般指C语言提供的库函数名和编译预处理命令。在编程时,需要用户给一些变量、函数、数组等命名,这类由用户根据需要自定义的标识符称为用户标识符Top5:标识符的命名规则CompanyLogoC语言的关键字有:(1)数据类型关键字(12个):char,double,enum,float,int,long,short,signed,struct,union,unsigned,void(2)控制语句关键字(12个):break,case,continue,default,do,else,for,goto,if,return,switch,while(3)存储类型关键字(4个):auto,extern,register,static(4)其它关键字(4个):const,sizeof,typedef,volatileTop5:标识符的命名规则CompanyLogo预定义标识符:一般指C语言提供的库函数名和编译预处理命令。预定义标识符最好不要用来作为用户标识符使用。比如系统库函数名printf、scanf以及编译预处理命令define等。C语言允许用户把这类标识符另作它用,但是,这将使这些标识符失去原来的意义。为了编程时方便、可靠、避免误解,一般把这些标识符固定使用。预定义标识符Top5:标识符的命名规则CompanyLogo组成:只能由字母、数字、下划线组成,且第一个字母必须是字母或下划线大小写敏感不能使用关键字长度:最长32个字符(随系统不同而相异TC2.032VC中255)命名原则:见名知意不宜混淆如l与I,o与0例:判断下列标识符号合法性sumSumM.D.JohndayDate3daysstudent_name#33lotus_1_2_3chara>b_above$123M.D.John3days#33char$123a>b如何命名标识符??CompanyLogo(1)C语言标识符只能由字母(大小写均可,但区分大小写)、数字和下划线三种字符组成。考点:(3)已被C语言本身使用,不能用作变量名、常量名、函数名等。(2)第1个字符必须由字母或下划线Top5:标识符的命名规则CompanyLogo真题分析(2006年9月)下列定义变量的语句中错误的是—A、int_int;B、doubleint_;C、charFor;D、floatUS$;Top5:标识符的命名规则DCompanyLogoTop5:标识符的命名规则真题分析(2005年9月)以下叙述中错误的是——A、用户所定义的标识符允许使用关键字B、用户所定义的标识符应尽量做到“见名知意”C、用户所定义的标识符必须以字母或下划线开头D、用户定义的标识符中大、小写字母代表不同标识ACompanyLogoTop5:标识符的命名规则真题分析(2006年4月)下列不合法的用户标识符是——A、j2_KEYB、DoubleC、4dD、_8_CCompanyLogoTop5:标识符的命名规则真题分析(2007年4月)按照C语言规定的用户标识符命名规则,不能出现在标识符中的是:——A、大写字母B、连接符C、数字字符D、下划线BCompanyLogoTop5:标识符的命名规则真题分析(2007年9月)可在C程序中用做用户标识符的一组标识符是——ACompanyLogoTop5:标识符的命名规则真题分析(2008年4月)以下选项中不合法的标识符是——A、printB、FORC、&aD、_00CCompanyLogo一般用大写字母是宏定义预处理命令,不是C语句直接常量:整型常量实型常量字符常量字符串常量如#definePRICE30常量定义:程序运行时其值不能改变的量(即常数)分类:符号常量:用标识符代表常量定义格式:#define

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

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

printf("total=%d",total);}运行结果:total=300Top6:C语言基本数据类型及其定义规则CompanyLogo整型常量(整常数)三种形式:十进制整数:由数字0~9和正负号表示.如123,-456,0八进制整数:由数字0开头,后跟数字0~7表示.如0123,011十六进制整数:由0x开头,后跟0~9,a~f,A~F表示.如0x123,0Xff问题:0123=()100x123=()100Xff=()1083291255问题:0123=()100x123=()100Xff=()10Top6:C语言基本数据类型及其定义规则CompanyLogo数制基权表示数码特点10º,10¹,10²,…十进制数0~910逢十进一二进制数0~122º,2¹,2²,…逢二进一八进制数0~788º,8¹,8²,…逢八进一十六进制数0~9,A~F,a~f1616º,16¹,16²,…逢十六进一十进制:4956=410³+910²+510¹+610º二进制:1011=12³+02²+12¹+12º十六进制:81AE=816³+116²+1016¹+1416º八进制:4275=48³+28²+78¹+58ºTop6:C语言基本数据类型及其定义规则CompanyLogo各种进制之间的转换二进制、八进制、十六进制转换成十进制方法:按权相加<>Top6:C语言基本数据类型及其定义规则CompanyLogo各种进制之间的转换(整数)二进制、八进制、十六进制转换成十进制方法:按权相加十进制转换成二进制、八进制、十六进制方法:除基取余法连续除以基,从低到高记录余数,直至商为0例把十进制数59转换成二进制数5922921427232120(59)10=(111011)2110111111011余余余余余余例把十进制数159转换成八进制数1598198280(159)10=(237)8237余7余3余2例把十进制数459转换成十六进制数4591628161160(459)10=(1CB)161CB余11余12余1CompanyLogo整型常量的类型根据其值所在范围确定其数据类型在整常量后加字母l或L,认为它是longint

型常量整型常量(整常数)三种形式:十进制整数:由数字0~9和正负号表示.如123,-456,0八进制整数:由数字0开头,后跟数字0~7表示.如0123,011十六进制整数:由0x开头,后跟0~9,a~f,A~F表示.如0x123,0Xff例30000为int型65536为longint

型例12与12LTop6:C语言基本数据类型及其定义规则32767-32768

0

0120160x100X23FD0568o45ox12t-0X12只能是正数CompanyLogo整数在内存中的存储形式7654321000000000000001011111111111111111FF01FF02FF03FF04+5-11111111111111111FF05FF0665535Top6:C语言基本数据类型及其定义规则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!注意:CompanyLogo字符常量定义:用单引号括起来的单个普通字符或转义字符.

字符常量的值:该字符的ASCII码值<转义字符及其含义:转义字符含义\n\v\r\a\‘\ddd\t\b\f\\\“\xhh转义字符含义换行垂直制表回车响铃单引号3位8进制数代表的字符水平制表退格换页反斜线双引号2位16进制数代表的字符如‘\101’-----------‘A’‘\012’-----------’\n’‘\376’-----------’’‘\x61’-----------’a’‘\60’-----------’0’‘\483’----------(

)例:‘A’-------’\101’-------’\x41’--------65如‘A’——65,‘a’——97,‘0’——48,‘\n’——10如‘a’‘A’‘?’‘\n’‘\101’转义字符:反斜线后面跟一个字符或一个代码值表示例转义字符举例

main(){printf("\101\x42C\n");

printf("Isay:\"Howareyou?\"\n");

printf("\\CProgram\\\n");

printf("Turbo\'C\'");}运行结果:(屏幕显示)ABCIsay:”Howareyou?”\CProgram\Turbo‘C’Top6:C语言基本数据类型及其定义规则60aaa字符常量与字符串常量不同字符串常量定义:用双引号(“”)括起来的字符序列存储:每个字符串尾自动加一个‘\0’作为字符串结束标志hello\0例字符串“hello”在内存中aa\0例‘a’“a”例空串“”\0例:charch;

ch=“A”;例:charch;

ch=‘A’;Top6:C语言基本数据类型及其定义规则CompanyLogo编译程序根据变量定义为其分配指定字节的内存单元…...地址inta=1,b=-3,c;abc2字节2字节2字节地址地址…...内存1-3

随机数变量概念:其值可以改变的量变量的定义变量初始化:定义时赋初值例:

inta,b,c;floatdata;例:

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

intx=1,y=1,z=1;

intx=y=z=1;变量的使用:先定义,后使用例1

intstudent;

stadent=19;//Undefinedsymbol‘statent’infunctionmain

例2floata,b,c;c=a%b;//Illegaluseoffloatingpointinfunctionmain

变量定义位置:一般放在函数开头main(){inta,b=2;floatdata;a=1;data=(a+b)*1.2;

printf(“data=%f\n”,data);}变量定义可执行语句main(){inta,b=2;a=1;floatdata;data=(a+b)*1.2;

printf(“data=%f\n”,data);}Top6:C语言基本数据类型及其定义规则CompanyLogo整型变量占字节数随机器不同而不同,一般占一个机器字short≤int≤long可用sizeof(类型标识符)测量实型变量float:占4字节,提供7位有效数字double:占8字节,提供15~16位有效数字字符型变量字符变量存放字符ASCII码char与int数据间可进行算术运算例floata;a=111111.111;/*a=111111.1*/doubleb;b=111111.111;/*b=111111.111*/例a=‘D’;/*a=68;*/x=‘A’+5;/*x=65+5;*/s=‘!’+‘G’/*s=33+71;*/没有字符串变量,用字符数组存放Top6:C语言基本数据类型及其定义规则CompanyLogoTop6:C语言基本数据类型及其定义规则真题分析(2007年4月)有以下程序,其中%u表示按无符号整数输出,程序运行后的输出结果是:#include“stdio.h”main(){unsignedintx=oxFFFF;/*x的初值为16进制数*/printf(“%u\n”,x);}-1A.65535B.32767C.D.0xFFFFBCompanyLogoTop6:C语言基本数据类型及其定义规则真题分析(2006年4月)下列不合法的数值常量是——A、011B、1e1C、8.0E0.5D、0xabcdCCompanyLogoTop6:C语言基本数据类型及其定义规则真题分析(2005年9月)以下程序运行后的输出结果是——

main(){intx=0210;printf("%X\n",x);}0210010八进制数001000000880二进制数88CompanyLogoTop6:C语言基本数据类型及其定义规则练习题1、以下选项中,不能作为合法常量的是——A、1.234e04B、1.234e0.4C、1.234e+4D、1.234e0BCompanyLogoTop6:C语言基本数据类型及其定义规则练习题2、以下选项中,可作为C语言合法整数的是——A、1011BB、0386C、0xffaD、x2a2CCompanyLogo隐式转换什么情况下发生运算转换-----不同类型数据混合运算时赋值转换----把一个值赋给与其类型不同的变量时输出转换------输出时转换成指定的输出格式函数调用转换------实参与形参类型不一致时转换运算转换规则:不同类型数据运算时先自动转换成同一类型Top7:基本数据类型间的转换CompanyLogodoublefloatlongunsignedintchar,short低高说明:必定的转换运算对象类型不同时转换例charch;

inti;floatf;doubled;ch/i+f*d-(f+i)intintdoubledoubledoubledoubledoubledoubleintintdoubledoubledoubledoubledoubledouble10+‘a’+i*f-d/l例inti;floatf;doubled;longl;CompanyLogo显式转换(强制转换)一般形式:(类型名)(表达式)例

(int)(x+y)(int)x+y(double)(3/2)(int)3.6说明:强制转换得到所需类型的中间变量,原变量类型不变例main(){floatx;

inti;x=3.6;i=(int)x;

printf(“x=%f,i=%d”,x,i);}结果:x=3.600000,i=3精度损失问题较高类型向较低类型转换时可能发生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或空。BCompanyLogo真题分析(2006年9月)设有定义:floatx=123.4567;,则执行下列语句printf("%f\n",(int)(x*100+0.5)/100.0);

后的输出结果是——Top7:基本数据类型间的转换(int)(x*100+0.5)/100.0(x*100+0.5)(123.4567*100+0.5)12345.67+0.512346.17int12346100.0123.46123.460000CompanyLogo真题分析(2005年9月)设有定义:intk=1,m=2;floatf=7;则下列选项中错误的表达式是————A、k=k>=kB、-k++C、k%int(f)D、k>=f>=mTop7:基本数据类型间的转换C%(求余运算符)的两边都必须是整型。f为float型,需要强制转换为int型。正确的写法为(int)f而不是int(f)CompanyLogo真题分析(2005年9月)已知字母A的ASCII码为65。以下程序运行后的输出结果为——main(){chara,b;a='A'+'5'-'3';b=a+'6'-'2';printf("%d%c\n",a,b);}Top7:基本数据类型间的转换dca='A'+'5'-'3';a=‘C’67b=a+‘6'-‘2';a=67+4G67GCompanyLogo练习题1、有以下程序,程序运行后的输出结果为——main(){unsignedinta;intb=-1;a=b;printf(“%u”,a);}A、-1 B、65535 C、32767 D、-32768Top7:基本数据类型间的转换BCompanyLogoTop7:基本数据类型间的转换1111111111111111-1整型占2个字节0000000000000000a=a=b216-1=655350CompanyLogo练习题2、以下程序运行后的输出结果是——main(){int

a,b,c;a=25;b=025;c=0x25;printf(“%d%d%d\n”,a,b,c);}Top7:基本数据类型间的转换0252*81+5*80210x252*161+5*16037252137CompanyLogoC运算符算术运算符:(+-*/%++--)关系运算符:(<<===>>=!=)逻辑运算符:(!&&||)位运算符:(<<>>~|^&)赋值运算符:(=及其扩展)条件运算符:(?:)逗号运算符:(,)指针运算符:(*&)求字节数:(sizeof)强制类型转换:(类型)分量运算符:(.->)下标运算符:([])其它:(()-)Top8:常见算术运算符的使用CompanyLogo学习运算符应注意:运算符功能与运算量关系要求运算数个数要求运算数类型运算符优先级别结合方向结果的类型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()CompanyLogo4、关于两边运算数类型不一致系统将自动进行转换,使两边一致后再进行运算。5、所有实型数的运算均以双精度方式进行,若是单精度,则在尾数部分添0,转换为双精度。Top8:常见算术运算符的使用6、算术表达式的概念(1)表达式的概念用运算符和括号将运算对象(常量、变量和函数等)连接起来的、符合C语言语法规则的式子,称为表达式。(2)算术表达式的概念表达式中的运算符都是算术运算符。例如:3+6*9、(x+y)/2-1等,都是算术表达式。CompanyLogoTop8:常见算术运算符的使用7、强制类型转换表达式转换格式为:

(要转换成的数据类型)(被转换的表达式)(double)a

等价于(double)(a))(int)(x+y) (float)5/2等价于(float)(5)/2(float)(5/2) 注意:强制转换类型得到的是一个所需类型的中间量,原表达式类型并不发生变化。例如,(double)a

只是将变量a的值转换成一个double型的中间量,其数据类型并未转换成double型。

CompanyLogoTop8:常见算术运算符的使用真题分析(2007年4月)以下选项中,当x为大于1的奇数时,数为0的表达式为——A、x%2==1B、x/2C、x%2!=0D、x%2==0D%(求余运算符)的两边都必须是整型。大于1的奇数除以2,余数必为1。表达式成立时,整个表达式逻辑值为1表达式不成立时,整个表达式逻辑值为0。CompanyLogoTop8:常见算术运算符的使用真题分析(2006年4月)下列isprime函数的功能是判断形参a是否为素数,是素数,函数返回1,否则返回0。请填空int

isprime(inta){inti;for(i=2;i<=a/2;i++)if(a%i==0)————;————;}return0return1CompanyLogoTop8:常见算术运算符的使用练习题1、设变量x为float型且已经赋值,则以下语句中能将x中的数值保留到小数点后两位,并将第三位四舍五入的是——A、x=x*100+0.5/100.0B、x=(x*100+0.5)/100.0C、x=(int)(x*100+0.5)/100.0D、x=(x/100+0.5)*100.0CCompanyLogoTop8:常见算术运算符的使用练习题2、若有语句inti=-19,j=i%4;printf(“%d\n”,j);则输出结果是——-3CompanyLogo1、算术运算符的优先级()+-

*/

%+-单目双目高低Top9:算术运算符的优先级顺序2、算术运算符和圆括号的结合性所谓结合性是指,当一个操作数两侧的运算符具有相同的优先级时,该操作数是先与左边的运算符结合,还是先与右边的运算符结合。自左至右的结合方向,称为左结合性。反之,称为右结合性。结合性是C语言的独有概念。除单目运算符、赋值运算符和条件运算符是右结合性外,其它运算符都是左结合性。例如,算术运算符的结合方向是“自左至右”,即:在执行“a–b+c”时,变量b先与减号结合,执行“a-b”;然后再执行加c的运算。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.8DCompanyLogoTop9:算术运算符的优先级顺序真题分析(2005年9月)下列不能正确计算代数式sin2(1/2)/3值的C语言表达式是____1/3*sin(1/2)*sin(1/2)A.sin(0.5)*sin(0.5)/3B.pow(sin(0.5),2)/3C.1/3.0*pow(sin(1.0/2),2)D.1/3*sin(0)*sin(0)0.0766160.000000ACompanyLogoTop9:算术运算符的优先级顺序练习题1、设有定义:floata=2,b=4,h=3;以下C语言表达式与代数式计算结果不相符的是——A、(a+b)*h/2B、(1/2)*(a+b)*hC、(a+b)*h*1/2D、h/2*(a+b)BCompanyLogo赋值运算1赋值符号“=”就是赋值运算符,它的作用是将一个表达式的值赋给一个变量。赋值运算符的一般形式为:如果表达式值的类型,与被赋值变量的类型不一致,但都是数值型或字符型时,系统自动地将表达式的值转换成被赋值变量的数据类型,然后再赋值给变量.例a=3;d=func();c=d+2;b=a;Top10:赋值表达式的求值规则变量=赋值表达式

CompanyLogo几点说明:(1)赋值运算符的优先级只高于逗号运算符,比其它的运算符优先级都低,且具有自右向左的结合性。

如:a=2+7/3(2)赋值运算符不是数学中的“等于号”,而是进行“赋予”操作。(3)表达式x=y读作“将y的值赋给变量x”而不读作”x等于y“(4)赋值运算符左边只能是变量,不能是常量或是表达式。如a+b=c就是错误的。(5)赋值运算符右边也可以是赋值表达式。如a=b=7+1,而a=7+1=b则是错误的。(6)”=“视作运算符,a=19是一个表达式,C语言规定最左边变量中所得到的新值就是赋值表达式的值。Top10:赋值表达式的求值规则CompanyLogo复合赋值表达式2复合赋值运算符是由赋值运算符之前再加一个双目运算符构成的。复合赋值运算的一般格式为:变量双目运算符=表达式└──┬──┘复合赋值运算符等价于:变量

=变量双目运算符(表达式)。当表达式为简单表达式时,表达式外的一对圆括号才可缺省,否则可能出错。例:x+=3x=x+3y*=x+6 y=y*(x+6)Top10:赋值表达式的求值规则CompanyLogo说明:结合方向:自右向左左侧必须是变量,不能是常量或表达式赋值表达式的值与变量值相等,且可嵌套赋值转换规则:使赋值号右边表达式值自动转换成其左边变量的类型例3=x-2*y;a+b=3;例

floatf;

inti;i=10;f=i;则

f=10.0例inti;i=2.56;//结果i=2;例:a=b=c=5a=(b=5)a=5+(c=6)a=(b=4)+(c=6)a=(b=10)/(c=2)//表达式值为5,a,b,c值为5//b=5;a=5//表达式值11,c=6,a=11//表达式值10,a=10,b=4,c=6//表达式值5,a=5,b=10,c=2Top10:赋值表达式的求值规则XCompanyLogo思考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:赋值表达式的求值规则CompanyLogo赋值运算中的类型转换3在C语言的赋值表达式中,赋值号右边的值先转换成与左边的变量相同的类型,然后进行赋值。注意:(1)当赋值号左边的变量为短整型,右边的值为长整型时,短整型变量只能接受长整型数据低位上的两个字节的数据,高位上的数据将丢失。也就是说,右边的值不能超过短整型的数值范围。Top10:赋值表达式的求值规则CompanyLogo例:shorta;unsignedlongb;b=98304;a=b;printf(“%d\n”,a);98304D=11000000000000000B00000000000000011000000000000000高16位低16位结果a=1000000000000000B=-32768Top10:赋值表达式的求值规则CompanyLogo(2)当赋值号左边的变量为无符号整型,右边的值为有符号整型时,则把内存中的内容原样复制。右边数据的范围不应超出左边变量可以接受的数据范围。同时要注意,这时负数将转换为正数。例:unsigneda;a=-1;printf(“%d\n”,a);1111111111111111-1的补码结果a=1111111111111111=65535Top10:赋值表达式的求值规则CompanyLogo(3)当赋值号左边的变量为有符号整型,右边的值为无符号整型时,复制的机制同上,这时,若符号位为1,将按负数处理。例:inta;unsignedb;b=1000000000000000;a=b;printf(“%d\n”,a);1000000000000000结果a=-(111111111111111+1)=-32786Top10:赋值表达式的求值规则CompanyLogoTop10:赋值表达式的求值规则真题分析(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后面必须为整数,不能是实数。BCompanyLogoTop10:赋值表达式的求值规则真题分析(2006年9月)若变量x、y已正确定义并赋值,下列符合C语言语法的表达式是——A、++x,y=x--B、x+1=yC、x=x+10=x+yD、double(x)/10A赋值表达式的左边必须是变量,不能是常量或表达式。所以B,C错误。D选项中,强制类型转换应该写成:(double)x/10CompanyLogoTop10:赋值表达式的求值规则练习题1、以下选项中,非法的表达式是——A、0<=x<100B、i=j==0C、(char)(65+3)D、x+1=x+1DCompanyLogoTop11逗号表达式的运算规则形式:表达式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=1;b=2;c=3;

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

printf(“%d,%d,%d”,(a,b,c),b,c);//a=15,表达式值60//a=15,表达式值20//赋值表达式,表达式值18,x=18//逗号表达式,表达式值18,x=3//1,2,3//3,2,3CompanyLogo例:#include<stdio.h>main(){intx,y=7;floatz=4;x=(y=y+6,y/z);

printf("x=%d\n",x);}运行结果:x=3形式:表达式1,表达式2,……表达式n结合性:从左向右优先级:所有运算符中,逗号运算符优先级最低逗号表达式的值:等于表达式n的值用途:常用于循环for语句中Top11逗号表达式的运算规则CompanyLogoTop11逗号表达式的运算规则考点逗号运算符的结合性为从左到右,先计算表达式1,最后计算表达式n,最后一个表达式的值即为该逗号表达式的值。逗号运算符在所有运算符中,优先级最低。CompanyLogoTop11逗号表达式的运算规则真题分析(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、程序运行时产生出错信息BCompanyLogoTop11逗号表达式的运算规则练习题1、有如下程序,运行该程序的输出结果是——main(){inty=3,x=3,z=1;printf(“%d%d\n”,(++x,y++),z+2);}A、34 B、42 C、43 D、33DCompanyLogoTop12自加、自减运算符自加运算符++、自减运算符--1i++(或i--)表示在使用该表达式值之后将i值加1(或减1)。++i(或--i)表示在使用该表达式值之前将i值加1(或减1)说明:(1)++和--仅适用于变量(整型和实型),不能用于常量或表达式。(2)++和--运算符的结合方向是“至右向左”。例-i++-(i++)i=3;printf(“%d,%d”,-i++,i);

//-3,4例j+++k;(j++)+k;例-i++i=3;printf(“%d,%d”,-i++,i);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例自增、自减运算符的用法与运算规则示例。main(){intx=6,y;

printf("x=%d\n",x); y=++x; /*前置运算*/

printf("y=++x:x=%d,y=%d\n",x,y);y=x--; /*后置运算*/

printf("y=x--:x=%d,y=%d\n",x,y);}程序运行结果:x=6y=++x:x=7,y=7y=x--:x=6,y=7Top12自加、自减运算符CompanyLogo考点:Top12自加、自减运算符1、自增、自减运算符只能用于变量,不能用于常量和表达式。5++、--(a+b)等都是非法的。2、自增、自减运算符和其它运算符混合使用时,其结合性为:至右向左。3、自增、自减运算符,无论作为前缀(++a,--a)还是后缀(a++,a--)运算符,对于变量本身来说自增1或自减1都具有相同的效果,但对表达式来说却有着不同的值。CompanyLogoTop12自加、自减运算符真题分析(2007年4月)设有定义:intk=0;,以下选项的四个表达式中与其他三个表达式的值不相同的是——A、k++B、k+=1C、++kD、k+1A表达式的值为0,k的值为1表达式的值为1,k的值为1表达式的值为1,k的值为1表达式的值为1,k的值为0CompanyLogoTop12自加、自减运算符真题分析(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,1z=1x=2y=2y=3CCompanyLogoTop12自加、自减运算符真题分析(2005年4月)下列程序的输出结果是——main(){intm=12,n=34;printf("%d%d",m++,++n);printf("%d%d\n",n++,++m);}A、12353514 B、12353513C、12343514 D、12343513表达式的值为35,n的值为35①②表达式的值为12,m的值为13③表达式的值为14m的值为14④表达式的值为35n的值为36ACompanyLogoTop12自加、自减运算符练习题1、下列关于单目运算符++、--叙述中正确的是——A、它们的运算对象可以是任何常量和变量B、它们的运算对象可以是char型变量和int型变量,但不能是float型变量C、它们的运算对象可以是int型变量,但不能是double型和float型变量D、它们的运算对象可以是char型变量,int型变量和float型变量DCompanyLogoTop12自加、自减运算符练习题2、有以下程序,程序运行后的输出结果是——main(){chara=‘a’,b;printf(“%c,”,++a);printf(“%c\n”,b=a++);}A、b,b B、a,b C、b,c D、a,c表达式的值为b,a的值为b表达式的值为cCCompanyLogo课后习题2.2以下选项中正确的实型常量是:0A.B.C.D.√3.14E1.5.8710.329×102CompanyLogo课后习题2.4以下选项中不合法的标识符是:abc.cA.B.C.D.√fileMainPRINTFCompanyLogo课后习题2.7可在C程序中作用户标识符的一组标识符是:voiddefineWORDA.B.C.D.as_b3_123IfFor-abccase2cDOSIG√CompanyLogo课后习题2.8若变量已正确定义并赋值,符合C语法的表达式是:a=a+7;A.B.C.D.a=7+b+c,a++int(12.3%4)a=a+7=c+b√CompanyLogo课后习题2.10以下说法中正确的是:在C程序中无论是整数还是实数,只要在允许的范围内都能正确无误的表示。A.B.C.D.C程序由主函数组成C程序由若干函数组成C程序只允许包含一个函数√CompanyLogo课后习题2.11合法的8进制数是:0A.B.C.D.028-077O01.0√CompanyLogo2.14若k为int型变量

温馨提示

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

评论

0/150

提交评论