版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、程序设计概述 C语言程序设计教程第1章第1页,共1010页。目录 | CONTENTS什么是程序设计计算机的组成程序设计语言程序设计过程01020304第2页,共1010页。什么是程序设计 程序设计就是教会计算机去完成某一特定的任务,即设计出完成某个任务的程序 。程序设计包括以下几个阶段:算法设计:设想计算机是如何一步一步完成这个任务 编码:用计算机认识的语言,如C+语言,描述这个完成任务的过程 编译与调试:检验程序是否正确,达到预期的目标01OPTION02OPTION03OPTION第3页,共1010页。目录 | CONTENTS什么是程序设计计算机的组成程序设计语言程序设计过程01020
2、304第4页,共1010页。计算机,也被称之为“电脑”,是一种能够按照事先存储的程序自动、高效地对数据进行输入、处理、存储和输出的系统。计算机的组成硬件计算机软件第5页,共1010页。目录 | CONTENTS计算机的组成02硬件软件第6页,共1010页。计算机的组成硬件存储器输入设备输出设备控制器运算器CPU第7页,共1010页。计算机的组成存储器保存正在运行的程序代码和数据内存的最小单元是bit,一般8个bit组成一个byte,若干个byte组成一个Word在一般的机器中,内存按字节编址,内存大小也是按字节计量关机后,内存的数据全部丢失第8页,共1010页。计算机的组成CPUCPU (Ce
3、ntral Processing Unit) 有两个部件组成:控制器Control unit 运算器ALU Arithmetic-Logic Unit第9页,共1010页。计算机的组成控制器控制器控制计算机的其余部分如何完成程序的指令。指挥内存和其它部件之间的信息的传送(包括信息和指令)。指挥CPU和输入输出设备之间的控制信息的传送。第10页,共1010页。计算机的组成控制器中的信息存储寄存器PC程序计数器指令寄存器IR第11页,共1010页。计算机的组成控制器的工作取下一条指令:按PC指定的地址到内存中取出下一条指令,存入IR。解码指令:将指令解码成一系列的控制信号。如果需要的话,到内存取数
4、据。执行指令:将控制信号发送给运算器,执行相应的运算。第12页,共1010页。计算机的组成运算器的组成寄存器一组存放正在运算的数据的寄存器逻辑电路执行控制器发出的控制信号第13页,共1010页。计算机的组成运算器可以执行的运算加、减、乘、除算术运算比较两个数据以及完成与、或、非之类的运算逻辑运算第14页,共1010页。计算机的组成输入输出设备输入设备将人能理解的符号转换成计算机能处理的符号。常用的输入设备有:键盘、鼠标、光笔等。输出设备将计算机的输出转换成人能理解的输出。常用的输出设备有:显示器、打印机、音响设备等。01OPTION02OPTION第15页,共1010页。目录 | CONTEN
5、TS计算机的组成硬件软件02第16页,共1010页。计算机的组成计算机软件软件可以分为系统软件和应用软件系统软件居于计算机系统中最靠硬件的部分,它将计算机的用户与硬件隔离。系统软件与具体的应用无关,但其他的软件要通过系统软件才能发挥作用。常用的系统软件有操作系统、编译器、网络软件等。第17页,共1010页。计算机的组成计算机软件应用软件是为了支持某一应用而开发的软件。如字处理软件、财务软件等。第18页,共1010页。目录 | CONTENTS什么是程序设计计算机的组成程序设计语言程序设计过程02030401第19页,共1010页。程序设计语言 智能语言 过程化语言 汇编语言 机器语言第一代低级
6、语言第二代低级语言第三代高级语言第四代高级语言第20页,共1010页。程序设计语言机器语言一组二进制数表示的指令。每种计算机都有自己的机器语言。用机器语言写程序是非常困难的,读机器语言写的程序也是非常困难的。第21页,共1010页。程序设计语言汇编语言用缩写和助记符代替机器语言中的比特串。与机器语言的指令一一对应和机器语言一样,不同类的机器有不同的汇编语言。汇编程序将汇编语言写的程序翻译成机器语言的程序。第22页,共1010页。程序设计语言过程化语言将过程化语言写的程序(源代码)翻译成机器语言的程序(目标代码)。编译器逐句解释源程序并执行,不保存目标代码。解释器类似于英语的语言无法直接运行,需
7、要一个翻译。有两种翻译方式第23页,共1010页。程序设计语言第三代语言的特点具备了一定的机器独立性,使用户可以专注于解决问题的方法。但某些方面还是受到机器的限制。为了解决移植性问题,ANSI制订了一系列的标准。第24页,共1010页。程序设计语言主要的过程化语言FORTRAN:FORmula TRANslatorBASIC/Visual BASICCOBOL: COmmon Business-Oriented Language ADAPASCALC/C+JAVA第25页,共1010页。程序设计语言智能语言也称为面向问题的语言用于解决特定问题如:SQL语言第26页,共1010页。目录 | CO
8、NTENTS什么是程序设计计算机的组成程序设计语言程序设计过程02030401第27页,共1010页。目录 | CONTENTS程序设计过程算法编码04编译与链接调试与维护第28页,共1010页。程序设计过程算法解决问题的过程。算法的特点:A表述清楚、明确,无二义性。B可行性。即每一步骤都切实可行。C有限性,即可在有限步骤后得到结果。第29页,共1010页。程序设计过程算法的表示算法的表示伪代码和PAD图等方法结构化流程图传统的流程图自然语言第30页,共1010页。程序设计过程流程图符号开始或结束框输入输出框选择框处理框连接点流程线第31页,共1010页。设计一个算法,求两个整数相除的商开始c
9、=a/b输入整数 ab0输入整数 b结束输出“除数不能为零”输出 cTF流程图第32页,共1010页。NS图ABABTF条件条件ABCase 1Case 2当P为真AA直到P为真/当P为真第33页,共1010页。设计一个算法,求两个整数相除的商输入整数a输入整数b b0 输出“除数为0”c = a / bT输出cF第34页,共1010页。程序设计过程伪代码伪代码是介于自然语言和程序设计语言之间的一种表示方法。通常用程序设计语言中的控制结构表示算法的流程,用自然语言表示其中的一些操作。第35页,共1010页。设计一个算法,求两个整数相除的商输入整数a,输入整数bif (b0) c = a/b;
10、输出c; else 输出“除数为0”;第36页,共1010页。目录 | CONTENTS程序设计过程算法编码04编译与链接调试与维护第37页,共1010页。程序设计过程本课程采用C语言C语言是由贝尔实验室在B语言的基础上开发的,并有美国国家标准组织和国际标准化组织进行了标准化。用程序设计语言表示算法。第38页,共1010页。目录 | CONTENTS程序设计过程算法编码04编译与链接调试与维护第39页,共1010页。程序设计过程将高级语言翻译成机器语言。编译逐句翻译并执行。解释执行:全部翻译成机器指令。编译执行:第40页,共1010页。程序设计过程编译main() int i, s;i=1;s
11、=0;0110001011101001Source programObject programC compiler第41页,共1010页。程序设计过程将目标代码与工具的目标代码捆绑在一起。链接第42页,共1010页。程序设计过程compiler01101010001000目标文件01101010001000其他目标文件/库函数linker011010100010000101010010001000010101可执行文件源文件main()编译过程第43页,共1010页。目录 | CONTENTS程序设计过程算法编码04编译与链接调试与维护第44页,共1010页。程序设计过程程序的调试:找出程序中
12、的错误并改正程序中的错误:逻辑错误称为bug,找出逻辑错误的过程称为debug。由编译器找出这些错误。语法错误:程序中的语句不符合C语言语法可以利用调试工具。逻辑错误:算法有问题第45页,共1010页。程序设计过程程序的调试集成的编程环境一般都包含如下几种调试:单步执行断点设置变量跟踪第46页,共1010页。学有所获第1章第47页,共1010页。程序设计概述 C语言程序设计教程第2章第48页,共1010页。目录 | CONTENTS一个简单的C语言程序C语言的开发环境0102第49页,共1010页。一个简单的C语言程序/* 文件名: 2-1.c 用标准公式求解一元二次方程 */#include
13、 #include int main() double a, b, c, x1, x2, dlt; printf(请输入方程的3个系数:); scanf(%lf %lf %lf, &a, &b, &c); dlt = b * b - 4 * a * c; x1 = (-b + sqrt(dlt) / 2 / a; x2 = (-b - sqrt(dlt) / 2 / a; printf(x1=%f x2=%fn, x1, x2); return 0;注释编译预处理命令主程序第50页,共1010页。注释C语言的注释是从/*与*/之间所有的文字都是注释,可以是连续的几行。 注释是写给人看的,而不是
14、写给计算机的。 程序注释 :从整体描述程序操作过程 注释也可以出现在主程序中,解释主程序中一些比较难理解的部分。 给程序添加注释是良好的程序设计风格 。一个简单的C语言程序第51页,共1010页。编译预处理C语言的编译分成两个阶段:预编译和编译01预编译处理程序中的预编译命令,即那些以#开头的指令 。预编译02此编译预处理主要有“库包含”用#include实现,表示程序使用了某个库。预编译指令一个简单的C语言程序第52页,共1010页。库包含的格式预编译库是预先做好的一些工具程序。 每个库要提供一个接口,告诉库的用户如何使用库提供的功能。 库包含就是把库的接口文件放入源文件,以便编译器检查程序
15、中对库的调用是否正确。一个简单的C语言程序第53页,共1010页。库包含的格式#include “filename”包含了一个用户自定义的库预编译#include 包含了一个系统库一个简单的C语言程序第54页,共1010页。主程序预编译主程序由一个或多个函数组成。 函数是一系列独立的程序步骤,这些程序步骤集合在一起,并赋予一个名字。 每个程序都必须有一个名为main的函数,它是程序的入口。一个简单的C语言程序第55页,共1010页。函数的构成预编译int main() double a, b, c, x1, x2, dlt; printf(请输入方程的3个系数:); scanf(%lf %lf
16、 %lf, &a, &b, &c); dlt = b * b - 4 * a * c; x1 = (-b + sqrt(dlt) / 2 / a; x2 = (-b - sqrt(dlt) / 2 / a; printf(x1=%f x2=%fn, x1, x2); return 0;函数头函数体一个简单的C语言程序第56页,共1010页。函数头预编译说明函数和外界的交流。 形式:返回类型 函数名(参数表)。 可以把函数想象成数学中的函数。参数表是一组自变量,返回类型是函数值的类型。一个简单的C语言程序第57页,共1010页。函数头预编译返回类型 函数名(参数表)函数的输出值的类型函数的名字。
17、程序可以通过函数名执行函数体的语句。函数的输入形式:返回类型 函数名(参数表)。 一个简单的C语言程序第58页,共1010页。函数体预编译函数如何完成预定功能的过程。它说明了如何从输入(参数)得到输出的(返回值)的过程。可以把它想象成数学中的函数表达式。一个简单的C语言程序第59页,共1010页。函数体的组成int main() double a, b, c, x1, x2, dlt; printf(请输入方程的3个系数:); scanf(%lf %lf %lf, &a, &b, &c); dlt = b * b - 4 * a * c; x1 = (-b + sqrt(dlt) / 2 /
18、a; x2 = (-b - sqrt(dlt) / 2 / a; printf(x1=%f x2=%fn, x1, x2); return 0;变量定义输入阶段计算阶段输出阶段一个简单的C语言程序第60页,共1010页。函数的组成变量定义:为一些在程序编写时值未知的数据预约它们的存放处 。输入阶段 :获取执行时才能确定的用户数据。计算阶段 :由输入推导出输出的过程。通常通过各种计算得到。输出阶段:显示程序执行的结果。 输入过程一般包括两步 :显示提示信息和读取数据。一个简单的C语言程序第61页,共1010页。目录 | CONTENTS一个简单的C语言程序C语言的开发环境0102第62页,共10
19、10页。VS2010是Windows下的集成开发环境。12345VS2010的安装程序输入编译链接程序的运行调试C语言的开发环境第63页,共1010页。学有所获C语言程序设计教程第2章第64页,共1010页。顺序程序设计C语言程序设计教程第3章第65页,共1010页。目录 | CONTENTS常量与变量数据的输入输出0102算术运算03赋值运算04信息表示05第66页,共1010页。常量与变量编写程序时已经确定且在程序运行过程中不会修改的值。编写程序时尚未确定且在程序运行过程中可以改变的值。常量变量第67页,共1010页。目录 | CONTENTS常量与变量01变量定义数据类型常量与符号常量变
20、量赋初值第68页,共1010页。常量与变量变量定义变量, 也称为对象变量定义: 给尚未确定的值指定一个代号 给尚未确定的值准备存储空间 变量有三个重要属性:名称、值、类型 。变量定义就是告诉编译器变量的名字及该变量中可以存放哪一类数据类型的值。第69页,共1010页。常量与变量变量定义格式类型名 变量名1,变量名2,变量名n;在C语言中,每个变量在使用前必须被定义,以便编译器检查变量使用的合法性。如: int num1, num2; double area;第70页,共1010页。常量与变量变量命名名字必须以字母或下划线开头。C语言中,名字中出现的大写和小写字母被看作是不同的字符,因此ABC,
21、Abc,abc是三个独立的变量名。名字中的其它字符必须是字母、数字或下划线,不得使用空格和其它特殊符号。02OPTION01OPTION第71页,共1010页。常量与变量变量命名名字不可以是系统的保留词,如:int, double, for, return等,它们在C语言中有特殊用途C语言没有规定过名字的长度,但各个编译系统都有自己规定。名字应使读者易于明白其存储的值是什么,做到“见名知意”。05OPTION03OPTION04OPTION第72页,共1010页。目录 | CONTENTS常量与变量01变量定义数据类型常量与符号常量变量赋初值第73页,共1010页。常量与变量数据类型数据类型包
22、括两个方面:数据的取值范围可用的操作第74页,共1010页。常量与变量数据类型C语言中的数据类型分为两大类:构造数据类型数组、结构、联合和枚举基本数据类型整型、浮点型、字符型和布尔型第75页,共1010页。常量与变量数据类型基本类型整型实型字符型双精度数double单精度数float标准字符型 char无符号字符型 unsigned char第76页,共1010页。数据类型整型长整型标准整型短整型无符号长整型unsigned long有符号长整型long int/long有符号标准整型int无符号标准整型unsigned int无符号短整型unsigned short有符号短整型short i
23、nt/short常量与变量第77页,共1010页。目录 | CONTENTS整型实型字符型各类型数据占用的空间数据类型第78页,共1010页。常量与变量数据类型整型处理整数的工具。允许的操作:算术运算、比较大小等。第79页,共1010页。数据类型整型整型数的表示范围:由各个编译器指定。整型数有三种存储方式,在VS2010中占用的空间如下所示:长整型longlong / long int 4 byte (PC)基本型 int 4 byte (PC) 231(2311) 短整型 short 2 byte (PC) -215(2151)常量与变量第80页,共1010页。无符号整数在某些应用中,不可能
24、出现负数,则整型数中有一半的数值范围是被浪费的。因此在C语言中可以将所有的数都看成正整数,称为无符号数。无符号数的定义:可在各种整数类型前加上关键词unsigned,如下所示。unsigned int0232-1unsigned short065535unsigned long0232-1常量与变量第81页,共1010页。目录 | CONTENTS整型实型字符型各类型数据占用的空间数据类型第82页,共1010页。实型数实型数的分类:单精度float、 双精度double实型数的机内表示:尾数*2指数 将存储实数的单元分成两个部分,一部分存储尾数,一部分存储指数。单精度占用4字节双精度占用8字节
25、常量与变量第83页,共1010页。截断误差:由于尾数部分位数不够,使数值部分丢失有时一个十进制转化成二进制数时小数点后会无限循环,如0.3对应的二进制数为0.01001 1001 1001 1001 ,因此尾数无法精确表示,这称为截断误差。实型数在计算机中不能精确表示,只是一个近似值。因此,最好不要判两个实型数相等。常量与变量第84页,共1010页。目录 | CONTENTS整型实型字符型各类型数据占用的空间数据类型第85页,共1010页。字符类型:字符类型名char存放一个字母或符号,占一个字节,存放的是字符的内码。常量与变量第86页,共1010页。字符的机内表示:用数字编码每一个字符ASC
26、II码的重要特性数字0到9是连续编码的字母被分成二段:大写的和小写的。大写字母是连续编码的,小写字母也是连续编码的。常用的有:ASCII,EBCDIC等。但PC机中都用ASCII。常量与变量第87页,共1010页。目录 | CONTENTS整型实型字符型各类型数据占用的空间数据类型第88页,共1010页。sizeof 运算符用来了解某一类型或某一表达式占用的内存量。了解占用的内存量sizeof 运算符的用法sizeof(类型名) 或 sizeof(表达式) 例如: sizeof(float) :float类型的变量占用的内存量 sizeof(a+15) :表达式 a+15 的计算结果所占的内存
27、量。常量与变量第89页,共1010页。目录 | CONTENTS常量与变量01变量定义数据类型常量与符号常量变量赋初值第90页,共1010页。目录 | CONTENTS整型常量实型常量字符型常量字符串常量常量与符号常量符号常量第91页,共1010页。整型常量整型常量可用十进制、八进制和十六进制表示。十进制123, -234八进制0123十六进制0 x123, 0 x3a2f一旦定义了一个整型变量,可以将一个整型常量赋给该整型变量。如:int a;a=123; 或 a = 0 x123; 都是正确的常量与变量第92页,共1010页。目录 | CONTENTS整型常量实型常量字符型常量字符串常量常
28、量与符号常量符号常量第93页,共1010页。浮点数常量浮点数常量有两种表示法:A十进制表示1.23 3.14 -5.988B科学计数法123e2=12300 2.25e-3=0.00225 尾数*10指数 尾数e指数注意:尾数不能为空 e3 1e3指数必须为整数 2.5e2.3是非法的常量与变量第94页,共1010页。目录 | CONTENTS整型常量实型常量字符型常量字符串常量常量与符号常量符号常量第95页,共1010页。可打印字符非打印字符小写字母大、写字母、数字、标点符号、空格等。换行和报警字符或响铃 等控制字符。常量与变量字符常量分为:可打印字符和非打印字符第96页,共1010页。可打
29、印字符的使用:用一对单引号括起来如: a, S, 2常量与变量第97页,共1010页。可打印字符的使用常量与变量赋值:char c1, c2; c1=a;c2=b; c1=97; c2= 98; 比较c=9和c=9?第98页,共1010页。可打印字符的使用常量与变量运算:如:c1 = a; c1 = c1 + 2; c1的值应为?如:c中存放的是小写字母,则c - a + 1表示什么? 如:c中存放的是数字(0 9则c - 0表示什么?如:c1, c2存放的是小写字母,则c2 - c1表示什么? 第99页,共1010页。转义字符一些非打印字符用转义序列表示。每个转义序列以“”开头,字符“”则被
30、称为转义字符。常量与变量第100页,共1010页。常用的转义字符常量与变量字符形式含义n换行t水平制表b退一格r回车f换页第101页,共1010页。常用的转义字符运算常量与变量字符形式含义”“ddd1到3位八进制数代表的字符xhh1到2位十六进制数代表的字符第102页,共1010页。目录 | CONTENTS整型常量实型常量字符型常量字符串常量常量与符号常量符号常量第103页,共1010页。字符串常量运算由一系列字符组成的序列称为字符串。如 : printf( hello, worldnhello, everyonen)当双引号作为字符串的一部分时,必须写成转义序列。例如,语句 printf(
31、Bother, said Pooh.n);中的第二、三个双引号是字符串的一部分,不是字符串开始或结束标记。该语句的输出为: Bother, said Pooh.常量与变量第104页,共1010页。目录 | CONTENTS整型常量实型常量字符型常量字符串常量常量与符号常量符号常量第105页,共1010页。符号常量运算给有意义的常数取一个名字。符号常量的命名与变量相同,但通常用大写字母。含义清楚,提高了程序的可读性。在需要改变一个常量时能做到“一改全改”。常量与变量第106页,共1010页。符号常量的定义常量与变量用编译预处理命令#define实现#define 符号常量 字符串如#define
32、 PI 3.14预编译时,用字符串取代程序中的符号常量。程序中的PI都会被改写成3.14第107页,共1010页。符号常量的定义常量与变量存在的问题 所定义的符号常量无法进行类型检查。#define的处理只是简单的字符串的替换,可能会引起一些意想不到的错误。如:#define A 3+5x = A * 2的结果是13,而不是16。第108页,共1010页。目录 | CONTENTS常量与变量01变量定义数据类型常量与符号常量变量赋初值第109页,共1010页。变量赋初值运算在C语言中,变量定义只是给变量分配相应的空间 。C语言允许在定义变量的同时给变量赋初值 。定义变量时没有赋初值,然后直接引
33、用该变量是危险的! 常量与变量第110页,共1010页。变量赋初值可以给被定义的变量中的一部分变量赋初值,如:int sum = 0, count = 0, num;格式:类型名 变量名 = 初值;如:int count = 0; 常量与变量第111页,共1010页。目录 | CONTENTS常量与变量数据的输入输出0102算术运算03赋值运算04信息表示05第112页,共1010页。目录 | CONTENTS数据的输入输出02字符输入输出格式化输出格式化输入第113页,共1010页。数据的输入输出字符的输入输出从键盘读取一个字符或将一个字符显示在显示器上。字符输入输出函数: 输入用getch
34、ar函数输出用putchar函数第114页,共1010页。数据的输入输出putchar函数用法:putchar(字符常量或字符变量) 例: 将字符a显示在显示器上:putchar(a); 让显示器的光标移到下一行的第一列: putchar(n); 将字符类型的变量ch的值显示在显示器上:putchar(ch);第115页,共1010页。数据的输入输出getchar函数用法:ch = getchar();执行到getchar函数,程序暂停,等待用户的输入。键盘上输入完信息后,只有在按Enter键才能被程序读到。Enter本身也是一个字符,也可以被getchar读取。注意第116页,共1010页。
35、编写一程序,从键盘读入2个字符并将输入字符回显在显示器上117 #include int main() char c1, c2; c1 =getchar(); c2 =getchar(); putchar(c1); putchar(c2); return 0;大部分人的写法:实际结果: A A预想结果: A B AB执行结果是什么?第117页,共1010页。编写一程序,从键盘读入2个字符并将输入字符回显在显示器上118 分析:执行到第二个getchar时,缓冲区中的a已被读取,但Enter仍在缓冲区中。于是第二个getchar读入了字符Enter。第一个putchar输出了a,第二个putch
36、ar输出了回车,程序结束。第118页,共1010页。解决方案 #include int main() char c1, c2; c1 =getchar(); c2 =getchar(); putchar(c1); putchar(c2); return 0;方案一:原来的程序方案一运行时ABAB第119页,共1010页。解决方案int main() char c1, c2; c1 =getchar(); getchar(); c2 =getchar(); putchar(c1); putchar(c2) return 0;方案二:方案二运行时ABAB第120页,共1010页。目录 | CONT
37、ENTS数据的输入输出02字符输入输出格式化输出格式化输入第121页,共1010页。数据的输入输出格式化输出将各种类型的数据显示在显示器上。格式化输出函数 printf第122页,共1010页。数据的输入输出printf函数用法printf(格式控制字符串,输出列表); 例: 输出各类整型数的长度printf(“%d %d %dn”, sizeof(long int), sizeof(int), sizeof(short);输出结果:4 4 2printf(“%d %d %dn”, sizeof(long int), sizeof(int), sizeof(short);执行过程:第123页,
38、共1010页。格式控制字符格式控制字符功能说明d, i以带符号的十进制形式输出整数(正数不输出符号)o以八进制无符号形式输出整数X, x以十六进制无符号形式输出整数。X表示以大写字母输出十六进制中a到z,x表示以小写字母输出a到zu以无符号十进制输出整数c输出一个字符数据的输入输出第124页,共1010页。格式控制字符格式控制字符功能说明s输出字符串f以十进制小数形式输出实数E, e以科学计数法输出实数。E表示科学计数法中的e用大写表示。e表示科学计数法中的e用小写表示。G, g选用%f和%e中输出宽度较短的形式输出。不输出无意义的0s输出字符串数据的输入输出第125页,共1010页。例3.6
39、 编写一程序,以各种数制输出十进制数12380,以十进制和科学计数法输出123.45678126 #include int main() int iint = 12380; double ddouble = 123.4567891; printf(“12380的十进制为:%d,八进制为:%o,十六进制为:%xn, iint, iint, iint); printf(123.4567891的十进制为:%f, 科学计数法为:%en, ddouble, ddouble); return 0;输出:12380的十进制为:12380, 八进制为:30134,十六进制为:305c123.4567891的十
40、进制为:123.456789, 科学计数法为:1.234568e+002第126页,共1010页。附加的格式控制字符格式控制字符功能说明l输出长整型,可加在d、o、x、u字符前面,形成ld、lo、lx、lum指定输出数据的宽度,即在屏幕上占据的空间。.n指定实数输出时的小数部分的位数-指定输出宽度时,输出的数据向左对齐l用于输出长整型,可加在d、o、x、u字符前面,形成ld、lo、lx、lu数据的输入输出第127页,共1010页。目录 | CONTENTS数据的输入输出02字符输入输出格式化输出格式化输入第128页,共1010页。格式化输入数据的输入输出从键盘读取各种类型的数据。格式化输入函数
41、输入函数:scanf scanf函数的用法scanf(格式控制字符串,地址列表);第129页,共1010页。scanf函数数据的输入输出 例: 输入一个整型数到整型变量iint scanf(“%d”, &iint);。执行过程 printf(“%d %d %dn”, sizeof(long int), sizeof(int), sizeof(short);scanf(“%d : %d: %d”, &a, &b, &c);如果输入: 5:7:3, 则a的值是5,b的值是7,c的值是3第130页,共1010页。例3.7 利用格式化输入输出实现八进制到十进制和十六进制的转换。131 #include
42、 int main() int iint; printf(请输入一个八进制数:); scanf(%o, &iint); printf(八进制 %o 的十进制为:%d, 十六进制为:%xn”, iint, iint, iint); return 0;输入数据:输出结果:十进制:127十六进制为:7F八进制:177第131页,共1010页。例3.8 以格式“HH:MM:SS”输入时间,以“HH时MM分SS秒”的格式输出132 #include int main() int hh, mm, ss; printf(“input time: HH:MM:SS:”); scanf(%d:%d:%d, &h
43、h, &mm, &ss); printf(“%d时%d分%d秒n”, hh, mm, ss); return 0;解决方案:利用格式控制字符串中的其他字符在输入时必须原式原样输入。第132页,共1010页。附加的格式控制字符格式控制字符功能说明l用于输入长整型及double型数据。如 : %ld、%lo、%lx、%lu、%lf、%leh用于输入短整型,如%hd、%ho、%hxN(常数)指定输入数据所占的宽度*指定的输入项在读入后不赋给对应的变量数据的输入输出特别注意,double类型的数据的输入用%lf第133页,共1010页。附加控制字符的应用指定输入宽度数据的输入输出运行结果:123456
44、123#include int main() int int1; scanf(%3d, &int1); printf(%d n, int1); return 0;第134页,共1010页。目录 | CONTENTS常量与变量数据的输入输出0102算术运算03赋值运算04信息表示05第135页,共1010页。算术表达式算术运算计算是计算机提供的最基本的功能,算术表达式是完成此功能的工具。算术表达式组成算术运算符运算对象第136页,共1010页。算术表达式算术运算算术运算符:+ - * / %除“-”外,所有的算术运算符都是二元运算符。“-”可为二元运算,也可为一元运算。优先级:高 * / %,低
45、 + -结合性:左结合运算对象可以是整型、浮点型、字符型第137页,共1010页。例3.11 编写一程序,输入两个整型变量a和b的值,输出a除b的商和余数。138 #include int main() int a, b; printf(请输入2个整数:); scanf(%d %d, &a, &b); printf(%d/%d的商是%d, 余数是%d n, a, b, a/b, a%b); return 0;第138页,共1010页。应用算术表达式的注意事项算术运算乘号不能省略。出现除法时注意括号的应用。如:在写算术表达式时,为使表达式更加清晰,一般在运算符前后各插一个空格。应写为: ( a
46、+ b ) / (c * d ) 或 ( a + b) / c / d但不能写成: (a + b ) / c *d 或 a + b / c * d第139页,共1010页。转换规则char和short这些非标准的整数在运算前都必须转换为int。int和float运算时,将int转换成float。int和long运算时,将int转换成long。int和double运算时,将int转换成double。float和double运算时,将float转换成double各种类型的数据的混合运算算术运算在进行运算前,将运算数转为同一类型。第140页,共1010页。检验自动类型转换算术运算#include i
47、nt main() short sint = 5; int iint = 10; double ddouble = 12.3; printf(%d %d %d %d n, sizeof(sint+sint), sizeof(sint+iint), sizeof(iint+ddouble), sizeof(3.7+sint); return 0;输出:4 4 8 8第141页,共1010页。强制类型转换算术运算赋值和算术运算时会执行自动类型转换如:要想使4/5的结果是0.8,而不是0,该怎么办?可以将其中一个写成浮点数。例如:4.0 / 5或4 / 5.0int x = 4, y = 5; 要想
48、使x/y的结果为0.8而不是0,该怎么办?答案是:用强制类型转换第142页,共1010页。强制类型转换算术运算格式: (类型名)(表达式) 或 类型名 (表达式)例如,要想使两个整型变量x和y出的结果为double型,可以用下列语句double z;z = (double)x / y; 考虑:如果写为 z = (double)(x / y)的结果如何?第143页,共1010页。 #include int main()int x, y;printf(请输入两个整型数:);scanf(%d%d, &x, &y);printf(%fn, (double)x/y - x/y);return 0;例3.
49、14 编写一个程序,输出两个整数相除后的小数部分。144 第144页,共1010页。数学函数库算术运算在C语言中,其他的数学运算都是通过函数的形式来实现。所有的数学函数都在math中。要使用这些数学函数,必须在程序头上写上编译预处理命令: #include 第145页,共1010页。math的主要内容算术运算绝对值函数 int abs(int x) ; double fabs(double x)ex double exp(double x)xy double pow(double x, double y) double sqrt(double x) ln x double log(double
50、 x)log10 x double log10(double x)第146页,共1010页。math的主要内容算术运算绝对值函数 int abs(int x) ; double fabs(double x)三角函数 double sin(double x) double cos(double x) double tan(double x)反三角函数 double asin(double x) double acos(double x) double atan(double x)第147页,共1010页。目录 | CONTENTS常量与变量数据的输入输出0102算术运算03赋值运算04信息表示0
51、5第148页,共1010页。目录 | CONTENTS赋值运算04赋值表达式赋值的嵌套复合的赋值运算自增、自减运算第149页,共1010页。变量赋值赋值运算变量赋值是通过赋值表达式实现,赋值表达式格式: = 作用:将右边的表达式的值存入左边的变量, 整个表达式的值是右边的表达式的结果。注意:x = x + 2是正确的表达式,赋值运算符是右结合的。左值(lvalue):在C语言中,能出现在赋值运算符左边的表达式称为左值。赋值语句:赋值表达式后面加上分号。第150页,共1010页。赋值时的自动类型转换 赋值运算当表达式的结果类型和变量类型不一致时,系统会将右边的表达式的结果转换成左边的变量的类型,
52、再赋给左边的变量。转换规则:01OPTION02OPTION实型数 - 整型:舍弃小数部分。 整型数 - 实型数:数值不变,但以浮点的形式保存在相应的变量中 。double - float:截取前面七位有效数字存放到float变量中。03OPTION第151页,共1010页。赋值时的自动类型转换 赋值运算float - double:将有效位扩展到16位。字符型 - 整型变量:将字符型数据放入整型变量的最后一个字节。如果所用系统将字符处理成无符号量,则前面补0。如果所用系统将字符处理成有符号量,则扩展符号。 整型 - 字符类型:直接将整型数据的最低八位赋给字符变量。 04OPTION05OPT
53、ION06OPTION第152页,共1010页。目录 | CONTENTS赋值运算04赋值表达式赋值的嵌套复合的赋值运算自增、自减运算第153页,共1010页。赋值的嵌套赋值运算将赋值表达式作为更大的表达式的一部分 。如:a = (x = 6) + (y = 7) 等价于分别将x 和 y 的值设为6 和 7,并将6和7相加,结果存于变量a 。赋值运算符=的优先级比算术运算符低 。第154页,共1010页。多重赋值赋值运算a = b = c = 5 给a, b, c均赋值5 当用到多重赋值时,要保证所有的变量都是同类型的,以避免在自动类型转换时出现与预期不相符的结果的可能性。如变量d定义为dou
54、ble,变量i定义为int,语句:d = i = 1.5;结果:i等于1,d等于1.0 。 第155页,共1010页。目录 | CONTENTS赋值运算04赋值表达式赋值的嵌套复合的赋值运算自增、自减运算第156页,共1010页。复合赋值运算赋值运算其他运算符与赋值运算符结合的运算符称为复合赋值运算符 。常用:+=,-=,*=,/=,%= 如: balance += deposit; balance -= surcharge; x /= 10; salary *=2; 变量 op = 表达式; 等价于:变量 = 变量 op 表达式;第157页,共1010页。目录 | CONTENTS赋值运算0
55、4赋值表达式赋值的嵌套复合的赋值运算自增、自减运算第158页,共1010页。自增、自减运算符赋值运算自增、自减运算符:+,- - 相当于+=1和-=1, 它有前缀和后缀两种用法:前缀:+k, - -k后缀:k+, k- -但含义有所不同。如:k=3 表达式K值J值j=k+K=4j=3j=+kK=4 j=4J=k-K=2j=3J=-k K=2j=2第159页,共1010页。目录 | CONTENTS常量与变量数据的输入输出0102算术运算03赋值运算04信息表示05第160页,共1010页。目录 | CONTENTS信息表示05数制间的转换整数的表示实数的表示第161页,共1010页。数制信息表
56、示 计算机内部采用的是二进制十进制二进制八进制十六进制基数102816数字符号0 - 90,10 - 70 9,A,B,C,D,E,F第162页,共1010页。数制间的转换信息表示 十进制整数转换成非十进制整数采用“除基取余法”,即将十进制数逐次除以需转换为的数制的基数,直到商为0为止,然后将所得到的余数自下而上排列即可。第163页,共1010页。数制间的转换信息表示 十进制转换成二进制余数2551227121312612302110(55)10=(101111)2第164页,共1010页。数制间的转换信息表示 十进制转换成八进制余数85578660(55)10=(67)8第165页,共101
57、0页。数制间的转换信息表示 十进制转换成十六进制余数16 55716 630(55)10=(37)16第166页,共1010页。数制间的转换信息表示 十进制小数转换成非十进制小数采用“乘基取余法”,即将十进制小数逐次乘以基数,直到小数部分的当前值等于0为止,然后将所得到的整数自上而下排列即可。第167页,共1010页。数制间的转换信息表示 将十进制小数0.625转换为二进制小数0.625整数 2 1.251 0.25 2 0.50 2 1.01换算结果(0.625)10=(0.101)2第168页,共1010页。数制间的转换信息表示非十进制转换成十进制采用“位权法”,即把各非十进制数按权展开,
58、然后求和。(10101.101)2=1*24+0*23+1*22+0*21+1*20 +1*2-1+0*2-2+1*2-3如:把二进制数0101.101转换成十进制数。第169页,共1010页。数制间的转换信息表示二进制转换成八进制:按三位一组二进制转换十六进制:按四位一组第170页,共1010页。目录 | CONTENTS信息表示05数制间的转换整数的表示实数的表示第171页,共1010页。整型数的表示码制信息表示如何将符号位数字化。0表示正数,1表示负数。数字的三种编码方式为:原码A补码C)反码B第172页,共1010页。原码信息表示用符号位和数值表示带符号数。正数的符号位为0,负数的符号
59、位为1。存储时,最高位表示符号,其他位是数组绝对值的二进制表示。如用一个字节表示数值:62原=0 0111110-62原=1 0111110第173页,共1010页。反码信息表示正数的反码与原码相同,负数的反码为该数的绝对值的原码取反。如:62反=0 0111110-62反=1 1000001第174页,共1010页。补码信息表示正数的补码与原码相同,负数的补码为该数的反码加1。如:0的补码表示是唯一的大多数计算机系统都用补码表示整数。62补=0 0111110-62补=1 1000010 11111111+ 1 1 00000000 11000001+ 1 11000010第175页,共10
60、10页。整数的内部表示信息表示整数在计算机内部通常用补码表示,在VS2010中也是如此。整数运算时要注意数据的表示范围。如整数用两个字节表示时,正整数 32767 加 1 的结果为 -32768。这称为整数运算的溢出,系统不检查这样的错误,程序员必须自己保证程序中不出现这样的错误。第176页,共1010页。#include int main()printf(-10的补码是:%xn, -10);printf(10的补码是:%xn, 10);printf(0的补码是:%xn, 0);return 0;例3.20 编写一程序,验证C语言中的整数是用补码表示177 程序的输出是:-10的补码是:fff
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 现浇楼盖 课程设计
- 2025年度地下空间开发个人工程劳务分包合同范本4篇
- 2024年心理咨询师题库附答案(典型题)
- 二零二五版门卫服务外包与社区安全防范系统承包4篇
- 2025年度草坪围栏施工与智慧城市建设合同3篇
- 植筋胶施工方案
- 二零二五年度棉花品牌建设与推广合同4篇
- 2024酒店宴会厅租赁与客户服务协议版B版
- 地板砖拆除施工方案
- 工地跳板挡墙施工方案
- 10kV架空线路专项施工方案
- OGSM战略规划框架:实现企业目标的系统化方法论
- 辽宁省大连市中山区2023-2024学年七年级下学期期末数学试题
- 2023年版《安宁疗护实践指南(试行)》解读课件
- 2024年新课标高考化学试卷(适用黑龙江、辽宁、吉林地区 真题+答案)
- AQ6111-2023个体防护装备安全管理规范
- 钴酸锂-安全技术说明书MSDS
- 江苏省“大唐杯”全国大学生新一代信息通信技术大赛省赛题库(含答案)
- (正式版)JBT 9229-2024 剪叉式升降工作平台
- 如何做好谈话笔录
- 偏头痛的治疗及护理
评论
0/150
提交评论