您好,欢迎访问三七文档
简单C程序设计2回顾程序是为执行一项任务而编写的有序指令集C程序的特点C语言的组成C程序的编译和运行过程编译器将源程序转换成机器能理解的程序连接器用于连接相关的目标文件以生成可执行程序3本章要点C语言的数据类型、运算符C语言的常量和变量C语言的表达式常用数学函数4#includestdio.hintmain(){intcelsius,fahr;fahr=100;celsius=5*(fahr-32)/9;printf(“fahr=%d,celsius=%d\n“,fahr,celsius);}执行程序的输出结果为:fahr=100,celsius=372.1温度转换例2.1求华氏温度100F对应的摄氏温度52.1.1内存内存可以理解为一排井然有序的小开关,每个开关有两个状态:开表示1,断表示0,所以每个开关表示一个二进制数,0或1,称为一个位(bit).为管理方便,8个位为一组,称为一个字节(byte)然后为所有字节从0开始编号,这个编号称为字节的地址2的10次方(1024)个字节称为1k2的20次方(1048576)个字节称为1M2的30次方(1073741824)个字节称为1G62.1.2变量intcelsius,fahr;celsius=5*(fahr-32)/9;变量是计算机里一块特定的内存,它由一个或多个连续的字节组成。每个变量都有一个名称,表示内存中的这个位置,以便通过变量名读取该位置的数据或存储一个新数值。变量的值不是固定的,随时都可以改变,且次数不限。7编写程序时,通常使用变量来存储数据,方便后面使用这个数据或者修改这个数据的值。变量程序内存存储fahr计算5*(fahr-32)/9将值存储为celsius10032输出fahr和celsius8内存变量用来存储数据,系统需要知道每个变量要存储什么类型的数据,然后为每个变量分配一块足够大的内存空间,用来该类型的数据2.1.3数据类型数据属于不同类别AfricaThequickbrownfoxTRUE数据非数值数值整型非整型9002.129999/12/20032.175123JackieChanchar数据类型非数值数值整型intshortintlongintdoublefloat非整型9整型变量类型shortint2个字节-2-15至215-1,-32768至+32767整数变量还分为几种不同的类型,以存储不同范围的整数int4个字节-2-31至231-1,-2147438648至+2147438647longint4个字节-2-31至231-1,-2147438648至+2147438647__int64longlongint8个字节-2-63至263-11、数据类型所占字节数,取决于所使用的编译器2、shortint可以简写为short,longint可以简写为long3、不同编译器对64位的支持不同,在VC中只支持__int64,gcc/g++支持longlong,windows平台的gcc/g++也支持__int6410无符号的整数类型unsignedshortint2个字节0至216-1,0至+65535unsignedint4个字节0至232-1,0至+4294967295unsignedlongint4个字节0至232-1,0至+4294967295unsigned__int64unsignedlonglongint8个字节0至264-1,0至18445744073709551615当处理不能为负的数据时,可以使用无符号类型,所占内存与有符号型相同,但对正数的表示范围比有符号型大一倍112.1.4变量的声明和使用声明变量:intcelsius,fahr;定义时初始化变量:intcelsius,fahr=100;定义后初始化变量:fahr=100;。给变量赋值,除了给一个直接的值以外,还可以通过计算获得如:celsius=5*(fahr-32)/9;12变量的命名规则在C语言中,变量命名需要遵循一定的规则有效名称principalcost_pricemarks_3lastnamecity无效名称123ratecurrency$discount%zipcode变量的命名规则:变量名可以由字母、数字和_(下划线)组合而成变量名不能包含除_以外的任何特殊字符,如:%、#、逗号、空格等变量名必须以字母或_(下划线)开头变量名不能包含空白字符(换行符、空格和制表符称为空白字符)C语言中的某些词(例如int和float等)称为保留字,具有特殊意义,不能用作变量名C语言区分大小写,因此变量price与变量PRICE是两个不同的变量132.1.5赋值运算赋值运算符=赋值表达式:用=将一个变量和一个表达式连接起来的式子变量=表达式例如:fahr=100;celsius=5*(fahr-32)/9;计算赋值运算符右侧表达式的值将赋值运算符右侧表达式的值赋给左侧的变量=的左边必须是一个变量14分析错误程序//求两个整数的和#includestdio.hintmain(){inta,b,sum;sum=a+b;a=3;b=5;printf(%d\n,sum);return0;}该程序为何得不到正确结果?错误原因是受数学思维的影响,吴以为sum=a+b;是建立sum和a+b之间的一个等量关系赋值运算“=”表示的是一个动作:先计算表达式的值,再存入赋值号左边的变量中,既不表示数学中的等量代换,也不表示相等关系执行sum=a+b;语句是,因为a和b中的值都不确定,是随机的,所以其和也是随机的,然后把这个数赋给了sum该程序为何得不到正确结果?152.1.6格式化输出函数printfprintf(%d,count);printf将一些信息按照指定的格式送到标准输出(显示器)count输出参数表:待输出的数据,可以是常量、变量或表达式格式:printf(“格式控制串”,输出参数表)%d格式字符串:指定数据的输出格式16输出格式printf(“fahr=%d,celsius=%d\n,fahr,celsius);普通字符,原样输出%开头的是转换说明,对应与后面一个输出参数,对应参数将被转换成指定格式后在该位置输出输出结果:fahr=100,celsius=37输出参数列表‘\n’是转意字符,用来输出一个回车17转换字符串printf(%d,count);%d转换字符串说明%d将参数按整数形式转换输出,对应参数应是int类型%ld将参数按长整数形式转换输出,对应参数是long型%c输出一个字符,对应参数应该是一个字符%s输出一个字符串,对应参数应该是一个字符串%f将参数按带小数点数形式输出,对应参数应是double类型,默认情况下精确到6位小数18转换字符串%dintvisitor_count=150;printf(%d,visitor_count);输出结果:15019转换字符串%mdintsalary=5500;printf(%10d,salary);输出结果:5500输出结果的左边显示了6个空格%10d数据以十进制整数格式输出,宽度占m列,数据不足m列左补空格,超过m列按实际位数输出。20转换字符串%-mdintsalary=5500;printf(%10d,salary);输出结果:5500输出结果的右边显示了6个空格%-10d数据以十进制整数格式输出,宽度占m列,数据不足m列右补空格,超过m列按实际位数输出。21课堂练习:输出整数幂已知m=11,n=41,输出m和n的2次方、3次方和4次方,要求每个数据占8列,左对齐。效果如下:1211331146411681689212825761222.2:使用浮点数进行温度转换例2.2:例2.1中程序的运行结果并不令人满意,因为华氏温度100,对应的摄氏温度应该为37.7777…,而不应该是37。需要使用浮点型变量来存储带小数点的数,我们需要将celsius,fahr声明为双精度浮点型#includestdio.hintmain(){doublecelsius,fahr;//声明两个双精度浮点型变量fahr=100.0;//赋值运算celsius=5*(fahr-32)/9;//计算摄氏温度,并存入变量celsiusprintf(fahr=%f,celsius=%f\n,fahr,celsius);}232.2.1浮点变量类型浮点数在计算机中的表示,基于指数表示法,将分为指数和尾数来存储。浮点变量根据数据表示范围和精确度不同,有一下几种类型float4个字节(+/-)3.4E38,6位有效数字浮点变量用来存储浮点数,浮点数包含的值带小数点,也可以表示分数和整数。double8个字节(+/-)1.7E308,15位有效数字课外作业:查阅资料,了解浮点数是如何存储的Longdouble12个字节(+/-)1.19E4932,18位有效数字24注意有效位数的不同内存floatdouble213.567143556896764位取值范围:10-308至1030816位有效数字flaotf_level=213.5671435568967;doubled_level=213.5671435568967;去VC下试试!25转换字符串%ffloatcircumference=78.53;printf(%f,circumference);输出结果:78.530000默认情况下精确到六位小数9.4786789;9.4786792.2.2浮点数据的输出26doublemercury_level=168.2251074;printf(%7.2f,mercury_level);输出结果:168.23宽度,表示所有的数字和小数点所占的位数。不够7位右对齐。%7.2f精度(精确到小数点后多少位)转换字符串%m.nf2.2.2浮点数据的输出27程序指令2.2.3常量标识符关键字常量运算符分隔符等常量是在程序中保持不变的量,分为:立即数符号常量(宏常量)const常量立即数整型常量:如32、100实型常量:如1.23123.567e5字符常量:‘a’、‘2’、‘\n’字符串常量:“cprogram”28定义常量为使程序易于阅读和便于修改,可以给程序中经常使用的常量定义一个有一定含义的名字。常量用于定义具有如下特点的数据:在程序中保持不变在程序内部频繁使用需要用比较简单的方式替代某些值防止意外的修改,增强程序的健壮性29定义宏常量#definePI3.1415926编译预处理指令#define将PI定义成一个要被3.1415926取代的符号,此时PI不是一个变量,而是3.1415926的别名。在编译开始之前,只要在程序的表达式中引用PI,预处理器就会用#define指令中的值(3.1415926)来取代它。宏常量的缺点:宏常量被替换成立即数之后,内存中有同一个立即数的多份拷贝。30定义const常量在定义变量时,加上const修饰,告诉编译器,它的值是固定的,不能被改变。编译器会帮你检查、监督。constdoublePI=3.1415926;const推出的初始目的,正是为了取代预编译指令,消除它的缺点,同时继承它的优点。在编译的时候,由于const定义常量只是给出了对应的内存地址,而不是象#define给出的是立即数,所以,const定义的常量在程序运行过程中只有一份拷贝,而#define定义的常量在内存中有若干个拷贝。31例2.3求圆柱体的体积//求圆面积,圆周率用立即数#include“stdio.h”intmain(){doulbev,r,h;r=10.0;h=20.0;v=3.1415926*r*r*h;printf(“v=%f\n”,v);return0;}//求圆面积,圆周率用宏常量#include“stdio.h”#definePI3.1415926intmain(){doublev,r,h;r=10.0;h=20.0;v=PI*r*r
本文标题:简单C语言程序设计
链接地址:https://www.777doc.com/doc-5255822 .html