全国计算机等级考试二级C语言笔试高频考点_第1页
全国计算机等级考试二级C语言笔试高频考点_第2页
全国计算机等级考试二级C语言笔试高频考点_第3页
全国计算机等级考试二级C语言笔试高频考点_第4页
全国计算机等级考试二级C语言笔试高频考点_第5页
已阅读5页,还剩802页未读 继续免费阅读

下载本文档

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

文档简介

CompanyLogo教材、参考书与课时安排参考书1、全国计算机等级考试二级教程—C语言程序设计

教育部考试中心高等教育出版社2、二级C语言高频考题导航南开大学出版社3、C语言真题分析与实战训练清华大学出版社课时安排授课:28学时往年考题讲解:4学时第一页,共807页。第一页,共807页。CompanyLogo考试大纲◆基本要求

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

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

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

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

10010000减用助记符号描述的指令系统如ADDA,B程序设计是数据被加工的过程客观世界可以分类,对象是类的实例对象是数据和方法的封装对象间通过发送和接受消息发生联系程序设计关键是定义类,并由类派生对象程序设计语言的发展Top1:各种“程序”的概念第六页,共807页。第六页,共807页。CompanyLogo程序的“转换”机器语言汇编语言高级语言C语言编译汇编源程序目标程序.OBJTop1:各种“程序”的概念可执行程序.exe链接二进制语言第七页,共807页。第七页,共807页。CompanyLogoTop1:各种“程序”的概念真题分析(2007年4月)下列叙述中错误的是______A、计算机不能直接执行用C语言编写的源程序B、C程序经编译后,生成后缀为.Obj的文件是一个二进制文件C、后缀为.Obj的文件,经连接程序生成后缀为.Exe的文件是一个二进制文件D、后缀为.Obj和.Exe的二进制文件都可以直接运行D第八页,共807页。第八页,共807页。CompanyLogoTop1:各种“程序”的概念真题分析(2006年4月)以下叙述中错误的是______A、C语言源程序经编译后生成后缀为.OBJ的目标程序B、C程序经过编译、连接步骤之后才能形成一个真正可以执行的二进制机器指令文件C、用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中D、C语言中的每条可执行语句和非执行语句最终都将转换成二进制的机器指令D只有二进制语句才最终被转换成二进制机器指令第九页,共807页。第九页,共807页。CompanyLogoTop1:各种“程序”的概念真题分析(2008年9月)计算机能直接执行的程序是____A、源程序B、目标程序C、汇编程序D、可执行程序D第十页,共807页。第十页,共807页。CompanyLogoTop1:各种“程序”的概念真题分析(2007年9月)C语言源程序的后缀是_____A、.exeB、.cC、.objD、.cpB第十一页,共807页。第十一页,共807页。CompanyLogoTop1:各种“程序”的概念真题分析(2006年9月)以下说明中正确的是_____A、C语言比其它语言高级B、C语言可以不用编译就能被计算机执行C、C语言以接近英语和数学言语作为语言的表达式D、C语言出现最晚,具有其它语言的一切优点C第十二页,共807页。第十二页,共807页。CompanyLogoTop1:各种“程序”的概念真题分析(2011年3月)计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的是_____(选择题第11题)A)C语言程序仅可以编译执行B)C语言程序仅可以解释执行C)C语言程序既可以编译执行又可以解释执行D)以上说法都不对C第十三页,共807页。第十三页,共807页。CompanyLogoTop1:各种“程序”的概念真题分析(2011年3月)以下叙述中错误的是_____(选择题第12题)A)C语言的可执行程序是由一系列机器指令构成的B)用C语言编写的源程序不能直接在计算机上运行C)通过编译得到的二进制目标程序需要连接才可以运行D)在没有安装C语言集成开发环境的机器上不能运行C源程序生成的.exe文件D第十四页,共807页。第十四页,共807页。CompanyLogoTop1:各种“程序”的概念练习题1、以下叙述中正确的是_____A、C语言的源程序不必通过编译就可以直接运行B、C语言中的每条可执行语句最终都将被转换成二进制的机器指令C、C程序经编译形成的二进制代码可直接执行D、C语言中的函数不可以单独进行编译B第十五页,共807页。第十五页,共807页。CompanyLogoTop2:算法的特性什么是算法?算法是指为解决某个特定问题而采取的确定且有限的步骤。?第十六页,共807页。第十六页,共807页。CompanyLogo算法应具有以下五个特点:1有穷性:一个算法包含的步骤是有限的。即在若干个步骤后结束,并且每一步都在合理时间内完成2确定性:算法中每一条指令必须有确切的含义,不能有二义性,对于相同的输入必能得出相同的执行结果。3可行性:算法中指定的操作,都可以通过已经验证可以实现的基本运算执行有限次后实现。5有一个或多个输出:算法的目的是为了求解。这些“解”只有通过输出得到。4有零个或多个输入:算法都是用来处理数据对象的,通常情况下这些数据对象需要通过输入来得到。Top2:算法的特性第十七页,共807页。第十七页,共807页。CompanyLogo如何评价算法??时间复杂度1空间复杂度2对算法的要求有:必须是正确的,必须能高效率执行,即占用内存空间少,所需运行时间短。于是,对算法的评价可以从两个方面进行:Top2:算法的特性第十八页,共807页。第十八页,共807页。CompanyLogoTop2:算法的特性真题分析(2007年4月)算法中,对需要执行的每一步骤操作,必须给出清楚、严格的规定,这属于算法的是_____A、正当性B、可行性C、确定性D、有穷性C第十九页,共807页。第十九页,共807页。CompanyLogoTop2:算法的特性真题分析(2006年4月)以下叙述中错误的是_____A、算法正确的程序最终一定会结束B、算法正确的程序可以有零个输出C、算法正确的程序可以有零个输入D、算法正确的程序对于相同的输入一定有相同的结果B算法必须有一个或多个输出第二十页,共807页。第二十页,共807页。CompanyLogoTop2:算法的特性练习题1、一个算法应该具有“确定性”等5个特性,下面对另外4个特性的描述中错误的是_____A、有零个或多个输入B、有零个或多个输出C、有穷性D、可行性B第二十一页,共807页。第二十一页,共807页。CompanyLogoTop3:结构化程序设计和模块化结构执行时按顺序逐条执行,没有分支,没有转移。可由赋值语句、输入/输出语句等构成。顺序结构根据不同的条件执行不同分支中的语句。可由if语句、switch语句等构成。选择结构根据各自的条件使一组语句重复执行多次或一次也不执行。可由for语句、while语句等构成。循环结构第二十二页,共807页。第二十二页,共807页。CompanyLogo什么是模块化结构??将复杂任务分解成若干个子任务,每个子任务又可分解成多个小子任务,每个小子任务只需完成一个简单的功能。在程序设计时用一个小模块实现这些功能。称这样的程序设计方法为“模块化”方法,由一个个功能模块构成的程序结构为模块化结构。Top3:结构化程序设计和模块化结构第二十三页,共807页。第二十三页,共807页。CompanyLogoTop3:结构化程序设计和模块化结构真题分析(2007年4月)以下叙述中错误的是_____A、C语言是一种结构化的程序设计语言B、结构化程序由顺序、分支、循环三种基本结构组成C、使用三种基本结构构成的程序只能解决简单问题D、结构化程序设计提倡模块化的设计方法C第二十四页,共807页。第二十四页,共807页。CompanyLogoTop3:结构化程序设计和模块化结构真题分析(2011年9月)以下选项中关于程序模块化的叙述错误的是____。(选择题12题)A)把程序分成若干相对独立的模块,便于编码和调试B)把程序分成若干相对独立、功能单一的模块,可便于重复使用这些模块C)可采用自底向上、逐步细化的设计方法把若干独立模块组装成所要求的程序D)可采用自顶向下、逐步细化的设计方法把若干独立模块组装成所要求的程序C第二十五页,共807页。第二十五页,共807页。CompanyLogo开始结束编辑编译连接运行运行结果可执行文件(.exe)源程序文件(.c)目标文件(.obj)图C程序上机调试过程此两种代码不能执行C程序的上机步骤第二十六页,共807页。第二十六页,共807页。CompanyLogo第2章C程序设计的初步知识Top4:C程序的结构和格式Top5:标识符的命名规则Top6:C语言基本数据类型及其定义规则Top7:基本类型数据的相互转换Top8:常见算术运算符的使用Top9:算术运算符的优先级顺序Top12:自加自减运算符Top10:赋值表达式的求值规则Top11:逗号表达式的求值规则第二十七页,共807页。第二十七页,共807页。CompanyLogo例2.1第一个程序Hello,World!/*example1.1ThefirstCProgram*/#include<stdio.h>main(){printf(“Hello,World!”);}注释编译预处理函数语句输出:Hello,World!Top4:C语言程序的构成和格式第二十八页,共807页。第二十八页,共807页。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*/intadd(intx,inty){intz;z=x+y;return(z);}运行结果:sum=34函数语句预处理命令注释第二十九页,共807页。第二十九页,共807页。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);}优秀程序员的素质之一:使用TAB缩进{}对齐有足够的注释有合适的空行Top4:C语言程序的构成和格式第三十页,共807页。第三十页,共807页。CompanyLogo结构特点函数与主函数程序由一个或多个函数组成必须有且只能有一个主函数main()程序执行从main开始,在main中结束,其它函数通过嵌套调用得以执行。程序语句C程序由语句组成用“;”作为语句终止符注释/**/为注释,不能嵌套不产生编译代码例:/*Thisisthemain/*ofexample1.1*/*/非法编译预处理命令Top4:C语言程序的构成和格式例:#include“stdio.h”命令行,不是C语句第三十一页,共807页。第三十一页,共807页。CompanyLogo真题分析(2011年9月)以上叙述中错误的是____(选择题11题)。A)C语言编写的函数源程序,其文件名后缀可以是CB)C语言编写的函数都可以作为一个独立的源程序文件C)C语言编写的每个函数都可以进行独立的编译并执行D)一个C语言程序只能有一个主函数Top4:C语言程序的构成和格式C第三十二页,共807页。第三十二页,共807页。CompanyLogo真题分析(2007年4月)对于一个正常运行的C程序,以下叙述中正确的是_____A、程序的执行总是从main函数开始,在main函数结束B、程序的执行总是从程序的第一个函数开始,在main函数中结束C、程序的执行总是从main函数开始,在程序的最后一个函数中结束。D、程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束。Top4:C语言程序的构成和格式A第三十三页,共807页。第三十三页,共807页。CompanyLogoTop4:C语言程序的构成和格式真题分析(2005年9月)以下关于函数的叙述中正确的是_____A、每个函数都可以被其他函数调用(包括main函数)B、每个函数都可以被单独编译C、每个函数都可以单独运行D、在一个函数内部可以定义另一个函数B第三十四页,共807页。第三十四页,共807页。CompanyLogoTop4:C语言程序的构成和格式真题分析(2007年9月)以下叙述中正确的是_____A、C语言程序将从源程序中第一个函数开始执行B、可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行C、C语言规定必须用main作为主函数名,程序将从此开始执行,在此结束D、main可作为用户标识符,用以命名任意一个函数作为主函数C第三十五页,共807页。第三十五页,共807页。CompanyLogoTop4:C语言程序的构成和格式真题分析(2008年9月)以下叙述中正确的是_____A、C程序的基本组成单位是语句B、C程序中每一行只能写一条语句C、简单C语句必须以分号结束D、C语句必须在一行内写完C第三十六页,共807页。第三十六页,共807页。CompanyLogoTop4:C语言程序的构成和格式练习题1、在一个程序中,_____A、main函数必须出现在所有函数之前B、main函数可以在任何地方出现C、main函数必须出现在所有函数之后D、main函数必须出现在固定位置B第三十七页,共807页。第三十七页,共807页。CompanyLogoTop5:标识符的命名规则什么是标识符??标识符是用来标识变量、符号常量、函数、数组、类型、标号以及一些具有专门含义的有效字符序列。通俗地讲,标识符就是一个名字。第三十八页,共807页。第三十八页,共807页。CompanyLogo标识分为三类:②预定义标识符③用户标识符①关键字(1)数据类型关键字12个(2)控制语句关键字12个(3)存储类型关键字4个(4)其它关键字4个一般指C语言提供的库函数名和编译预处理命令。在编程时,需要用户给一些变量、函数、数组等命名,这类由用户根据需要自定义的标识符称为用户标识符Top5:标识符的命名规则第三十九页,共807页。第三十九页,共807页。CompanyLogo组成:只能由字母、数字、下划线组成,且第一个字母必须是字母或下划线大小写敏感不能使用关键字长度:最长32个字符命名原则:见名知意不宜混淆如l与I,o与0例:判断下列标识符号合法性sumSumM.D.JohndayDate3daysstudent_name#33lotus_1_2_3chara>b_above$1233days#33char$123a>b如何命名标识符??第四十页,共807页。第四十页,共807页。CompanyLogo真题分析(2006年9月)下列定义变量的语句中错误的是_____A、int_int;B、doubleint_;C、charFor;D、floatUS$;Top5:标识符的命名规则D第四十一页,共807页。第四十一页,共807页。CompanyLogoTop5:标识符的命名规则真题分析(2005年9月)以下叙述中错误的是_____A、用户所定义的标识符允许使用关键字B、用户所定义的标识符应尽量做到“见名知意”C、用户所定义的标识符必须以字母或下划线开头D、用户定义的标识符中大、小写字母代表不同标识A第四十二页,共807页。第四十二页,共807页。CompanyLogoTop5:标识符的命名规则真题分析(2006年4月)下列不合法的用户标识符是____A、j2_KEYB、DoubleC、4dD、_8_C第四十三页,共807页。第四十三页,共807页。CompanyLogoTop5:标识符的命名规则真题分析(2007年4月)按照C语言规定的用户标识符命名规则,不能出现在标识符中的是:_____A、大写字母B、连接符C、数字字符D、下划线B第四十四页,共807页。第四十四页,共807页。CompanyLogoTop5:标识符的命名规则真题分析(2007年9月)可在C程序中用做用户标识符的一组标识符是_____A第四十五页,共807页。第四十五页,共807页。CompanyLogoTop5:标识符的命名规则真题分析(2008年4月)以下选项中不合法的标识符是_____A、printB、FORC、&aD、_00C第四十六页,共807页。第四十六页,共807页。Top5:标识符的命名规则真题分析(2009年4月)以下选项中合法的标识符是____A)1_1B)1-1C)_11D)1__CompanyLogoC第四十七页,共807页。第四十七页,共807页。CompanyLogo一般用大写字母是宏定义预处理命令,不是C语句直接常量:整型常量实型常量字符常量字符串常量如#definePRICE30常量定义:程序运行时其值不能改变的量(即常数)分类:符号常量:用标识符代表常量定义格式:#define

符号常量常量>>>>例符号常量举例#definePRICE30main(){intnum,total;num=10;total=num*PRICE;printf("total=%d",total);}运行结果:total=300Top6:C语言基本数据类型及其定义规则第四十八页,共807页。第四十八页,共807页。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语言基本数据类型及其定义规则第四十九页,共807页。第四十九页,共807页。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语言基本数据类型及其定义规则第五十页,共807页。第五十页,共807页。CompanyLogo整型常量的类型根据其值所在范围确定其数据类型在整常量后加字母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只能是正数第五十一页,共807页。第五十一页,共807页。CompanyLogo整数在内存中的存储形式7654321000000000000001011111111111111111FF01FF02FF03FF04+5-11111111111111111FF05FF0665535Top6:C语言基本数据类型及其定义规则第五十二页,共807页。第五十二页,共807页。CompanyLogo实型常量(实数或浮点数)表示形式:十进制数形式:(必须有小数点)如0.123,.123,123.0,0.0,123.指数形式:(e或E之前必须有数字;指数必须为整数)如12.3e3,123E2,1.23e4,e-5,实型常量的类型默认double型在实型常量后加字母f或F,认为它是float型Top6:C语言基本数据类型及其定义规则X在内存中,实数一律是以指数形式存储的1计算机中存储整数不会出现误差,存储实型数往往存入误差。2!注意:第五十三页,共807页。第五十三页,共807页。CompanyLogo54字符常量定义:用单引号括起来的单个普通字符或转义字符.

字符常量的值:该字符的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语言基本数据类型及其定义规则第五十四页,共807页。第五十四页,共807页。CompanyLogo字符常量与字符串常量不同字符串常量定义:用双引号(“”)括起来的字符序列存储:每个字符串尾自动加一个‘\0’作为字符串结束标志hello\0例字符串“hello”在内存中aa\0例‘a’“a”例空串“”\0例:charch;ch=“A”;例:charch;ch=‘A’;Top6:C语言基本数据类型及其定义规则第五十五页,共807页。第五十五页,共807页。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;变量的使用:先定义,后使用例1intstudent;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语言基本数据类型及其定义规则第五十六页,共807页。第五十六页,共807页。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语言基本数据类型及其定义规则第五十七页,共807页。第五十七页,共807页。CompanyLogoTop6:C语言基本数据类型及其定义规则真题分析(2007年4月)有以下程序,其中%u表示按无符号整数输出,程序运行后的输出结果是:_____#include“stdio.h”main(){unsignedintx=oxFFFF;/*x的初值为16进制数*/printf(“%u\n”,x);}-1A.65535B.32767C.D.0xFFFFB第五十八页,共807页。第五十八页,共807页。CompanyLogoTop6:C语言基本数据类型及其定义规则真题分析(2006年4月)下列不合法的数值常量是_____A、011B、1e1C、D、0xabcdC第五十九页,共807页。第五十九页,共807页。CompanyLogoTop6:C语言基本数据类型及其定义规则真题分析(2005年9月)以下程序运行后的输出结果是_____

main(){intx=0210;printf("%X\n",x);}0210010八进制数001000000880二进制数88第六十页,共807页。第六十页,共807页。mpanyLogoTop6:C语言基本数据类型及其定义规则真题分析(2011年3月)以下选项中不能用作C程序合法常量的是_____(选择题13题)A)1.234B)'123'C)123D)"\x7G"B第六十一页,共807页。第六十一页,共807页。mpanyLogoTop6:C语言基本数据类型及其定义规则真题分析(2011年3月)以下选项中可用作C程序合法实数的是____(选择题14题)A).1e0C)E9D)9.12EA第六十二页,共807页。第六十二页,共807页。mpanyLogoTop6:C语言基本数据类型及其定义规则真题分析(2011年9月)以下选项中关于C语言常量的叙述错误的是___(选择题13题)A)所谓常量,是指在程序运行过程中,其值不能被改变的量B)常量分为整型常量、实型常量、字符常量和字符串常量C)常量可分为数值型常量和非数值型常量D)经常被使用的变量可以定义成常量D常量是指在程序中不变的量,既然程序中已定义为变量,则不可能再定义为常量第六十三页,共807页。第六十三页,共807页。CompanyLogoTop6:C语言基本数据类型及其定义规则练习题1、以下选项中,不能作为合法常量的是____A、1.234e04B、C、1.234e+4D、1.234e0B第六十四页,共807页。第六十四页,共807页。CompanyLogoTop6:C语言基本数据类型及其定义规则练习题2、以下选项中,可作为C语言合法整数的是_____A、1011BB、0386C、0xffaD、x2a2C第六十五页,共807页。第六十五页,共807页。CompanyLogo隐式转换什么情况下发生运算转换-----不同类型数据混合运算时赋值转换----把一个值赋给与其类型不同的变量时输出转换------输出时转换成指定的输出格式函数调用转换------实参与形参类型不一致时转换运算转换规则:不同类型数据运算时先自动转换成同一类型Top7:基本数据类型间的转换第六十六页,共807页。第六十六页,共807页。CompanyLogodoublefloatlongunsignedintchar,short低高说明:必定的转换运算对象类型不同时转换例charch;inti;floatf;doubled;ch/i+f*d-(f+i)intintdoubledoubledoubledoubledoubledoubleintintdoubledoubledoubledoubledoubledouble10+‘a’+i*f-d/l例inti;floatf;doubled;longl;第六十七页,共807页。第六十七页,共807页。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:基本数据类型间的转换第六十八页,共807页。第六十八页,共807页。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或空。B第六十九页,共807页。第六十九页,共807页。CompanyLogo真题分析(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.460000第七十页,共807页。第七十页,共807页。CompanyLogo真题分析(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)第七十一页,共807页。第七十一页,共807页。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+4G67G第七十二页,共807页。第七十二页,共807页。Top7:基本数据类型间的转换真题分析(2011年9月)若有定义语句:inta=10;doubleb=3.14;,则表达式‘A’+a+b值的类型是_____。(选择题14题)A).charB)intC)doubleD)floatCompanyLogoC第七十三页,共807页。第七十三页,共807页。CompanyLogo练习题1、以下程序运行后的输出结果是__________main(){inta,b,c;a=25;b=025;c=0x25;printf(“%d%d%d\n”,a,b,c);}Top7:基本数据类型间的转换0252*81+5*80210x252*161+5*16037252137第七十四页,共807页。第七十四页,共807页。CompanyLogoC运算符算术运算符:(+-*/%++--)关系运算符:(<<===>>=!=)逻辑运算符:(!&&||)位运算符:(<<>>~|^&)赋值运算符:(=及其扩展)条件运算符:(?:)逗号运算符:(,)指针运算符:(*&)求字节数:(sizeof)强制类型转换:(类型)分量运算符:(.->)下标运算符:([])其它:(()-)Top8:常见算术运算符的使用第七十五页,共807页。第七十五页,共807页。CompanyLogo学习运算符应注意:运算符功能与运算量关系要求运算量个数要求运算量类型运算符优先级别结合方向结果的类型Top8:常见算术运算符的使用第七十六页,共807页。第七十六页,共807页。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()第七十七页,共807页。第七十七页,共807页。CompanyLogo4、关于两边运算数类型不一致系统将自动进行转换,使两边一致后再进行运算。5、所有实型数的运算均以双精度方式进行,若是单精度,则在尾数部分添0,转换为双精度。Top8:常见算术运算符的使用6、算术表达式的概念(1)表达式的概念用运算符和括号将运算对象(常量、变量和函数等)连接起来的、符合C语言语法规则的式子,称为表达式。(2)算术表达式的概念表达式中的运算符都是算术运算符。例如:3+6*9、(x+y)/2-1等,都是算术表达式。第七十八页,共807页。第七十八页,共807页。CompanyLogoTop8:常见算术运算符的使用7、强制类型转换表达式转换格式为:

(要转换成的数据类型)(被转换的表达式)(double)a等价于(double)(a))(int)(x+y) (float)5/2等价于(float)(5)/2(float)(5/2) 注意:强制转换类型得到的是一个所需类型的中间量,原表达式类型并不发生变化。例如,(double)a只是将变量a的值转换成一个double型的中间量,其数据类型并未转换成double型。 第七十九页,共807页。第七十九页,共807页。Top8:常见算术运算符的使用真题分析(2011年9月)若有定义语句:intx=12,y=8,z;在其后执行语句z=0.9+x/y;则z的值为___________。(选择题15题)A)1.9B)1C)2D)2.4CompanyLogoB“/”为整除运算符,两边的运算对象都为整数时,运算结果为整型。Z为整型,所以最终结果为整数。第八十页,共807页。第八十页,共807页。CompanyLogoTop8:常见算术运算符的使用真题分析(2007年4月)以下选项中,当x为大于1的奇数时,数为0的表达式为______A、x%2==1B、x/2C、x%2!=0D、x%2==0D%(求余运算符)的两边都必须是整型。大于1的奇数除以2,余数必为1。表达式成立时,整个表达式逻辑值为1表达式不成立时,整个表达式逻辑值为0。第八十一页,共807页。第八十一页,共807页。Top8:常见算术运算符的使用真题分析(2011年3月)以下程序运行后的输出结果是_____(填空题第6题)。#includemain(){inta;a=(int)((double)(3/2)+0.5+(int)1.99*2);printf("%d\n",a);}CompanyLogo3第八十二页,共807页。第八十二页,共807页。CompanyLogoTop8:常见算术运算符的使用练习题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.0C第八十三页,共807页。第八十三页,共807页。CompanyLogoTop8:常见算术运算符的使用练习题2、若有语句inti=-19,j=i%4;printf(“%d\n”,j);则输出结果是_______-3第八十四页,共807页。第八十四页,共807页。CompanyLogo1、算术运算符的优先级()+-

*/

%+-单目双目高低Top9:算术运算符的优先级顺序2、算术运算符和圆括号的结合性所谓结合性是指,当一个操作数两侧的运算符具有相同的优先级时,该操作数是先与左边的运算符结合,还是先与右边的运算符结合。自左至右的结合方向,称为左结合性。反之,称为右结合性。结合性是C语言的独有概念。除单目运算符、赋值运算符和条件运算符是右结合性外,其它运算符都是左结合性。例如,算术运算符的结合方向是“自左至右”,即:在执行“a–b+c”时,变量b先与减号结合,执行“a-b”;然后再执行加c的运算。第八十五页,共807页。第八十五页,共807页。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%221.62.813.8D第八十六页,共807页。第八十六页,共807页。CompanyLogoTop9:算术运算符的优先级顺序真题分析(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.000000A第八十七页,共807页。第八十七页,共807页。CompanyLogoTop9:算术运算符的优先级顺序练习题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)B第八十八页,共807页。第八十八页,共807页。CompanyLogo赋值运算1赋值符号“=”就是赋值运算符,它的作用是将一个表达式的值赋给一个变量。赋值运算符的一般形式为:如果表达式值的类型,与被赋值变量的类型不一致,但都是数值型或字符型时,系统自动地将表达式的值转换成被赋值变量的数据类型,然后再赋值给变量.例a=3;d=func();c=d+2;b=a;Top10:赋值表达式的求值规则变量=赋值表达式

第八十九页,共807页。第八十九页,共807页。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:赋值表达式的求值规则第九十页,共807页。第九十页,共807页。CompanyLogo复合赋值表达式2复合赋值运算符是由赋值运算符之前再加一个双目运算符构成的。复合赋值运算的一般格式为:变量双目运算符=表达式└──┬──┘复合赋值运算符等价于:变量

=变量双目运算符(表达式)。当表达式为简单表达式时,表达式外的一对圆括号才可缺省,否则可能出错。例:x+=3x=x+3y*=x+6 y=y*(x+6)Top10:赋值表达式的求值规则第九十一页,共807页。第九十一页,共807页。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:赋值表达式的求值规则X第九十二页,共807页。第九十二页,共807页。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:赋值表达式的求值规则第九十三页,共807页。第九十三页,共807页。CompanyLogo赋值运算中的类型转换3在C语言的赋值表达式中,赋值号右边的值先转换成与左边的变量相同的类型,然后进行赋值。注意:(1)当赋值号左边的变量为短整型,右边的值为长整型时,短整型变量只能接受长整型数据低位上的两个字节的数据,高位上的数据将丢失。也就是说,右边的值不能超过短整型的数值范围。Top10:赋值表达式的求值规则第九十四页,共807页。第九十四页,共807页。CompanyLogo例:shorta;unsignedlongb;b=98304;a=b;printf(“%d\n”,a);00000000000000011000000000000000高16位低16位结果Top10:赋值表达式的求值规则第九十五页,共807页。第九十五页,共807页。CompanyLogo(2)当赋值号左边的变量为无符号整型,右边的值为有符号整型时,则把内存中的内容原样复制。右边数据的范围不应超出左边变量可以接受的数据范围。同时要注意,这时负数将转换为正数。例:unsigneda;a=-1;printf(“%d\n”,a);1111111111111111-1的补码结果=65535Top10:赋值表达式的求值规则第九十六页,共807页。第九十六页,共807页。CompanyLogo(3)当赋值号左边的变量为有符号整型,右边的值为无符号整型时,复制的机制同上,这时,若符号位为1,将按负数处理。例:inta;unsignedb;a=b;printf(“%d\n”,a);1000000000000000结果=-32786Top10:赋值表达式的求值规则第九十七页,共807页。第九十七页,共807页。CompanyLogoTop10:赋值表达式的求值规则真题分析(2006年4月)以下叙述中错误的是_____A、C程序中的#include和#define均不是C语句B、除逗号运算符外,赋值运算符的优先级最低C、C程序中,j++;是赋值语句D、C程序中,+、-、*、/、%是算术运算符,可用于整型和实型数的运算。D第九十八页,共807页。第九十八页,共807页。CompanyLogoTop10:赋值表达式的求值规则真题分析(2005年9月)下列能正确定义且赋初值的语句是_____A、intnl=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后面必须为整数,不能是实数。B第九十九页,共807页。第九十九页,共807页。CompanyLogoTop10:赋值表达式的求值规则真题分析(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/10第一百页,共807页。第一百页,共807页。CompanyLogoTop10:赋值表达式的求值规则真题分析(2011年3月)若有定义语句:inta=3,b=2,c=1;,以下选项中错误的赋值表达式是______(选择题15题)A)a=(b=4)=3;B)a=b=c+1;C)a=(b=4)+c;D)a=1+(b=c=4);A赋值运算符左边只能是变量,不能是常量或是表达式第一百零一页,共807页。第一百零一页,共807页。CompanyLogoTop10:赋值表达式的求值规则练习题1、以下选项中,非法的表达式是______A、0<=x<100B、i=j==0C、(char)(65+3)D、x+1=x+1D第一百零二页,共807页。第一百零二页,共807页。CompanyLogoTop11逗号表达式的运算规则形式:表达式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,3第一百零三页,共807页。第一百零三页,共807页。CompanyLogo例:#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逗号表达式的运算规则第一百零四页,共807页。第一百零四页,共807页。CompanyLogoTop11逗号表达式的运算规则考点逗号运算符的结合性为从左到右,先计算表达式1,最后计算表达式n,最后一个表达式的值即为该逗号表达式的值。逗号运算符在所有运算符中,优先级最低。第一百零五页,共807页。第一百零五页,共807页。CompanyLogoTop11逗号表达式的运算规则真题分析(2007年4月)执行以下程序后的输出结果是_____main(){ inta=10;

a=(3*5,a+4); printf("a=%d\n",a);}

a=(3*5,a+4);①15②10+41414第一百零六页,共807页。第一百零六页,共807页。CompanyLogoTop11逗号表达式的运算规则真题分析(2005年9月)有以下程序,main(){chara1='M',a2='m';printf(“%c\n”,(a1,a2));}则下列说法正确的是_____A、程序输出大写字母MB、程序输出小写字母mC、格式说明符不足,编译出错D、程序运行时产生出错信息B第一百零七页,共807页。第一百零七页,共807页。CompanyLogoTop11逗号表达式的运算规则练习题1、有如下程序,运行该程序的输出结果是_____main(){inty=3,x=3,z=1;printf(“%d%d\n”,(++x,y++),z+2);}A、34 B、42 C、43 D、33D第一百零八页,共807页。第一百零八页,共807页。CompanyLogoTop12自加、自减运算符自加运算符++、自减运算符--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);第一百零九页,共807页。第一百零九页,共807页。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的值变为1

温馨提示

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

评论

0/150

提交评论