版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
授课时间第1次课,第____周星期—第_______节课时2+2
授课方式理论课J讨论课口习题课口实验课口上机课J技能课口其他口
授课题目C语言概述
1.了解C语言以及特点。
2.了解算法、流程图、结构化设计等知识。
目的与要求
3.熟悉VC++6.0工具的使用。
4,掌握C语言运行步骤,会在VC++6.0工具上运行程序。
重点:VC工具的使用、C语言运行步骤
重点与难点
难点:算法、流程图
教学基本内容
(一)程序
程序是为实现特定Fl标或解决特定问题而用计算机语言编写命令序列的集合。计算机
程序是开发工程师按照用户要求、用计算机语言开发的计算机能够执行的指令序列的集
合。计算机程序分为系统程序和应用程序两大类。
(二)程序设计语言
程序设计语言主要包括机器语言、汇编语言和高级语言三类语言。
1.机器语言
计算机能够直接识别的语言被称为机器语言,也叫二进制语言,该语言的指令都是由
二进制数。或1组成。该语言执行效率高,但是难学难记、编程难度高。
2.汇编语言
汇编语言用英文字母或字符串来代替机器语言,把不易理解和记忆的机器语言按照对
应关系转换成汇编指令。汇编语言降低了机器语言的难度。
3.高级语言
高级语言是一类语言的统称,包含多种编程语言,这类语言比汇编语言更贴近于自然
语言,因此易于理解、记忆和使用。另外高级语言和计算机架构、指令集无关,因此具有
良好的可移植性。常见的高级语言包括C、C++、Java、C#、VB等。
(三)C语言
DennisM.Ritchie是C语言之父,也是UNIX之父,获得哈佛大学数学博士学位,曾
担任朗讯科技公司贝尔实验室下属的计算机科学研究中心系统软件研究部的主任职务。
1970年,美国贝尔实验室的KerThompson以BCPL语言为基础,进一步对其简化,
提出来B语言,并用B语言写出了UNIX操作系统。1972年,美国贝尔实验室的Brian
W.Kemighan和DennisM.Ritchie对B语言进行了完善和扩充,提出来C语言。
1977年,出现了不依赖于具体机器的C语言编译版本,使C语言程序移植到其它机
器的过程得到简化,推动了UNIX操作系统在各个机器上的实现。
1978年,KenThompson和DennisM.Ritchie合著了《TheCProgrammingLanguage)),
被称为标准C。1983年,美国国家标准化协会根据不同C语言版本对C语言的发展和扩
充,指定了新的C语言标准——ANSIC,1987年,又公布了新标准——87ANSIC,即现
在流行的C语言。
1980年,美国贝尔实验室的BjamcStroustrup博士在C语言的基础上,开发了一•种过
程性与对象性相结合的程序设计语言,即C++语言。
(四)C语言的优点
C语言具有不同于其它语言的特点。
1.C语言简洁、紧凑,使用方便灵活
C语言只有32个关键词和9种控制语句,并且程序书写形式自由。
2.运算符丰富,表达式能力强
C语言有34种运算符,运算范围广泛,并且还可以实现以二进制为单位的运算,并
且具有如++、一等单目运算符和+=、.=、*=、/=等复合运算符。
3.数据结构丰富,便于数据的表述和存储
C语言具有丰富的数据结构,其数据类型有整型、实型、字符型、数组类型、指针类
型、结构体类型和共用体类型等,能用来实现各种复杂的数据结构的运算。
4.C语言是结构化、模块化的编程语言
程序的逻辑结构可以使用顺序、选择和循环3种基本结构组成。C语言程序采用函数
结构,十分便于把整体程序分割成若干相对独立的功能模块,并且为程序模块间的相互调
用以及数据传递提供了便利。
5.语法限制不太严格,程序设计自由度大
对数组下标越界不做检查,由程序编写者自己保证程序的正确。对变量的类型使用比
较灵活。
6.C语言是具有低级语言功能的高级语言
C语言允许直接访问物理地址,能进行位操作,能实现汇编语言的大部分功能,可以
直接对硬件操作,因此C语言既具有高级语言的功能,又具有低级语言的许多功能,可
用来编写系统软件。
7.生成目标代码质量高,程序执行效率高
用C语言编写的程序,经编译后生成的可执行代码比用汇编语言直接编写的代码执
行效率低少许,其它高级语言无法做到这个程度。
8.可移植性好
与汇编语言相比,C程序不做修改就可以运行于各种型号的计算机和各种操作系统。
(五)C语言的不足
1.C语言的数据类型检查不严格,表达时容易出现二义性,不能自动检查数组下标越
界。
2.C语言缺乏支持代码重用的语言结构。
3.C语言不适合开发大型应用程序,因为当程序规模达到一定程度时,程序员很难控
制程序的复杂性。
(六)开发工具
1.VC++6.0开发工具
VisualC++开发环境是一个基于Windows操作系统的可视化、面向对象的集成开发环
境(IntegratedDevelopmentEnvironment,IDE)。在该环境下用户可以开发有关C和C++
的各种应用程序,应用程序包括建立、编辑、浏览、保存、编译、链接和调试等操作,这
些操作都可以通过单击菜单选项或工具栏按钮来完成,使用方便、快捷。它还提供了项目
工作区(Workspace)、应用程序向导(AppWizard)、类操作向导(ClassWizard)和WizardBar
等实用编程工具。
2.Eclipse工具、
Eclipse是一种被广泛使用的免费跨平台IDE,最初由IBM公司开发,目前由开源社
区的Eclipse基金会负责Eclipse的管理和维护。一开始Eclipse被设计为专门用于Java语
言开发的IDE,现在Eclipse已经可以用来开发C、C++、Python和PHP等众多语言。
3.Code::Block工具
Code::Block是一个免费的跨平台IDE,它支持C、C++和FORTRAN程序的开发。
Code::Block的最大特点是它支持通过插件的方式对IDE自身功能进行扩展,Codc::Block
具有很强的灵活性,方便用户使用.
4.Vim工具
(-)C语言结构
C程序主要有两种文件形式:头文件和源文件。引用C语言标准库函数,一般要用文
件包含预处理命令(例如,include命令)将其头文件(扩展名.h)包含进来放在程序的开
头;源文件通常以.c为文件扩展名。
先来看一个C语言程序的实例。
#include<stdio.h>
intmain()
{
printf(44Helloworld");
return0;
)
结合这个实例,我们来了解C语言程序。
1.头文件
实例中的“stdio.h”是头文件。语句“#include<stdio.h>”是预处理命令(也可以写成
include“stdio.h"),其后不能加“;”,该语句用于将stdio.h头文件包含到程序中。有了这
条语句后,就可以使用在stdio.h中定义的函数了;如果不添加这条语句就不能使用stdio.h
头文件中的函数,比如printf函数。大多数程序都会使用到输入或是输出,而输入和输出
函数就在stdio.h头文件中。
2.主函数
(1)主函数名称为main(),这个名称不能修改,其后的一对圆括号内可以带参数,
也可以省略,但一对圆括号不能省略。
(2)一个C源程序不论由多少个源文件组成,必须有且只能有一个主函数。主函数
无论在文件中的什么位置,程序运行总是从主函数开始,最后在主函数中结束。
注意:上机时,常常有学生编写多个不同程序,但是每个程序都有一个main函数,
结果出现多于一个main函数,程序不能正确编译,更无法运行。
(3)程序中除了主函数main。外,还可以有其它函数。其它函数可以由主函数直接
或间接调用来执行,但其它函数不能调用主函数。
3.函数首部和函数体
一个函数由函数首部和函数体两部分组成。
(1)函数首部指定函数类型、函数名、函数参数类型和函数参数名;函数体从“{"
开始,到“}”结束。比如实例中,函数类型为ini类型,函数名为main,没有函数参数。
函数体内有两条语句。
(2)函数体内是C语言的语句,一般包括变量声明语句和执行语句两部分。
(3)一行可以写多条语句,一冬语句也可以分写在多行,但是不推荐一行写多条语
句,如果语句不长,也不推荐一条语句分写在多行。
注意:
®C程序语句必须以分号结尾,分号是C语句的重要组成部分,其中分号是英文的分
号,常常有学生写成中文的分号。
②在预处理命令、函数首部、花括号“{”和“广之后不能加分号。
③执行语句中需要用到的变量必须先声明然后才能使用。
4.注释语句
注释语句主要用于声明变量的含义和程序段的功能等,以提高程序的可读性,但注释
内容都不会被计算机执行,注释可以出现在程序中任意合适的地方。注释有两种形式。
(1)单行注释
〃注释内容
(2)多行注释
/*注释内容*/
(二)C语言风格
程序的格式不影响代码的执行,但是好的编程风格对程序可读性和维护性帮助很大。
1.代码行
(1)一行只写一条语句
(2)if、for、while等语句各占一行,并且不管其执行语句有几条,都用大括号将其
包含起来。
2.对齐与缩进
(1)一般是使用4个空格缩进,也可以使用Tab键缩进。
(2)大括号要独占一行。
(3)在大括号内的代码,也要缩进。
(三)程序设计过程
编程是编写程序的简称,术语称为程序设计。其过程主要是由需求分析、算法设计、
程序编写和程序调试组成。
1.需求分析
编程的第一步是需求分析,也就是弄清楚到底要计算机做什么。这个过程看似简单,
也确实有不少人对它不屑一顾,但忽视它的结果就像考试中审题审的不对,即使解题过程
再漂亮,也拿不到分数,必须从头返工。
需求分析中最难的事情是开发者和用户之间的交流。用户一般不懂开发,开发者一般
不懂用户的专业和业务,因此双方很难顺利地沟通,导致需求分析的过程要持续较长的时
间。如果开发者对用户的专业有所了解,或者用户懂点开发,这件事就好办的多了。
2.算法设计
编程的第二步是算法设计,就是招明白计算机该如何完成问题求解。算法设计的内容
主要包括数学建模和程序代码结构设计。
数学建模属于非计算机专业范畴,程序代码结构设计部分则属于计算机专业范畴,两
者的配合非常重要。并不是所有的数学模型都能用程序高效实现,而有些数学中难以处理
的问题,却可以使用计算机巧妙解决。
3.程序编写
程序的第三步才是真正编写程序,即将设计的结果变成一行行代码,然后输到程序编
辑器中。
4.程序调试
编程的第四步是程序调试,就是将源代码编译,变成可执行的程序,然后运行,看是
否能满足第一步的要求。如果不满足,就要查找问题,修改代码,再重新编译、运行,宜
到满足要求为止。
(四)C语言运行过程
1.编辑
编辑是指用户通过编辑器,将开发的C语言程序输入计算机的过程。编辑生成的文
件以文本形式存储,文件后缀名为.c,也称为C源程序文件。C源程序文件以ASCII码形
式存储,计算机不能直接执行。
注意:在新建文件时,必须输入文件全名和后缀名(.c),因为VisualC++6.0中的默
认后缀名是.cpp(C++程序)。
2.编译
编译是指“算机把C源程序文件翻译成“算机可以识别的二进制形式的目标代码文
件,由C的编译器完成。
把一个C源程序翻译成目标程序的工作过程分为5个阶段:词法分析、语法分析、
语义检查和中间代码生成、代码优化、目标代码生成。编译器主要是进行词法分析和语法
分析,又称为源程序分析,分析过程中发现有语法错误,将会列出错误位置和行号等信息,
此时需要编辑修改源程序,排除错误,直至无错误也无警告,则编译成功并生成目标代码
文件,其文件名与源程序文件名相同,后缀名为.obj。编译生成的目标文件不包含程序运
行所需要的库函数等,计算机仍然不能直接执行。
3.连接
连接是将本目标程序代码和其它目标程序代码,以及系统提供的C库函数等进行连
接、装配成可执行文件的过程。连接生成的可执行程序文件的文件名与源程序文件名的后
缀名.exe。
需要注意的是,在任何情况下,对任何程序做了修改编辑,都必须对修改的程序重新
进行编译并连接装配成新的可执行程序(.exe)文件。
4.运行
在C的集成环境下选择“运行”命令(推荐使用),或者在Windows命令提示符下,
输入该程序文件名回车,都可以直接执行该文件获得运行结果。如果结果有误,需要重新
编辑源程序,再编译、连接、运行,直到得到满意的运行结果。
(五)算法
算法是为解决某个特定问题而采取的准确而完整的方法和步骤,其中有个著名的公
式:
数据结构+算法=程序
其中,数据结构是对数据的描述,也就是在程序中数据的类型和组织形式,而算法则
是对操作步骤的描述。
算法是程序设计的灵魂,是问题求解过程中的精确描述。学习C语言,不仅要熟练
掌握C语言语法规则等,还要掌握分析问题、解决问题的方法。解决一个具体问题时通
常有多种算法供选用,要对算法执行效率进行分析比较,再做选择。
2.算法的特性
算法具有以下特性:
(1)有穷性:算法中的每个步骤执行的次数及时间是有限的,即不能无限执行。
(2)确定性:算法中的每条指令必须清楚严格地规定确切的含义,无二义性。
(3)有效性:算法中描述的每个步骤都应能有效地执行,并得到确定的结果。
(4)算法有零个或多个输入。
(5)算法通常有一个或多个输出。
3.算法的描述方法
算法可以用各种描述方法进行描述,历史上已经使用过的描述方法有自然语言、流程
图、N・S图、伪代码和计算机语言程序5种。
下面我们以计算1+2+3+…+100为例,使用不同的算法给予描述。
(1)自然语言描述
步骤I:i=l>sum=0;
步骤2:如果i不大于100,顺序执行步骤3;否则,执行步骤5;
步骤3:sum加上i,相加后的值仍放在sum中,即sum=sum+i;
步骤4:使i的值增1得到下一个加数,即10+1;执行步盛2;
步骤5:变量suni中的值就是所要得到的结果,输出结果,算法结束。
此方法口语化,易懂,但不够直观、不利于编程。
(2)流程图描述
流程图直观地描述一个工作过程的具体步骤。用传统的流程图表示算法的优点是直观
易懂、简单方便;缺点是传统流程图对于流程线的走向没有任何限制,可以任意转向,绘
制流程图时费时费力且不易修改和阅读。
(3)N-S图描述
在这种流程图中,完全去掉了带箭头的流程线,全部算法写在一个矩形框内,在该框
内还可以包含其它从属于它的框。用N-S图表示算法的优点是去掉了流程线,直观易懂,
容易让学习者养成利用结构化方法构造算法的习惯,但修改流程图仍显麻烦。
(4)伪代码描述(又称为类语言描述)
伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法。这种方法比较
易于理解,但描述较冗长。
(5)计算机语言程序描述
另外,算法还可以使用计算机程序来描述。
4.算法的要求与评价
对一个算法的评价主要是对算法效率的衡量,从时间复杂度和空间复杂度来衡量。
(1)时间复杂度:执行算法所需要的时间。
(2)空间复杂度:执行算法需要消耗的最大内存空间。
对于同一个问题,根据不同的算法写出的程序放在计算机上运行时,所需要的时间和
空间是不同的,两者都与问题的规模有关。
(六)结构化设计
结构化程序设计是进行以模块功能和处理程序设计为主的详细设计的基本原则。它主
要采用自顶向下、逐步求精及模块化的程序设计方法,任何程序都可由顺序、选择、循环
三类基本控制结构构造。
1.自顶向下
程序设计时,首先考虑总体,再考虑细节;先考虑全局目标,后考虑局部目标。首先
从最上层总目标开始设计,不要一开始就追求细节。
2.逐步求精
逐步精细化。对复杂问题,应设计一些子目标作为过渡,逐步细化。
3.模块化设计:模块化就是把程序要解决的总目标分解为子目标,再进一步分解为
具体的小目标,小目标又称为模块。为了使模块尽可能独立,要求模块内聚程度要尽量高,
且模块间的耦合程度要尽量弱。
4.结构化程序设计的三种基本结构
(1)顺序结构
顺序结构是最基本的构造结构,当执行由这些语句构成的程序时,按照这些语句在程
序中的先后顺序执行,没有分支,没有转移,没有步骤之间的相互约束。顺序结构流程图
如图I-8a所示。
(2)选择结构
选择结构根据不同的条件去执行不同分支中的语句。选择结构流程图如图l-8b所示。
(3)循环结构
循环结构就是根据给定的条件,判断是否要重复执行某一相同的或类似的程序段。选
拦结构流程图如图l-8c所示。图l-8c左图是当型循环,该循环的特点是:当给定的条件
成立时,就执行循环体;否则不执行。图l-8u右图是直到型循环,该循环的特点是:执
行循环体,直到给定的条件成立,就不再执行循环。
(七)VC++6.0界面与主要操作
现在Windows环境下常用VisualC++6.0。本教程采用VC++6.0的二级考试版。
1.VisualC++6.0的启动与退出
(1)启动:
双击桌面的MicrosoftVisualC++6.0快捷方式图标
单击“开始”-*“程序”MicrosoftVisualStudio6.0^MicrosoftVisualC++6.0
启动运行VisualC++6.0,进入它的集成开发环境窗口。
注意,VisualC++6.0启动后初始窗口样式可能会不同,例如未出现Workspace窗I」或
Output窗口。可以通过View-*Workspace菜单选项的执行,会使主窗口左边的Workspace
窗口(工作区窗口)显现:通过View—Output菜单选项的执行,又可使下部的Output窗
口(输出区窗口)显示出来。
(2)退出
单击VC++6.0界面的右上角的关闭符号退出。
2.VisualC++6.0开发环境
(1)编辑
在VC++6.0窗口,选择菜单File-New,弹出新建文件对话框。在弹出的对话框中,
单击上方的选项卡Files,选择C++SourceFile,在File文本框中填写文件名(例如chapl.c),
在Localion文本框中选择或填写文件存放的位置。然后单击OK按钮。在打开的Visual
C++6.0右侧窗口中输入程序的内容,然后单击保存图标。
注意:
①填写文件名时一定要写文件后缀.c,不要省略,因为省略则默认扩展名为.cpp。
②推荐指定文件保存的目录,不要使用系统默认目录。
③编辑程序时,所有的符号字母都是英文半角状态下的符号。
(2)编译
选择菜单Build—Compile或单击工具栏上的编译(Compile)图标,如果编译没有错
误和警告,则显示chapl.obj-0errors),0warning(s),\这表示目标代码文件建成,可以
在文件所保存的文件夹的下级文件夹debug中看到hello.objo
(3)连接(组建)
选择菜单Build-Build或单击工具栏上的连接(Build)图标,这时VisualC++6.0将
弹出一个对话窗口,说明这个命令需要建一个工程(Project),询问是否创建一个默认的
工程,一般单击“Yes”。这时在左边灰色区域建立白色工程区,显示工程名。
(4)运行
单击快捷工具栏上的红色的感叹号“(运行)按钮(或者选择菜单BuildExecute或
按Ctrl+F5),VisualC++6.0将自动打开一个显示结果的黑色窗口,显示“ThisisaC
program",表示运行正常。
3程序调试和测试
(1)VC调试功能简介
调试的目的是发现并改正错误。VC为调试C程序提供了多种工具和多组方法,常用
的方法有菜单法、工具栏法和功能键法。实际上,这三种方法是相似或相同的。
对于控制程序运行工具,从左到右的常用按钮、功能键及功能说明依次是:
①Restart(Ctrl+Shift+F5)重新执行程序。
②SlopDebugging(Shifl+F5)停止程序调试。
③ShowNextStatement指示当前程序运行的语句行。
©StepInto(F11)单步运行并且可进入函数内部运行。程序在调试过程中,按下此
按钮可单步跟踪程序运行,进入函数内部,继续函数内部的语句执行跟踪。。
⑤StepOver(F10)单步运行程序。功能类似于F11,它不进入函数内部,而是将每
一条语句看做一步,包括函数调用语句。单步执行是最为常用的调试功能。
⑥StepOut(Shift+Fll)从当前函数中退出。当程序运行在某函数内时,按此按钮后,
调试状态即从函数内部退出,返回到调用该函数的主函数的当前语句。
⑦RuntoCursor(Ctrl+F10)运行到当前光标位置。当程序处于调试状态时,为了跳
过某程序段,可预先将光标定位在某语句行上,按下此按钮,即可使程序直接运行到当前
光标位置,从而节省了时间,加快了调试程序的步骤。
(2)对于设置观察窗口工具,其功能主要是为配合程序跟踪运行,设置一些观察点,
以便定位出错的位置,从而找到出错的原因。
©QuickWatch(Shift+F9)快速观察表达式的值。
②Watch设置观察点。
③Variables变量列表。
©Registers寄存器列表。
⑤Memory内存列表。
思考题、作
业、参考文献
课后
小结
授课时间第2、3次课,第周星期一第节课时4+4
授课方式理论课J讨论课口习题课口实验课口上机课J技能课口其他口
授课题目C数据类型和表达式
1.掌握C语言数据类型,了解整型数据和字符型数据之间的内在关系。
目的与要求2.掌握整型、字符型、浮点型等数据的正确输入方法。
3.熟练掌握算术运算符和表达式的使用,以及自加和自减运算符的使用。
重点:数据类型、运算符
重点与难点
难点:自加、自减
教学基本内容
【一)数据类型
在C语言中,数据类型就是程序给其使用的数据指定的数据组织形式。数据类型是
根据被说明数据的性质、表示形式、占据存储空间的多少、构造特点来划分的。在C语
言中,数据类型可分为:基本类型、构造类型、指针类型、空类型四大类。
(二)数据类型分类
1.基本类型
基本类型是数据类型的基础,由它可以构造出其它复杂的数据类型。基本类型不可以
再分解为其它数据类型。
2.构造类型
根据已定义的一个或多个数据类型,用构造的方法来定义的类型称为构造类型。也就
是说,一个构造类型可以分解成若干个“成员”或“元素”。每个“成员”都是一个基本
类型或是一个构造类型。在C语言中,构造类型包括数组类型、共用体类型、结构体类
型和枚举类型。
3.指针类型
指针类型是一种特殊的、具有重要作用的数据类型,用来表示某个对象(变量、数组
等)在内存储器中的地址。指针的特殊性在于它能获得某个对象的地址和操作地址的能力。
C语言高度的灵活性和丰富性的表达式很大程度上依赖于在程序中恰当地使用了指针。
4.空类型
在调用函数时,通常应向调用者返回一个函数值,这个返回的函数值是具有一定的数
据类型的。例如,max()函数定义,函数头为intmax(inta,intb),其中int类型说明符即表
示该函数的返回值为整型。但也有一类函数,调用后并不需要向调用者返回函数值,即只
是一个过程调用,这种函数可以定义为“空类型”,其类型说明符为void。
(一)C语言的基本符号
1.标识符
程序中用来为符号常量、变量、函数、数组、类型、文件命名的有效字符序列称为标
识符。标识符命名规则如下:
(1)只能由字母、数字和下划线组成。
(2)第一个字符必须为字母或下划线。
(3)不能使用关键字,C语言关键字参见附录。
2.注意事项
(1)区分大小写字符,因此a和A是不同的标识符。
(2)各个编译系统允许的标识符的长度不同,建议标识符的长度不超过8个字符。
(3)在选择标识符时,应该注意做到“见名知意”,即选择有相应含义的英文单词或
缩写作为标识符,以增加程序的可读性。
(二)常量
常量又称为常数,是在程序运行过程中其值不能被改变的量。常量的数据类型是由其
值隐含决定的。例如,30、-3为整型常的,-0.23、57.0为实型常量,,D,、2为字符型常
量。
在C语言中,经常使用一个标识符来代表一个常量,也就是给常量命名,命名后的
常量称为符号常量。
(三)变量
1.变量的基本概念
在程序运行基本过程中其值可以改变的量称为变量。变量具有数据类型、变量名和变
量值三个属性。变量在其存在期间,在内存中根据指定的类型所占据存储单元长度的不同,
可以用来多次赋值。
变量名和变量值的概念不同,变量名实际上是一个符号地址,在系统对程序编译时,
给每个变量名分配个具体的内存地址,变量值是对应变量名的存储单元所存放的具体
数值。
变量的数据类型是指变量存储的数据类型,也就是变量值的数据类型,C语言规定数
据类型不同,在内存中占据存储单元的长度也不同。
程序运行时从变量中取值,实际上是通过变量名找到相应的内存位置,从与内存地址
相对应的存储单元中读取数据。
注意事项
(1)程序在使用变量前,先要对变量进行定义,即必须“先定义,再赋值,后使用
(2)变量名的命名规则与标识符完全相同。
(3)在程序中变量名在其有效的范围内不能更改,但变量值却可以动态更新。
2.变量的定义
变量的定义是指在程序中指定变量的名字和数据类型。在编译时根据变量的数据类
型,系统分配相应大小的存储单元。
变量一般是在函数开头的声明部分定义,也可在函数中的某一复合语句内定义。
变量定义的一般形式如下;
类型说明符变量名1,变量名2,变量名3,变量名n;
例如:
inta,m,x;〃定义三个整型变量
charstr;〃定义一个字符型变量
3.变量的初始化
在C语言中,有两种初始化方式,第一种是定义变量的同时为变量指定初值。例如:
floata=0.5;
charstr='a';
inta=0,b=100;
第二种是在定义后再赋值,例如:
inta,b;
a=0;b=100;
另外还可以对被定义变量的一部分赋初值。例如:
inta=O,b=O,c;
注意事项
不可以用下面的方式对几个变量同时赋同一个初值:
inta=b=O;
(四)关键字
为了清晰的表达程序的功能,C语言中使用了一些具有特殊意义的单词或单词缩写,
这些单词称为关键字,是C语言系统预先规定的。例如:if,int,whlie等,详见本书附录。
注意:
关键字不能用于变量名或任何标识符。
(五)C语言的数据类型
C语言中根据数据的不同性质和用处,将其分为不同的数据类型,各种数据类型具有
不同的存储长度、取值范围及允许的操作。
(六)整型数据
C语言的整数类型(简称整型)用来表示整数,因为计算机只能表示有限位的整数,
所以整型是整数的一个有限子集,整型数据类型又可以分为整型变量和整型常量。
1.整型变量的分类
整型变量按数值的取值范围不同分为以下三种:
(1)基本整型:以int作为类型说明符。
(2)短整型:以shortint或short作为类型说明符。
(3)长整型:以longim或lo期作为类型说明符。
一般来说,整型变量在内存中占的字节数与所选择的编译系统有关,不同的编译系统
对整型数据的存储是不同的,规定long型整数不短于ini型,short型整数不长于ini型。
例如,VisualC++系统为int型变量和long型变量分配4个字节(32位),因此,值
的范围是-23-231-1.
以上三种类型说明符用来定义带符号(正、负)的整型变量,而实际应用中经常处理
的是一些不带符号的整型变量,处理方法是将存储单元中的全部二进制位都用来存放数,
取消符号位,这类变量称为无符号整型。无符号整型变量按数值的取值范围不同也分为三
种:
(1)无符号基本整型:以unsignedint或unsigned作为类型说明符。
(2)无符号短整型:以unsignedshortint或unsignedshort作为类型说明符。
(3)无符号长整型:以unsignedlongint或unsignedlong作为类型说明符。
无符号整型变量只能存放不带符号的整数,不能存放负数,但可以存放正数的范围比
相应的有符号整型变量大一倍,以VisualC++系统为例,C语言的整数类型占用的存储空
间和取值范围如表2-1所示。
表2-1C语言的整数类型
次型名称类型说明符字节位数取值范围
数
基本整型intint432-2147483648-2147483647-231-231_
1
好整型shortintshort216-32768-32767-215~215_
1
长整型longintlong432-2147483648〜2147483647-231-231.
1
X符号基本整unsignedunsigne4320-42949072950-231-l
Sintd
I符号短整型unsignedunsigne2160-655350~216-I
shortintdshort
天符号长整型unsignedunsigne4320-42949672950-231-l
longintdlong
2.整型变量的定义
对每一个整型变量,都应在使用前加以定义。例如:
inta=O,b=O;
inti,j;
i=l;j=7;
3.整型常量的表达形式
整型常量就是整型常数。有以下三种表达形式:
十进制数:例如25、-128。
八进制数:以数字0开头,并由数字0~7组成的数字序列,例如0125。
十六进制术:以Ox或0X开头,并由数字0~9和字符a~f或者字符A~F组成的数字
序列,例如0X125。
4.整型常量的类型
我们已经知道,整型变量有六种类型,而整型常量的类型是由其值隐含决定的,当然
也和所选的编译系统相关。例如,32767的类型是shortint(或int),32769的类型是long(或
int)o
注意事项
(1)常量无unsigned型,但如吴非负的整数在unsigned型的取值范围内,可以赋值
给一个unsigned型变量。
(2)一个整型常量后面加一个字母L,则明确指出该常量是longint型的,例如:0L。
(七)实型数据
C语言的实型用来表示实数,因为计算机只能表示有限位的实数,所以实型是实数的
一个有限子集,实型数据可以分为实型变量和实型常量。
1.实型变量的分类
实型变量按数值的取值范围不同分为以下三种:
(1)单精度实型:以float作为类型说明符。
(2)双精度实型:以double作为类型说明符。
(3)长双精度实型:以longdouble作为类型说明符。
各种实型变量的数据长度、精度和取值范围与所选择的系统有关,不同的系统有差异。
在大多C语言系统中,float型数据在内存中占4个字节(32)位,double型数据在内存
中占8个字节(64位)。C语言中各种实型变量的数据长度、精度和取隹范围如表2-2所
7卜0
表2-2:实型变量的数据长度、精度和取值范围
类型名称类型说明字节数位数有效数字取值范围
符
单精度实型Float4326~710-38-1038
双精度实型Double86415-1610-308
103)8
2.实型变量的定义
对每一个实型变量,都应在使用前定义。例如:
floatx,y;〃定义x,y为单精度实数
doublez;〃定义z为双精度实数
3.实型常量表达形式
实型常量就是实常数。以下有两种表达形式:
(1)十进制小数形式:例如1.25。
(2)指数形式:一般格式是“实数(整数)+e(或E)+整数”。例如,123.456的指数
形式是1.23456e2o
4.实型常量的类型
一个实型常量可以赋给一个float型、double型或longdouble型变量,系统根据变量
的类型自动截取实型常量中相应的有效数字。
(A)字符型数据
字符型数据用于表示一个字符值。字符型数据在计算机内部的表示形式是ASCII代码
〔二进制形式存储),并非字符本身。字符型数据分为字符常量和字符变量两种。
1.字符常量
字符常量使用单撇号括起来的一个字符,例如,'a,、'夕等都是字符常量。
另外还有一些特殊的字符,C语言中约定用“\"开头的字符序列作为标记,这类字
符统称为转义字符,从字面上理解就是将反斜杠“\”后面的字符转换成另外的意义,用
于表示一种特定的控制功能或表示一个特别的字符。例如,转义字符中的“n”并不代
表字母n,该转义字符表示在输出过程中将当前的位置转移到下一行开头,简称换行。常
用转义字符如表2-3所示。
表2-3:常用转义字符
表示形式含义ASCH码
\0空字符0
\a响铃7
\b退格,将当前位置移到前一列8
\t水平制表(跳到下一个Tab位置)9
\n换行,将当前位置移到下一行开头10
\v垂直制表(跳到下一个home的位置)11
\f换页,将当前位置移到下一页的开头12
\r回车,将当前位置移到本行的开头13
双撇号字符34
V单撇号字符39
\\反斜杠("\")字符92
\ddd1~3位八进制所代表的字符
\xhhh1~2位十六进制所代表的字符
2.字符变量
用来存放一个字符常量的变量称为字符变量。同样,字符变量在使用之前必须先定义,
以char作为说明类型符。例如:
charcl,c2;〃定义变量cl,c2为字符变量
cl=V;c2=,b,;〃将字符常量存放在字符变量中
无论是字符常量还是字符变量,在内存中只占一个字节,用来存放一个字符,虽然字
符在程序中可用字符常量或对应的ASCII码的形式表示,但在内存中是以其ASCII码二
进制的形式存储的,它与整数的存储形式类似。因此,字符型数据可以当做整型数据进行
处理,并且可以与整型数据混合操作和处理。
3.字符串常量
字符串常量是括在一对双撇号之间的字符序列。例如:"Hello
World“、”a“、”$100“、”\t\ba\n"。
字符串常量中的字符依次存储在内存中的一块连续的区域内,并把空字符'\0'自动的
附加到字符串的尾部作为字符串结束的标志。因此,对于字符个数为n的字符串,所占内
存空间应为n+1个字节。
注意
在程序中,可以用字符常量或字符串常量表示单个字符,例如W或"a”,但是意义不
同,区别如下:字符串“a”在内存中占两个字节,而字符3在内存中占1个字节。
sizeof(数据类型或变量名)
(九)sizeof函数
该函数功能是判断数据类型长度,一般格式为。
sizeof(类型说明符,数组名或表达式);
或
sizeof变量名
例如:
printf("inl:%d\n",sizeof(int));
(一)运算符与表达式
运算是对数据进行处理和操作的过程,描述各种操作和处理的符号称为运算符(也称
为操作符),C语言把除了控制语句和输入、输出以外的几乎所有的基本处理和操作都作
为运算符处理,因此C语言中运算符的作用范围很广泛。按照运算符的作用将其分类,
如表2-4所示。
表2-4C语言运算符
类别运算符
算术运算符*,/,%,+,・,自增运算符++,自减运算符
关系运算符>,<,==,<=,>=,!=
逻辑运算符!,&&,||
位运算符A,&
赋值运算符=,+=,-=,*=>/=,%=«=,»=,&=?=J=,
条件运算符?:
逗号运算符
指针运算符*,&
强制类型转换运算符(类型),如(int)(double)等
分量运算符
其它运算符如函数调用运算符
1.运算符的分类
用运算将操作对象连接起来,符合C语言语法的式子称为表达式。表达式具有如下
特点:
(1)常量和变量都是表达式,例如:常量3.14、变量i都是表达式.
(2)运算符的类型对应表达式的类型,例如I:算术运算符对应算术表达式。
(3)每一个表达式都有自己的值。
表达式的值也可以说是表达式的运算结果,所有表达式的值只有两类:数值和地址。
不管表达式多么复杂,非地址类表达式的运算结果只能是一个数值。
任意一个运算符都具有两个属性:优先级和结合性(结合方向)。
(1)优先级
当若干个运算符同时出现在表达式中时,优先级规定了运算的先后次序。C语言的运
算符种类有很多种,并且优先级有15级之多。C语言把圆括号作为运算符,规定它的优
先级最高,为15级,从而保证了优先运算圆括号内的式子,逗号运算符的级别最低,为
(2)结合性
当若干个具有相同优先级的运算符相邻出现在表达式中时,结合方向规定了运算的先
后次序,分为“从右到左”和“从左到右”两个结合方向。
一般来说,大多数运算符的结合方向为“从左到右”,只有单目运算符、赋值运算符
和条件运算符的结合方向为“从右到左”,这里单目运算符是指作用于一个操作对象的运
算符。
2.算术运算符和算术表达式
C语言的算术运算符如表2-5所示。注意:
(1)在除法运算中,两个整数杓除的结果为整数,舍弃小数部分,例如3/2的结果
(2)如果被除数或除数有一个是负数,则舍弃小数部分的方向是不一定的,例如-3/2
的运算结果可能是-1,而3/2的运算结果为1。
(3)%是取余运算符或模运算符,该运算只能作用于两个整型数,运算结果是两个
整数相除后的余数,运算结果为整数。
(二)逗号运算符和逗号表达式
在C语言中,逗号不仅仅可以作为分隔符出现在变量的定义、函数的参数表中,还
可以作为一个运算符把多个表达式连接起来,形成逻辑上的一个表达式。逗号表达式的一
般形式如下:
表达式1,表达式2,表达式3,…表达式n
逗号运算符的优先级是所有运算符中最低的,结合方向是“从左到右”。逗号运算符
的功能是使得逗号表达式中的各个表达式从左到右逐个运算一遍,逗号表达式的值和类型
就是最右边的“表达式n”的值和类型。例如:
m=1,n=2
a=(m+n,m-n)〃a等于-1,表达式的值为
a=m+n,m-n〃先计算赋值表达式,a等于3,表达式的值为-1
a=m+n,m-n+a〃先计算赋值表达式,a等于3,表达式的值为2
(三)数据类型转换
1.不同数据类型的数据间的混合运算
整型、实型和字符型数据可以进行混合运算,在进行运算时,一般的数据类型先转换
成标准类型的数据。在运算过程中,每个数据都要转换为标准类型,以提高运算精度。例
如,如果一个数据是float型,首先应转换为double型;如果一个数据是shorl型或char
型,首先应转为int型。例如:
charchl='a';
shorta=67
ch3=ch2-a;
以上程序段首先将chi转换为int型,然后进行减法运算。
以上转换的过程是系统自动进行的,也可以称为隐式类型转换,下面将介绍的强制类
型转换又称为显示类型转换。
2.强制类型转换
强制类型转换是指将表达式的运算结果(即表达式的值)转换为指定类型。强制类型
转换的一般形式如下:
(类型说明符)表达式
例如:
inta;
(double)a;
将a的值转换为double型
说明:
对表达式进行强制类型转换时,表达式应该用括号括起来,否则会产生不同的结果,
如上面的例子所示。
(四)自增运算和自减运算
自增运算符++和自减运算-是C语言特有的单目运算,它们只能和一个单独的变量组
成表达式。自增、自减运算符使用的一般形式如表2-7所示。
其作用是使变量的值增1或减1,其中变量是指算术类型的变量。
x++和++x的相同之处是,单独作为一个表达式语句被使用时,无论执行哪•种表达
式,执行结束后x的值都增加L
注意事项
(1)自增运算符++和自减运算符-只能用于变量,不能用于常量和表达式。
(2)自增运算符++和自减运算符--的结合方向是“从右到左二优先级为14,仅次于
圆括号O
(3)自增运算和自减运算实质上是算术运算和变量赋值运算两种运算的结合。
(4)i++与++i的区别是:i++是先使用后加1,而++i是先加1后使用。
思考题、作
业、参考文献
课后
小结
授课时间第4、5次课,第____周星期一第_______节课时4+4
授课方式理论课J讨论课口习题课口实验课口上机课J技能课口其他口
授课题目顺序结构程序设计
1.掌握C语言中最常见的赋值语句的使用方法。
2.掌握各种数据类型变量的输入和输出的方法。
重点:赋值语句、输入和输出
重点与难点
难点:字符串的输入
教学基本内容
赋值运算符和赋值表达式
C语言采用赋值运算的方式改变变量的值,或者说为变量赋值。赋值运算符有一般形
式和复合形式两种。
(一)一般赋值运算符
赋值运算符是符号“=",它的作用是将一个数据赋给一个变量。由赋值运算符将一个
变量和一个表达式连接起来的式子称为赋值表达式。赋值表达式的一般形式如下:
变量二表达式
其作用是把赋值运算符右边表达式的值赋给赋值运算符左边的变量。例如:
a=l;
b=a;
a=b=c=2;
c=b+a
注意:
(1)赋值运算后,变量原来的值被表达式的值替换。
(2)赋值表达式的值也就是赋值运算符左边变量得到的值,如果右边表达式的值的
类型与左边变量的类型不一致,以左边变量的类型为基准,将右边表达式的值的类型无条
件的转换为左边变量的类型,相应的赋值表达式的值的类型与被赋值的变量的类型一致。
(3)赋值运算符的优先级很低,仅高于逗号运算符。结合方向为“从左到右”。
(二)复合赋值运算符
为使程序书写简洁和便于代码优化,可在赋值运算符的前面加上其它常用的运算符,
构成复合赋值运算符,相应地,由复合赋值运算符也可构成赋值表达式。
复合赋值运算符包括:
+=、-=>*=、/=、%=>«=%»=>&=、A=>|=
复合赋值运算表达式如表3/所示。
复合赋值其实是表达式语句的简写,比如
a+=b其实是a=a+b,只是为了书写方便而已。
表3-1复合赋值运算表达式________
复合赋值运算表达式等价于复合赋值运算表达式等价于
(算术运算)(位运算)
a+=ba=a+ba«=ba=a«b
a-=ba=a-ba»=ba=a»b
a*=ba=a*ba&=ba=a&b
a/=b
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 生物(内蒙古)-【八省联考】河南、山西、陕西、内蒙古、四川、云南、宁夏、青海八省2025年高考综合改革适应性演练联考试题和答案
- 《法国园林》课件
- 小学生一年级30以内加减法100题
- 高考新课标语文模拟试卷系列之63
- 《梅花岭记》课件
- 行政后勤治安防范措施
- 装饰行业采购经验分享
- 饮品店服务员工作心得
- 《温州地区特产》课件
- 装修行业监督装修工程卫生施工
- GB/T 1335.2-2008服装号型女子
- GB 31247-2014电缆及光缆燃烧性能分级
- DCC20网络型监视与报警
- 《简单教数学》读书心得课件
- 井底车场及硐室课件
- 小学生法制安全教育演讲稿6篇
- DL 5190.8-2019 电力建设施工技术规范 第8部分:加工配制
- 开放是当代中国的鲜明标识 教学设计-高中政治统编版选择性必修一
- 毕业设计(论文)-基于AT89C51单片机的温度控制系统设计
- 二手新能源汽车充电安全承诺书
- 幼儿园绘本故事:《想暖和的雪人》 课件
评论
0/150
提交评论