简单C程序设计_第1页
简单C程序设计_第2页
简单C程序设计_第3页
简单C程序设计_第4页
简单C程序设计_第5页
已阅读5页,还剩144页未读 继续免费阅读

下载本文档

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

文档简介

1、第2章 简单C程序设计2022/7/251解析C程序设计第2章 简单程序设计本章内容计算给定半径的圆周长和面积 计算输入半径的圆周长和面积 关键字与标识符 基本数据类型 常量与变量 基本表达式 C语句 格式化输入输出 预处理命令 C程序概貌 C程序的结构特点 书写C程序时应遵循的规则2022/7/252解析C程序设计第2章 简单程序设计首先分析第一个C程序#include /*预处理命令*/main() /*主函数*/ printf(hello,world!n); /*库函数,输出字符序列*/问题:(1)这个程序包括哪些组成部分?(2)这里显示的是字符序列,能不能显示数字数据呢?2022/7/

2、253解析C程序设计第2章 简单程序设计第一个C程序的组成预处理主函数main注释 2022/7/254解析C程序设计第2章 简单程序设计程序说明#include 告诉编译器在本程序中包含标准输入/输出库的信息。printf函数在stdio.h中声明。 main表示C语言的一个特殊函数,称之为主函数。每个C程序都必须有一个且只能有一个主函数,整个程序从主函数开始执行,最后结束于主函数。main()表示主函数的函数头。 “”中的内容是函数体。主函数中的所有操作(或语句)都在这一对“”之间。本程序的主函数中只有一条函数调用语句。“/* */”表示注释,不执行。 2022/7/255解析C程序设计第

3、2章 简单程序设计问题?第一个程序显示的是字符序列,能不能显示数字数据呢?C程序还可以包括哪些内容呢?下面仿照第一个C程序来编写其他程序。2022/7/256解析C程序设计第2章 简单程序设计问题的提出例2-1 编写C程序计算圆的周长和面积,并将结果输出到屏幕。 2022/7/257解析C程序设计第2章 简单程序设计问题的分析要计算圆面积和周长,务必知道圆半径,怎样才能获得呢?另外,要输出面积和周长(数值数据),该怎么办呢?下面我们进一步来分析第一个C程序的组成:2022/7/258解析C程序设计第2章 简单程序设计程序说明printf是C语言的库函数,功能是把要输出的内容送到显示器去显示。本

4、语句表示main函数将“Hello,World!n”作为参数调用库函数printf以显示字符序列。“n”代表示换行符。main和printf是系统预定义的标识符,分别表示主函数名和标准输出函数名。其中,main是不能改变其用途的,而printf是可以改变用途的。2022/7/259解析C程序设计第2章 简单程序设计主函数组成main() ; 函数头函数体C语句2022/7/2510解析C程序设计第2章 简单程序设计每条语句用分号“;”结束。 不是语句的,不能以分号结束,如预处理命令。2022/7/2511解析C程序设计第2章 简单程序设计printf库函数 在例中使用printf库函数输出了“

5、hello,world!n”字符序列。而在例2-1中要输出数值数据,其函数如何表示呢? printf库函数的一般形式: printf(格式控制字符串,输出项列表) 2022/7/2512解析C程序设计第2章 简单程序设计格式输出函数格式输出函数printf(格式控制字符串, 输出项表列);输出若干个任意类型的数据printf(a=%d b=%f, a, b); 函数名输出表列普通字符格式说明2022/7/2513解析C程序设计第2章 简单程序设计格式控制字符串格式控制字符串是用双引号引起来的字符串,它包括格式转换说明符和普通字符。 格式转换说明符由%、修饰符、格式字符组成,它的作用是将输出的数

6、据转换为指定的格式输出。 如:%f表示将数据按实数形式输出;普通字符按原样输出,如逗号、空格、提示信息等; 2022/7/2514解析C程序设计第2章 简单程序设计输出列表项输出列表项给出需要输出的一些数据,其个数必须与格式控制字符串中格式字符的个数一致。 例如:printf(area = %fn, 3.14159 * 5.3 * 5.3);表示原样显示“area =”,再按实数形式显示表达式“3.14159 * 5.3 * 5.3”的结果,并换行。2022/7/2515解析C程序设计第2章 简单程序设计源程序代码#include void main( )printf(area = %fn,

7、3.14159 * 5.3 * 5.3); /* 输出面积 */printf(circumference = %fn, 2 * 3.14159 * 5.3); /* 输出周长 */ 2022/7/2516解析C程序设计第2章 简单程序设计例2-1程序实现 下面仿照例1-3使用printf库函数实现例2-1,这里printf库函数输出实数。例2-1程序说明:include是预处理命令 void是系统定义的关键字,表示空类型include、stdio是系统定义的标识符3.14159和5.3是实型常量3.14159 * 5.3 * 5.3和2 * 3.14159 * 5.3是算术表达式%f是格式转换

8、说明符,表示表达式的结果按实数形式输出 2022/7/2517解析C程序设计第2章 简单程序设计例2-1程序说明void是系统定义的关键字,表示空类型,表示函数没有返回值;VC要求每个函数必须要写明返回值类型,如果没有,则是void。include、stdio是系统定义的标识符3.14159和5.3是实型常量3.14159 * 5.3 * 5.3和2 * 3.14159 * 5.3是算术表达式%f是格式转换说明符,表示表达式的结果按实数形式输出2022/7/2518解析C程序设计第2章 简单程序设计这里涉及到:关键字与标识符、基本数据类型、常量与变量、基本表达式、C语句、格式化输入输出等知识。

9、下面围绕解决这个问题所需要的知识进行介绍。2022/7/2519解析C程序设计第2章 简单程序设计C程序的基本组成主函数main标识符与关键字基本数据类型常量与变量基本表达式C语句格式化输入输出预处理命令注释 2022/7/2520解析C程序设计第2章 简单程序设计问题?前面反复提到标识符、关键字,什么是关键字、标识符呢?2022/7/2521解析C程序设计第2章 简单程序设计关键字与标识符关键字(Keyword) 又称为保留字,C语言中预先规定的具有固定含义的一些单词如:int,float等 标识符(Identifier)系统预定义标识符,如:main,printf,include,stdi

10、o 等 用户自定义标识符,如:r, Add, x, y 等2022/7/2522解析C程序设计第2章 简单程序设计关键字C语言中的常用的关键字(附录B)有以下32个:(1)类型名关键字:int、char、float、double、short、long、unsigned、void(2)存储类别关键字:auto、 static、 register、 extern(3)控制语句关键字:if 、while、 do 、goto、 break、 continue、 for、 default、 case、switch 、return、else (4)自定义类型关键字:struct、 union、 enum

11、(5)其他关键字:typedef、 sizeof 、 signed、include、define另外,Turbo C2.0扩展关键字有: asm,_cs,_ds,_es,_ss,cdecl,far, near,huge,interrupt,pascal2022/7/2523解析C程序设计第2章 简单程序设计标识符标识符分为:系统预定义标识符(如 main、printf 等)用户自定义标识符(如Add、r、x, y, sum等)在程序中使用的常量、变量、语句标号以及函数的名称等统称为标识符(Identifier)除库函数的函数名、头文件名和预处理命令由系统定义外,其余都由用户自定义2022/7/

12、2524解析C程序设计第2章 简单程序设计标识符标识符的命名必须遵守以下原则:(1)不能是C语言中的关键字,如int,do,for等等。(2)只能由字母,数字,和下划线三种字符组成,且第一个字符必须是字母或下划线。(3)不要太长。旧的ANSI C规定前6个字符有效;在IBM-PC的MSC系统中取8个字符;Turbo C则允许32个字符。(4)见名知义。区分大小写。 2022/7/2525解析C程序设计第2章 简单程序设计标识符举例合法的标识符 不正确的标识符 smart 5smart _decision bomb? key_board key.board FLOAT float Year200

13、8 a%2022/7/2526解析C程序设计第2章 简单程序设计注释符C 语言的注释符是以“/*”开头并以“*/”结尾的字符序列。在“/*”和“*/”之间的即为注释。注释在程序中起提示、解释程序的作用。注释可出现在程序中的任何位置。程序编译时,不对注释作任何处理。在软件开发过程中,还可以将注释用于程序的调试,暂时屏蔽一些语句。注释与软件的文档同等重要,要养成使用注释的良好习惯,这对软件的维护相当重要。如:/*LI2_1.c*/#include void main() printf(area = %fn, 3.14159 * 5.3 * 5.3); /* 输出面积 */ printf(circu

14、mference = %fn,2 * 3.14159 * 5.3);/* 输出周长 */2022/7/2527解析C程序设计第2章 简单程序设计数据类型(Data Type)数据为什么要区分类型?例2-1中“2 * 3.14159 * 5.3”的2为整数, 5.3和3.14159为实数,其范围不一样开辟不同的内存空间可以参加的运算不同不同类型的数据代表不同的数据表示形式合法的取值范围占用内存空间大小可参与的运算种类 2022/7/2528解析C程序设计第2章 简单程序设计在程序中指定数据的类型就是为了明确存储空间的大小,以便对内存中的数据进行操作!2022/7/2529解析C程序设计第2章 简

15、单程序设计数据类型树型结构数据类型基本类型构造类型指针类型空类型整型实型(浮点型)字符型枚举类型数组类型结构体类型共用体类型单精度实型双精度实型基本整型长整型短整型无符号整型2022/7/2530解析C程序设计第2章 简单程序设计基本数据类型整型int整数,在目前绝大多数机器上占4个字节。TC环境中是2个字节单精度实型float单精度浮点数,一般是4个字节长双精度实型double双精度浮点数,一般是8个字节长字符型char字符,一般是1个字节长用来表示256个ASCII字符,或者0255的整数枚举型enum2022/7/2531解析C程序设计第2章 简单程序设计基本数据类型的分类类型符号关键字

16、数的表示范围所占位数整型字符型实型有无(signed)int16-3276832767(signed)short16-3276832767(signed)long32-2147483648214748364716unsigned int0655353204294967295unsigned longunsigned short16065535有float323.4e-383.4e38有double641.7e-3081.7e308有char8-128127无unsigned char80255说明:数据类型所占字节数随机器硬件不同而不同,上表以IBM PC机为例。2022/7/2532解析C程

17、序设计第2章 简单程序设计类型长度占字节数随机器不同而不同,一般占一个机器字shortintlong可用下面运算测量:sizeof(数据或数据类型符或变量名)求出的结果为表达式值所属类型或者类型占用的字节数2022/7/2533解析C程序设计第2章 简单程序设计sizeof的应用 #include void main(void)printf(Data type Number of bytesn);printf(- -n);printf(char %dn, sizeof(char);printf(int %dn, sizeof(int);printf(short int %dn, sizeof(

18、short);printf(long int %dn, sizeof(long);printf(float %dn, sizeof(float);printf(double %dn, sizeof(double);2022/7/2534解析C程序设计第2章 简单程序设计数据类型修饰符在基本数值数据类型之前都可以加各种类型修饰符。2022/7/2535解析C程序设计第2章 简单程序设计数据类型修饰符shortshort int,短整数,一般2个字节长。通常简写为shortlonglong int,长整数,一般是4个字节长。通常简写为longlong double,长双精度(高精度)浮点数,一般是

19、10个字节长。signed用来修饰char、int、short和long,说明他们是有符号的整数(正整数、0和负整数)。一般缺省都是有符号的,所以这个修饰符通常省略unsigned用来修饰char、int、short和long,说明他们是无符号的整数(正整数和0)2022/7/2536解析C程序设计第2章 简单程序设计数据在内存中的存储格式 整型(以补码方式存储)实型(默认为double型,以浮点数指数形式存储)N=S2j字符型(存放ASCII码值 )阶码符号阶码的数值尾数符号尾数的数值阶码j尾数S2022/7/2537解析C程序设计第2章 简单程序设计如何选择恰当的数据类型?具体问题具体分析

20、,尽量选择取值范围较大些的数据类型1+2+3+1!+2!+3!+13+23+33+2022/7/2538解析C程序设计第2章 简单程序设计在例2-1中,将圆半径用一个实型变量r来存放,程序源代码如下:#include void main() float r = 5.3; /* 定义实数变量,以备后面使用 */printf(area = %fn, 3.14159 * r * r); /* 输出面积 */printf(circumference = %fn, 2 * 3.14159 * r); /* 输出周长 */2022/7/2539解析C程序设计第2章 简单程序设计【例2-3】求两个整数的和。

21、#include void main() int a=23,b=45; /* 定义两个整型变量 */ printf(sum=%dn, a+b); 其中,“%d”表示按十制整数输出。2022/7/2540解析C程序设计第2章 简单程序设计问题?如果我们希望将面积和周长、以及两数和保存起来,应该怎么办?2022/7/2541解析C程序设计第2章 简单程序设计数据的两种形式数据的表现形式有两种:常量变量在上述程序中,常量(常数):5.3、23、45变量:r、a、b2022/7/2542解析C程序设计第2章 简单程序设计常量与变量常量是一种在程序中保持固定类型和固定值的数据。编译系统从数据形式上可以区

22、分(除枚举类型外)。常量分为:整型常量实型常量字符常量字符串常量枚举常量变量是在程序执行过程中可以改变。2022/7/2543解析C程序设计第2章 简单程序设计整型常量整型常量十进制:18、-31long int型常量 123l、123L、123456l、123456Lunsigned int型常量 123u、 123U根据实际数据大小确定int型还是long型2022/7/2544解析C程序设计第2章 简单程序设计八进制与十六进制常量以数字“0”开始的整型常量是八进制数022、-037010和10大小不一样因为八进制并不常用,所以此种表示法比较少见以“0 x”或者“0X”开始的整型常量是十六

23、进制AF和af用来表示十进制的1015十六进制的形式比较常用0 x12、-0 x1F, -0 x1f2022/7/2545解析C程序设计第2章 简单程序设计整型常量的几种形式三种形式:十进制整数:由数字09和正负号表示.如 123,-456,0八进制整数:由数字0开头,后跟数字07表示.如0123,011十六进制整数:由0 x开头,后跟09,af,AF表示. 如0 x123,0Xff例 12 与 12L例 30000 为int型 65536 为long int 型整型常量的类型根据其值所在范围确定其数据类型在整常量后加字母l或L,认为它是long int 型常量问题:0123 = ( )100

24、 x123 = ( )100Xff = ( )1083291255问题:0123 = ( )100 x123 = ( )100Xff = ( )102022/7/2546解析C程序设计第2章 简单程序设计实型常量实型常量十进制小数形式 :123.45、456.78指数形式 :1e-2、4.5e3float型常量 123.45f、 456.78F、1e-2f、4.5e3Flong double型常量 123.45l、 456.78L、4.5e3L缺省为double2022/7/2547解析C程序设计第2章 简单程序设计字符(Character)常量字符常量的表示方法a,A,5,%,$单引号内只能

25、有一个字符,除非用“”开头就是一个普通整数,也可以参与各种数学运算每个字符具有一个0255之间的数值,可从ASCII表查出注意:5和整数5的区别字符的数学运算在密码学内用得比较多用“”开头的字符为转义字符例如,n,代表1个字符附录A2022/7/2548解析C程序设计第2章 简单程序设计字符常量转义符转义字符一些特殊字符(无法从键盘输入或者另有它用)用转义字符表示转义字符含义nvradddtbf“xhh转义字符含义换行垂直制表回车响铃单引号3位8进制数代表的字符水平制表退格换页反斜线双引号2位16进制数代表的字符2022/7/2549解析C程序设计第2章 简单程序设计例2-4 转义符举例/*L

26、I2_4.c*/#include void main(void) printf(*ntABC 123n abc 321tbn*n);2022/7/2550解析C程序设计第2章 简单程序设计字符串(String)常量用双引号括住的由0个或多个字符组成的字符序列I am a string表示空字符串转义字符也可以在字符串中使用引号只作为字符串开始和结束的标志C语言内部用0表示字符串的结束除注释外,是唯一可以出现中文的地方x和x是不同的里定义了一系列专门的字符串处理函数2022/7/2551解析C程序设计第2章 简单程序设计为什么需要常量?假如不使用常量,直接使用常数,有什么影响?程序的可读性变差容

27、易发生书写错误修改麻烦常量只能在定义时赋值,以后不能再改变其值符号常量(宏常量)枚举常量常数、符号常量和枚举常量,都可以用来表示一个永远不会改变的数建议不要直接使用常数,而用后二者代替2022/7/2552解析C程序设计第2章 简单程序设计符号常量也可以用标识符代表常量,称为符号常量。其定义格式为:#define 符号常量 常数或字符序列2022/7/2553解析C程序设计第2章 简单程序设计符号常量符号常量也称宏常量一般采用大写字母表示 不是语句,而是一种编译预处理命令宏替换使用字符序列替换 2022/7/2554解析C程序设计第2章 简单程序设计求圆面积和圆周长另解/*求圆面积和圆周长*/

28、#include #define PI 3.14159#define R 1.5void main(void)printf(area = %fn, PI * R * R);printf(circumference = %fn, 2 * PI * R);area = 7.068577circumference = 9.4247702022/7/2555解析C程序设计第2章 简单程序设计源代码#include #define PI 3.14159void main() float r=5.3; printf(area = %fn, PI * r * r); printf(circumference

29、 = %fn, 2 * PI * r);2022/7/2556解析C程序设计第2章 简单程序设计枚举(Enumeration)常量枚举即一一列举,枚举类型描述一组有限个整型数据值的集合。例子: enum weeks SUN, MON, TUE, WED, THU, FRI, SAT; enum weeks today; enum response no, yes, none; enum response answer; today = TUE; answer = yes; if (answer = yes) printf(Today is Tuesday.n); else printf(Tod

30、ay is NOT Tuesday.n);2022/7/2557解析C程序设计第2章 简单程序设计变量概念:其值可以改变的量三要素:变量名、变量值、存储单元使用变量的基本原则变量必须先定义,后使用所有变量必须在第一条可执行语句前定义存储单元的地址使用&获取3a变量名变量值存储单元2022/7/2558解析C程序设计第2章 简单程序设计定义变量变量初始化:定义时赋初值 例: int a,b,c; float data;决定分配字节数和数的表示范围合法标识符例: int a=2,b,c=4; float data=3.67; char ch=A; int x=1,y=1,z=1; int x=y=

31、z=1;变量的使用:先定义,后使用例 int student; stadent=19; /Undefined symbol statent in function main 例 float a,b,c; c=a%b; /Illegal use of floating point in function main 变量定义位置:一般放在函数开头main() int a,b=2; float data; a=1; data=(a+b)*1.2; printf(“data=%fn”,data);变量定义可执行语句main() int a,b=2; a=1; float data; data=(a+b

32、)*1.2; printf(“data=%fn”,data);编译程序根据变量定义为其分配指定字节的内存单元.地址int a=1, b=-3,c;abc2字节2字节2字节地址地址.内存1-3随机数变量定义的一般格式: 数据类型 变量1,变量2,变量n;2022/7/2559解析C程序设计第2章 简单程序设计【例2-3】求两个整数的和。#include void main() int a=23,b=45; /* 定义两个整型变量 */ int sum; /* 定义存放结果的整型变量 */ sum=a+b; /* 赋值语句 */ printf(sum=%dn,sum); /* 显示程序运算结果 *

33、/ 其中,“%d”表示按十制整数输出。2022/7/2560解析C程序设计第2章 简单程序设计整型变量例 int i=10,j,k; j=1; /* 赋值语句 */ k=20; /* 赋值语句 */ printf(“%dn”,sizeof(int); /*结果为?*/ printf(“%dn”,sizeof(i); /*结果为?*/ printf(“%dn”,sizeof(long); /*结果为?*/ printf(“%dn”,sizeof(10L); /*结果为?*/2022/7/2561解析C程序设计第2章 简单程序设计整型变量分类有符号整型变量 基本型:一般占2个字节(16位),int

34、 短整型:一般占2个字节(16位),short int 长整型:一般占4个字节(32位),long int 有符号整型变量使用signed修饰,但缺省的数据类型即表示有符号整型数据,因此可以省略修饰符signed。无符号整型变量 无符号基本型:一般占2个字节(16位),unsigned int 无符号短整型:一般占2个字节(16位),unsigned short int 无符号长整型:一般占4个字节(32位),unsigned long int11 11 11 11 11 11 11 11unsigned int型:最大:6553500 00 00 00 00 00 00 00最小:001 1

35、1 11 11 11 11 11 11int型:最大:3276710 00 00 00 00 00 00 00最小:-327682022/7/2562解析C程序设计第2章 简单程序设计整型变量取值范围 ANSI标准建议各种整型数据所占位数和数值范围如右表所示(TurboC与该表定义一致):注意: 在微机上用long型可以得到大范围的整数,但同时会降低运算速度,因此除非不得已,不要随便使用long型数据。类型名称比特数最小取值范围signed short int有符号短整型16-3276832767 即-215(215-1)signed int有符号基本整型16-3276832767 即-215

36、(215-1)signed long int有符号长整型32-2147483648-2147483647 即-231(231-1)unsigned short int无符号短整型16065535 即0(216-1)unsigned int无符号基本整型16065535 即0(216-1)unsigned long int无符号长整型3204294967295 即0(232-1)2022/7/2563解析C程序设计第2章 简单程序设计整型变量 有符号整数的范围-3276832767,无符号整数的范围065535。无符号整数使用unsigned修饰。在声明变量时,如果不指定unsigned或指定s

37、igned,则表示有符号型数据,符号位有效。如果指定unsigned,则表示无符号型数据,符号位为该数本身。032767有符号整型变量a:111111111111111符号位165535无符号整型变量c:111111111111111代表数据的第一位1-1有符号整型变量b:111111111111111如:int a,b;a=32767;b=-1;unsigned int c;c=65535;2022/7/2564解析C程序设计第2章 简单程序设计整型变量的溢出 一个int型变量的最大允许值为:32767。如果再加1,则结果会变成-32768。032767a:1111111111111111-

38、32768b:000000000000000例 :void main() int a=32767,b; long c; b=a+1; c=(long)a+1L; printf(“a=%d,b=%d,c=%ld”,a,b,c);运行结果为:32767,-32768,32768例 :void main() int x= -1; unsigned int y; y=x; printf(“%d,%d,%un”,x,y,y);运行结果为:-1,-1,65535 无符号数输出时,最高位数值变成符号位。如符号位为1,则输出负数。2022/7/2565解析C程序设计第2章 简单程序设计实型变量实型变量floa

39、t:占4字节,提供67位有效数字, 10-371038double:占8字节,提供1516位有效数字, 10-30710308例 float a; a=123456.123; /* a=123456.1 共7位*/ double b; b=123456.123; /* b=123456.123000000 共15位*/ printf(“%dn”,sizeof(float); /*结果为4*/ printf(“%dn”,sizeof(a); /*结果为4*/ printf(“%dn”,sizeof(double); /*结果为8*/ printf(“%dn”,sizeof(b); /*结果为8*

40、/2022/7/2566解析C程序设计第2章 简单程序设计实型变量的存储形式 一个实型变量在内存中是按浮点数指数形式存放的。系统把一个实型数据分成小数部分和指数部分,分别存放。不少C编译系统以24位表示小数部分(包括符号),以8位表示指数部分(包括指数的符号)。小数部分占的位(bit)数愈多,数的有效数字就越多,精度愈高。指数部分占的位数越多,则能表示的数值范围就越大。+.3141592+ .314159 * 102符号小数部分指数31.4159 如实数:31.4159的指数形式为:.314159*102 ,它在内存中的存放形式可以表示为右图所示。 图中用十进制表示的,实际上在计算机中是用二进

41、制来表示小数部分,用2的幂次来表示指数部分。1000 xx.xx阶符阶码数符尾数2022/7/2567解析C程序设计第2章 简单程序设计整型变量的溢出例: void main() float a,b; a=123456.789e5; b=a+20.0f; printf(“a=%fnb=%fn”,a,b);运行结果: a=12345678848.000000 b=12345678848.000000 输出结果是a与b相等。虽然理论上b应比a大20,应为12345678920。而实型变量只能保证7位有效数字,后面的数字是无意义的,并不准确地表示该数。 因此应该避免将一个很大的数和一个很小的数直接相

42、加或相减,否则就会“丢失”小的数。 同样,计算1.0/3.0*3.0的结果并不等于1。 由于实型变量是用有限的存储单元存储的,因此能提供的有效数字总是有限的,在有效位以外的数字将被舍去,由此可能会产生一些误差。2022/7/2568解析C程序设计第2章 简单程序设计实型数据的有效数字#include void main()float a;double b;a = 123456.789e4;b = 123456.789e4;printf(%fn%fn,a,b);1234567936.0000001234567890.000000 2022/7/2569解析C程序设计第2章 简单程序设计字符型数据

43、变量字符型变量字符变量存放字符ASCII码值,占一个字节char与int数据间可进行算术运算例:char a; int x,s; a=D; /* a=68; */ x=A+5; /* x=65+5; */ s=!+G /* s=33+71; */ printf(“%dn”,sizeof(char); /*结果为1*/ printf(“%dn”,sizeof(a); /*结果为1*/ printf(“%dn”,sizeof(x); /*结果为2*/没有字符串变量,用字符数组存放2022/7/2570解析C程序设计第2章 简单程序设计例2-6字符型变量用整型量赋值及输出/*LI2_6.c*/#in

44、clude void main() char a,b; a=120; /* 对字符变量赋以整型值*/ b=121; printf(%c,%cn,a,b); /*把字符变量按字符型量输出*/ printf(%d,%dn,a,b); /*把字符变量按整型量输出*/2022/7/2571解析C程序设计第2章 简单程序设计char型与int型之间的关系 例2-7:小写字母转换为大写字母 /*LI2_7.c*/#include void main() char a,b; a=x; b=y; a=a-32; /* char与int数据间可进行算术运算*/ b=b-32; printf(%c,%cn%d,%

45、dn,a,b,a,b);2022/7/2572解析C程序设计第2章 简单程序设计自动类型转换同种数据类型的运算结果,还是该类型不同种数据类型的运算结果,是两种类型中取值范围更大的那种long double double float long int short char2022/7/2573解析C程序设计第2章 简单程序设计自动类型转换规则doublefloatlongunsignedintchar,short低高说明:必定的转换运算对象类型不同时转换2022/7/2574解析C程序设计第2章 简单程序设计自动类型转换在进行赋值操作时,会发生类型转换将取值范围小的类型转为取值范围大的类型是安全

46、的反之是不安全的如果大类型的值在小类型能容纳的范围之内,则平安无事但是,浮点数转为整数,会丢失小数部分,非四舍五入反之,转换后的结果必然是错误的,具体结果与机器和实现方式有关。避免如此使用,好的编译器会发出警告2022/7/2575解析C程序设计第2章 简单程序设计自动类型转换例子例 char ch; int i; float f; double d;ch/i + f*d - (f+i)intintdoubledoubledoubledoubledoubledoubleintintdoubledoubledoubledoubledoubledouble10+a +i*f - d/l例 int

47、i; float f; double d; long l;2022/7/2576解析C程序设计第2章 简单程序设计类型强制转换(Casting)类型强制转换运算符“(类型)”消除从大到小的警告l = (long)i;可以通过“(类型)表达式”的方式把表达式的值转为任意类型强转时,你必须知道你在做什么强转与指针,并称C语言两大神器,用好了可以呼风唤雨,用坏了就损兵折将2022/7/2577解析C程序设计第2章 简单程序设计数据强制转换举例#include void main() int m = 5; printf(m / 2=%dn, m/2); printf(float)(m/2) = %fn

48、, (float)(m/2); printf(float)m/2 = %fn, (float)m/2); printf(m = %dn, m);m/2 = 2(float)(m/2) = 2.000000(float)m/2 = 2.500000m = 5精度损失问题较高类型向较低类型转换时可能发生2022/7/2578解析C程序设计第2章 简单程序设计运算符与表达式C运算符算术运算符:(+ - * / % + -)关系运算符:( = !=)逻辑运算符:(! & |)位运算符 :( | &)赋值运算符:(= 及其扩展)条件运算符:(?:)逗号运算符:(,)指针运算符:(* &)求字节数 :(s

49、izeof)强制类型转换:(类型)分量运算符:(. -)下标运算符:()其它 :(( ) -)2022/7/2579解析C程序设计第2章 简单程序设计学习运算符要特别注意运算符功能与运算量关系要求运算量个数要求运算量类型运算符优先级别结合方向结果的类型不要拘泥于细节不要死记硬背在使用中慢慢掌握2022/7/2580解析C程序设计第2章 简单程序设计基本算术运算符基本算术运算符: + - * / %结合方向:从左向右优先级: - -* / % - + - (2) (3) (4)说明:“-”可为单目运算符时,右结合性两整数相除,结果为整数;有一实数相除,结果为实数%要求两侧均为整型数据例 5/2

50、= -5/2.0 =例 5%2 = -5%2 = 1%10 = 5%1 = 5.5%2例 5/2 = 2 -5/2.0 = -2.5例 5%2 = 1 -5%2 = -1 1%10 = 1 5%1 = 0 5.5%2 ()2022/7/2581解析C程序设计第2章 简单程序设计算术表达式的概念用算术运算符将数值数据连接起来的有意义的式子称为算术表达式,它的书写形式与数学表达式的书写形式有一定的区别:2022/7/2582解析C程序设计第2章 简单程序设计算术表达式与数学表达式的区别C语言算术表达式的乘号(*)不能省略。例如:数学式bb-4ac,相应的C表达式应该写成:b*b-4*a*c。C语言

51、表达式中只能出现字符集允许的字符。例如,数学rr相应的C表达式应该写成:3.14159*r*r或PI*r*r(其中PI是已经定义的符号常量)。C语言算术表达式不允许有分子分母的形式。例如,(a+b)/(c+d)。C语言算术表达式只使用圆括号改变运算的优先顺序。可以使用多层圆括号,此时左右括号必须配对,运算时从内层括号开始,由内向外依次计算表达式的值。2022/7/2583解析C程序设计第2章 简单程序设计例2-10 表达式举例/*LI2_10.c*/#include void main() printf(%d,%dn,20/7,-20/7); printf(%f,%fn,20.0/7,-20.

52、0/7);2022/7/2584解析C程序设计第2章 简单程序设计赋值运算符及其表达式简单赋值运算符符号: =格式: 变量标识符=表达式作用:将一个数据(常量或表达式)赋给一个变量复合赋值运算符种类:+= -= *= /= %= = = &= = |=含义: exp1 op= exp2 exp1 = exp1 op exp2a+=3a=a+3x*=y+8x=x*(y+8)x%=3x=x%3例 a=3; d=func(); c=d+2;2022/7/2585解析C程序设计第2章 简单程序设计赋值运算符说明说明:结合方向:自右向左优先级: 14左侧必须是变量,不能是常量或表达式赋值表达式的值与变量

53、值相等,且可嵌套赋值转换规则:使赋值号右边表达式值自动转换成其左边变量的类型例 3=x-2*y; a+b=3;例 float f; int i; i=10; f=i;则 f=10.0例 int i; i=2.56; /*结果i=2;*/例: a=b=c=5 a=(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=2 */2022/7/2586解析C程序设计第2章 简单程序设计赋值

54、运算符说明说明:结合方向:自右向左优先级: 14左侧必须是变量,不能是常量或表达式赋值表达式的值与变量值相等,且可嵌套赋值转换规则:使赋值号右边表达式值自动转换成其左边变量的类型课堂练习: a=12; a+=a-=a*a例: int a=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)*/2022/7/2587解析C程序设计第2章 简单程序设计运算符及优先级(附录B)同一优先级的运算符件运算符优先级别相同,运算次序由结合方向决定。不同的运算符要求有不同的运算对象个数。从上表可大

55、致归纳出各类运算符的优先级如右边所示:位运算符的优先级比较分散,使用时最好加括号。优先级 运算符及其含义 结合方向 高低 1 ()(小括号) (数组下标) .(结构成员) -(指针型结构成员) 自左向右 最高 2 !(逻辑非) (位取反) -(负号) +(加1) -(减1) &(变量地址) 自右向左 1 (类型) *(指针所指内容) sizeof(长度计算) 3 *(乘) /(除) %(取模) 自左向右 2 4 +(加) -(减) 自左向右 2 5 (位右移) 自左向右 2 6 (小于) (大于) =(大于等于) 自左向右 2 7 =(等于) !=(不等于) 自左向右 2 8 &(位与) 自左

56、向右 2 9 (位异或) 自左向右 2 10 |(位或) 自左向右 2 11 &(逻辑与) 自左向右 2 12 |(逻辑或) 自左向右 2 13 ?:(?表达式) 自右向左 3 14 = += -= *= /= %= = .单目运算符关系运算符逻辑运算符(不包括!)条件运算符赋值运算符逗号运算符2022/7/2588解析C程序设计第2章 简单程序设计优先级能背下优先级表的人凤毛麟角用括号来控制运算顺序更直观、方便,并减少出错的概率2022/7/2589解析C程序设计第2章 简单程序设计C语句 控制语句:它完成一定的程序流程控制能力。C语言有9种控制语句: if() else (条件语句) fo

57、r() (循环语句) while() (循环语句) do while() (循环语句) continue (结束本次循环) break (中止执行switch或循环语句) switch (多分支选择语句) goto (转向语句) return (从函数返回语句) 声明语句:声明变量、函数等。 函数调用语句:由一个函数加一个分号就构成一个函数调用语句。 空语句:它是只有一个分号的语句,什么也不做。 复合语句:花括号内的所有语句总称为一个复合语句。 表达式语句:表达式语句是指由一个表达式构成的语句,表达式的最后加一个分号就构成了表达式语句,C语言程序中的语句大多数都是表达式语句。2022/7/25

58、90解析C程序设计第2章 简单程序设计如何在程序中给变量赋值?赋值表达式语句 赋值表达式; s= PI* r * r; Total = m * pow(1+r, n);pow()是什么库函数?2022/7/2591解析C程序设计第2章 简单程序设计库函数常用的标准数学函数(附录C)函数名功 能函数名功 能sqrt(x)计算x的平方根,x应大于等于0 exp(x)计算ex的值fabs(x)计算x的绝对值pow(x,y)计算xy的值log(x)计算lnx的值sin(x)计算sinx的值,x为弧度值log10(x)计算lgx的值cos(x)计算cosx的值,x为弧度值2022/7/2592解析C程序

59、设计第2章 简单程序设计在例2-1中,用实型变量来存放圆面积和周长:#include #define PI 3.14159void main() float r = 5.3,s,p; s= PI* r * r; p= 2 * PI * r;printf(area = %fn,s); printf(circumference = %fn,p);2022/7/2593解析C程序设计第2章 简单程序设计复合语句在什么情况下使用复合语句?分支语句和循环语句在语法上只允许带一条语句当分支和循环中需要进行多项操作时 t=x; x=y; y=t;被当作一条语句来处理2022/7/2594解析C程序设计第2章

60、 简单程序设计复合语句的例子#include void main() int a = 0; int a = 1; printf(In: a = %dn, a); printf(Out: a = %dn, a);In: a = 1Out: a = 02022/7/2595解析C程序设计第2章 简单程序设计空语句空语句有什么作用?什么也不做,只表示语句的存在自顶向下程序设计时用在那些未完成的模块中延时用的空循环void main() DataInitialze(); DataProcess(); DataOutput();void DataInitialze() ; 2022/7/2596解析C程

温馨提示

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

评论

0/150

提交评论