第3章最简单的C程序设计(1)_第1页
第3章最简单的C程序设计(1)_第2页
第3章最简单的C程序设计(1)_第3页
第3章最简单的C程序设计(1)_第4页
第3章最简单的C程序设计(1)_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

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

文档简介

1、3.1 顺序程序设计举例3.2 数据的表现形式及其运算3.3 C语句3.4 数据的输入输出3.1顺序程序设计举例 例3.1 有人用温度计测量出用华氏法表示的温度(如64 F,今要求把它转换为以摄氏法表示的温度(如17.8 C) 。解题思路:找到二者间的转换公式解题思路:找到二者间的转换公式)32(95fcf代表华氏温度代表华氏温度,c代表摄氏温度代表摄氏温度。算法:算法:输入f的值输出c的值)32(95fcN-S流程图流程图)32(95f#include int main ( ) float f,c; f=64.0; c=(5.0/9)*(f-32); printf(f=%fnc=%fn,f,

2、c); return 0; 定义定义f和和c为单精度浮点型变量为单精度浮点型变量指定指定f的值的值计算计算c的值的值输出输出f和和c的的值值#include int main ( ) float f,c; f=64.0; c=(5.0/9)*(f-32); printf(f=%fnc=%fn,f,c); return 0; 输出输出 例3.2 计算存款利息。有1000元,想存一年。有三种方法可选: (1)活期,年利率为r1 (2)一年期定期,年利率为r2 (3)存两次半年定期,年利率为r3 请分别计算出一年后按三种方法所得到的本息和。解题思路:确定计算本息和的公式。从数学知识可知:若存款额为p

3、0,则:活期存款一年后本息和为: p1=p0(1+r1)一年期定期存款,一年后本息和为: p2=p0(1+r2)两次半年定期存款,一年后本息和为: ) 23+)(123+p0(1=p3rr算法:输入p0,r1,r2,r3的值计算p1=p0(1+r1)计算p2=p0(1+r2)计算p3=p0(1+ )(1+ )输出p1,p2,p323r23r#include int main ( ) float p0=1000, r1=0.0036,r2=0.0225, r3=0.0198, p1, p2, p3; p1 = p0 * (1 + r1); p2 = p0 * (1 + r2); p3 = p0

4、* (1 + r3/2) * (1 + r3/2); printf(”%fn%fn%fn”,p1, p2, p3); return 0; 定义变量定义变量同时同时赋予初值赋予初值3.2 数据的表现形式及其运算3.2.1 常量和变量3.2.2 数据类型3.2.3 整型数据3.2.4 字符型数据3.2.5 浮点型数据3.2.6 怎样确定常量的类型3.2.7 运算符和表达式3.2.1 常量和变量1.常量:在程序运行过程中,其值不能被改变的量整型常量:如1000,12345,0,-345整型常量即整常数。在语言中,整常数可用以下整型常量即整常数。在语言中,整常数可用以下三种形式表示:三种形式表示:(1

5、)十进制整数。十进制整数。如:如:123, -456,4。(2)八进制整数。八进制整数。以数字以数字0开头开头的数是八进制数。的数是八进制数。 如:如:0123表示八进制数表示八进制数123,等于十进制数,等于十进制数83, -011表示八进制数表示八进制数-11,即十进制数即十进制数-9。(3)十六进制整数。十六进制整数。以以0 x开头开头的数是的数是16进制数。进制数。 如:如:0 x123,代表,代表16进制数进制数123,等于十进制数等于十进制数 291。 -0 x12等于十进制数等于十进制数-18。n实型常量实型常量十进制小数形式十进制小数形式:如如0.34 -56.79 0.0指数

6、形式指数形式:如如12.34e3 (代表代表12.34 103)分隔符可写分隔符可写e或或E分隔符前必须有数字,且其后必须为整数分隔符前必须有数字,且其后必须为整数 e4 12E2.5 n字符常量字符常量普通字符普通字符 (1)用用单引号单引号包含的包含的一个字符一个字符是字符型常量是字符型常量 (2)只能包含一个字符,不包括定界符只能包含一个字符,不包括定界符u普通字符常量区分大小写普通字符常量区分大小写u在计算机存储单元中存储时,并不是存储在计算机存储单元中存储时,并不是存储字符本身,而是以其字符本身,而是以其ASCII代码存储的代码存储的如字符常量如字符常量a的的ASCII码值是码值是9

7、7,故在存储,故在存储单元中存放的形式是单元中存放的形式是0000000001100001n字符常量字符常量转义字符转义字符n以字符以字符 开头的字符序列开头的字符序列 详见书本详见书本P40表表3.1例:例:101 表示字符表示字符A x41 也表示字符也表示字符A转义字符的使用转义字符的使用#include void main() printf(“abctderftgn”); printf(“htibbjkn”);显示屏上的运行结果:显示屏上的运行结果: fgde hjkn字符串常量字符串常量:如如”boy”一对双撇号括起来的字符序列一对双撇号括起来的字符序列合法的字符串常量合法的字符串常

8、量:“How do you do.”, “CHINA”, “a” , “$123.45”可以输出一个字符串,如可以输出一个字符串,如 printf(“How do you do.”);n符号常量符号常量:#define PI 3.1416用用#define指令,指定一个符号代表一个常量指令,指定一个符号代表一个常量书本书本P41“注意事项注意事项”例:符号常量的使用例:符号常量的使用#define PI 3.1416#include void main ( ) float r1,r2,r3,s1,s2,s3; r1=2; s1=PI * r1 * r1; printf(圆面积是:圆面积是:%f

9、n,s1);s2=PI * 优点:优点:含义清楚含义清楚,一改全改一改全改符号常量的值在其作用域内符号常量的值在其作用域内不能改变不能改变,也不能再被赋值。也不能再被赋值。说明:说明: PI代表常量代表常量3.1416,此后凡在本文件中出现的此后凡在本文件中出现的PI都代表都代表3.1416,可以和常量一可以和常量一样进行运算样进行运算说明:说明:如再用赋值语句给如再用赋值语句给PI赋值赋值是错的是错的 如如PI=3.1415926;2. 变量:变量代表内存中具有特定属性的一个存储单元,它用来存放数据,这就是变量的值在程序运行期间,变量的值是可以改变的n变量必须变量必须先定义先定义,后使用后使

10、用n定义定义变量变量时指定该变量的时指定该变量的名字名字和和类型类型n变量名变量名和和变量值变量值是是两个不同的概念两个不同的概念n变量名实际上是以一个名字代表的一个变量名实际上是以一个名字代表的一个存储地址存储地址n从变量中取值,实际上是通过变量名找到相应的从变量中取值,实际上是通过变量名找到相应的内存地址,从该存储单元中读取数据内存地址,从该存储单元中读取数据3.常变量:const int a=3;ua是一个整型变量,指定其值为3,在变量存在期间值不能改变u常变量是有名字的不变量,分配存储空间,程序运行期间一直存在u符号常量不分配存储空间,预编译时进行字符替换,预编译后不存在4.标识符标识

11、符:一个对象的名字一个对象的名字n语言规定标识符只能由语言规定标识符只能由字母字母、数字数字和和下划线下划线3种字符组成,且种字符组成,且第一个字符必须为字母或下划线第一个字符必须为字母或下划线n合法的标识符:合法的标识符:如如sum, SUM , average, _total, Class, day, BASIC, li_lingn不合法的标识符不合法的标识符:M.D.John,¥,¥123,33,3D64,ab大小写字母是不同的字符大小写字母是不同的字符注意:注意:n大小写敏感大小写敏感n在选择变量名和其它标识符时,应注意做到在选择变量名和其它标识符时,应注意做到“见见名知意名知意” 。

12、n变量名习惯用小写字母表示变量名习惯用小写字母表示n建议变量名的长度最好不要超过建议变量名的长度最好不要超过8个字符。个字符。n要求对所有用到的变量作强制定义,也就是要求对所有用到的变量作强制定义,也就是“先先定义,后使用定义,后使用” 。n不允许使用不允许使用关键字关键字作为标识符的名字作为标识符的名字 如如:int, float, for, while, if等(等(P378附录附录C)等级考试题等级考试题以下各组标识符中,均可以用作变量名以下各组标识符中,均可以用作变量名的一组是的一组是:na01 , IntnTable_1 , a*.1n0_a , W12A.int , floatA3

13、.2.2 数据类型所谓类型,就是对数据分配存储单元的安排,包括存储单元的长度(占多少字节)以及数据的存储形式不同的类型分配不同的长度和存储形式C语言允许使用的数据类型:基本类型枚举类型空类型派生类型u指针类型u数组类型u结构体类型u共用体类型u函数类型算术类型算术类型纯量类型纯量类型C语言允许使用的数据类型:基本类型u整型类型l基本整型 intl短整型 short intl长整型 long intl*双长整型 long long intl字符型 charl*布尔型 bool浮点浮点类型类型n单精度浮点型单精度浮点型 floatn双精度浮点型双精度浮点型 doublen复数浮点复数浮点型型 fl

14、oat_complex double_complex long long_complex3.2.3 整型数据1. 整型数据的分类最基本的整型类型u基本整型(int):占2个或4个字节u短整型(short int):VC+6.0中占2个字节u长整型(long int):VC+6.0中占4个字节u双长整型(long long int):C99新增的,一般分配8个字节nsizeof 运算符运算符测量类型或变量存储长度的(即存测量类型或变量存储长度的(即存储空间的字节数)储空间的字节数)n整型数据在内存中是以整型数据在内存中是以二进制补码形式二进制补码形式存储的存储的 如如: int i; /* 定义

15、为整型变量定义为整型变量 */ i=10; /* 给给i赋值整数赋值整数10 */ 注意:注意:十进制数十进制数10的二进制形式为的二进制形式为1010,Turbo C+ 3.0为一个整型变量在内存中分配为一个整型变量在内存中分配2个字节的存储单个字节的存储单元元(不同的编译系统为整型数据分配的字节数是不不同的编译系统为整型数据分配的字节数是不相同的,相同的,VC+ 6.0则分配则分配4个字节个字节)。)。 /数值是以补码数值是以补码(complement) 表示的。表示的。2. 整型变量的符号属性u整型变量的值的范围包括负数到正数l书本P45表3.2u可以将变量定义为“无符号”类型u扩充的整

16、型类型:扩充的整型类型:有符号基本整型 signed int;无符号基本整型 unsigned int;有符号短整型 signed short int;无符号短整型 unsigned short int;有符号长整型 signed long int;无符号长整型 unsigned long int ;*有符号双长整型 signed long long int; *无符号双长整型 unsigned long long int ;整型变量的定义与使用整型变量的定义与使用#include void main() int a,b,c,d; /*指定指定a,b,c,d为整型变量为整型变量*/ unsig

17、ned int u; /*指定指定u为无符号整型变量为无符号整型变量*/ a=12; b=-24; u=10; c=a+u; d=b+u; printf(”a+u=%d,b+u=%dn”,c,d);运行结果:运行结果: a+u=22,b+u= -14 整型数据的溢出整型数据的溢出#include void main() int a,b; a=32767; b=a+1; printf(“%d,%dn”,a,b);运行结果:运行结果: 32767,-32768说明:说明:数值是以补码表示数值是以补码表示的。一个整型变量只能容的。一个整型变量只能容纳纳-32768-327683276732767范围

18、内的范围内的数,无法表示大于数,无法表示大于3276732767或或小于小于-32768-32768的数。遇此情的数。遇此情况就发生况就发生“溢出溢出”。01111111111111111000000000000000等级考试题等级考试题nC语言系统中,如果一个变量能正确存储的语言系统中,如果一个变量能正确存储的数据范围为整数数据范围为整数 -32768 32767 ,则该变,则该变量在内存中占量在内存中占 个字节。个字节。23.2.4 字符型数据字符是按其代码(整数)形式存储的C99把字符型数据作为整数类型的一种字符型数据在使用上有自己的特点1.字符与字符代码大多数系统采用ASCII字符集u

19、字母:A Z,a zu数字:09u专门符号:29个:! ” # & ( ) *等u空格符:空格、水平制表符、换行等u不能显示的字符:空(null)字符(以0表示)、警告(以a表示)、退格(以b表示)、回车(以r表示)等字符1和整数1是不同的概念:u字符1只是代表一个形状为1的符号,在需要时按原样输出,在内存中以ASCII码形式存储,占1个字节u整数1是以整数存储方式(二进制补码方式)存储的,占2个或4个字节0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 00 0 0 0 0 0 0 12.字符变量用类型符char定义字符变量u char c = ?; 系统把“?”的ASCII代码6

20、3赋给变量cuprintf(”%d %cn”,c,c);u输出结果是: 63 ?向字符变量赋以整数向字符变量赋以整数#include void main() char c1,c2; c1=97; /相当于相当于c1a; c2=98; /相当于相当于c2b; printf(“%c %cn”,c1,c2); printf(“%d %dn”,c1,c2);运行结果:运行结果: a b 97 98等级考试题等级考试题设有声明设有声明 int value = 5 ;执行下列选项的赋值语句后,执行下列选项的赋值语句后,value的值不等的值不等于于5的是的是:nvalue = value 0 ;nvalu

21、e = value 0 x30 ;nvalue = value 49 ;A.value = value 060 ;C等级考试题等级考试题n已有声明已有声明 char ch=g ; 则表达式则表达式 ch = ch a + A 的值为字的值为字 符符 的编码。的编码。G3.2.5 浮点型数据浮点型数据是用来表示具有小数点的实数C语言中实数以指数形式存储的,类型有:float型(单精度浮点型)u编译系统为float型变量分配4个字节u数值以规范化的二进制数指数形式存放 参见书本图3.11系统把一个浮点型数据分成系统把一个浮点型数据分成小数部分小数部分和指数部分和指数部分,分别存放。,分别存放。浮点

22、型数据是用来表示具有小数点的实数float型(单精度浮点型)double型(双精度浮点型)u编译系统为double型变量分配8个字节u15位有效数字long double(长双精度)型#include void main() float a,b; a = 123456.789e5; b = a + 20 ; printf(“%fn”,b); 说明:说明:一个浮点型变量只一个浮点型变量只能保证的有效数字是能保证的有效数字是7 7位有位有效数字,后面的数字是无效数字,后面的数字是无意义的,并不准确地表示意义的,并不准确地表示该数。应当避免将一个很该数。应当避免将一个很大的数和一个很小的数直大的数和

23、一个很小的数直接相运算,否则就会接相运算,否则就会“丢丢失失”小的数小的数运行结果:运行结果: 12345678848.00000012345678848.000000例例:浮点型数据的舍入误差:浮点型数据的舍入误差3.2.6 怎样确定常量的类型字符常量:由单撇号括起来的单个字符或转义字符字符串常量:由双撇号括起来的字符序列整型常量:不带小数点的数值u系统根据数值的大小确定int型还是long型等浮点型常量:凡以小数形式或指数形式出现的实数uC编译系统把浮点型常量都按双精度处理u分配8个字节整型常量的类型整型常量的类型n一个整常量后面加一个字母一个整常量后面加一个字母u或或U,认为是,认为是u

24、nsigned int型,如型,如12345u,在内存中按,在内存中按unsigned int规定的方式存放规定的方式存放(存储单元中存储单元中最高位不作为符号位,而用来存储数据最高位不作为符号位,而用来存储数据)。如果写成如果写成-12345u,则先将,则先将-12345转换成转换成其补码其补码53191,然后按无符号数存储。,然后按无符号数存储。n在一个整常量后面加一个字母在一个整常量后面加一个字母l或或L,则认,则认为是为是long int型常量。例如:型常量。例如: 123l , 432L , 0L浮点型常量的类型浮点型常量的类型C编译系统将浮点型常量作为双精度来处理。编译系统将浮点型

25、常量作为双精度来处理。例如:例如:f = 2.45678 * 4523.65 系统先把系统先把2.45678和和4523.65作为双精度数,作为双精度数,然后进行相乘的运算,得到的乘也是一个双精然后进行相乘的运算,得到的乘也是一个双精度数,最后取其前度数,最后取其前7位赋给浮点型变量位赋给浮点型变量f。如是。如是在数的后面加字母在数的后面加字母f或或F(如(如1.65f, 654.87F),),这样编译系统就会把它们按单精度(这样编译系统就会把它们按单精度(32位)位)处理。处理。等级考试题等级考试题u在在Turbo C 3.0 系统中,若将实型常系统中,若将实型常量量1.5存储在内存中,它占

26、用存储在内存中,它占用 个个字节。字节。8等级考试题等级考试题以下不可作为以下不可作为C语言常量的是语言常量的是:n020n1ULn0 x41n0 xfeA.x2aC3.2.7 运算符和表达式1.基本的算术运算符:+ :正号运算符(单目运算符) - :负号运算符(单目运算符)* :乘法运算符/ :除法运算符% :求余运算符+ :加法运算符 - :减法运算符说明两个实数相除的结果为双精度实数两个整数相除的结果为整数u如5/3的结果值为,舍去小数部分u如果除数或被除数中有一个为负值,舍入方向不固定。例如,-5/3,有的系统中得到的结果为-1,在有的系统中则得到结果为-2uVC+采取“向零取整”的方

27、法 如5/3=1,-5/3=-1,取整后向零靠拢% 运算符要求参加运算的运算对象(即操作数)为整数,结果也是整数。如8%3,结果为22. 自增、自减运算符:作用是使变量的值加或减u+i,-i:在使用i之前,先使i的值加(减)1ui+,i-:在使用i之后,使i的值加(减)1+i是先执行是先执行i=i+1后,再使用后,再使用i的值;的值;i+是先使用是先使用i的值后,再执行的值后,再执行i=i+1。例如:例如:i=3 j=+i; i的值先变成的值先变成4, 再赋给再赋给j , i、j的值均为的值均为4 j=i+; 先将先将 i的值的值3赋给赋给j , j的值为的值为3,然后,然后i变为变为4i+与

28、与+i的区别:的区别: (1)自增运算符自增运算符(+),自减运算符,自减运算符(-),只,只能用于变量,而不能用于常量或表达能用于变量,而不能用于常量或表达式,式, (2)+和和-的结合方向是的结合方向是“自右至左自右至左”。自增(减)运算符常用于循环语句中使循环自增(减)运算符常用于循环语句中使循环变量自动加。也用于指针变量,使指针指变量自动加。也用于指针变量,使指针指向下一个地址。向下一个地址。注意:注意: (3)语言中有的运算符为一个字符,有语言中有的运算符为一个字符,有的运算符由两个字符组成的运算符由两个字符组成 ,为避免误解,为避免误解,最好采取大家都能理解的写法。最好采取大家都能

29、理解的写法。例如例如:不要写成不要写成i+j的形式,而应写成的形式,而应写成 (i+)+j的形式的形式 等级考试题等级考试题已有声明已有声明 int a =3 , b=4 , c ;则执行语句则执行语句 “ c = 1/2 * ( a+b ) ”; 后,后,c的值是的值是:A. 0 B. 3 C. 3.5 D. 4A等级考试题等级考试题以下程序段在编译时不会报错的是以下程序段在编译时不会报错的是:A. #define double 2 void main() double a=0; C. #define a 2 void main() a+; DB. #define a 2 void main

30、() int a=0; D. #define a 2 int x = a ; void main() x+; 3. 算术表达式和运算符的优先级与结合性:用算术运算符和括号将运算对象(也称操作数)连接起来的、符合语法规则的式子,称为算术表达式运算对象包括常量、变量、函数等语言规定了运算符的优先级和结合性u在表达式求值时,先按运算符的优先级别高低次序执行,例如先乘除后加减。 u算术运算符的结合方向为“自左至右”,即先左后右 。u详见附录D4.不同类型数据间的混合运算:(1)+、-、*、/ 运算的两个数中有一个数为float或double型,结果是double型。系统将float型数据都先转换为do

31、uble型,然后进行运算(2)如果int型与float或double型数据进行运算,先把int型和float型数据转换为double型,然后进行运算,结果是double型(3)字符型数据与整型数据进行运算,就是把字符的ASCII代码与整型数据进行运算混合运算:混合运算:在进行运算时,不同类型的数据要在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算先转换成同一类型,然后进行运算.说明:说明: 这种类型转换是由这种类型转换是由系统自动进行的。系统自动进行的。 例3.3 给定一个大写字母,要求用小写字母输出。解题思路:解题思路:u关键是关键是找到大找到大、小写字母间小写字母间的的内在联系内在联系u同一个字母,用小写表示的字符的同一个字母,用小写表

温馨提示

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

评论

0/150

提交评论