资源描述
第一章 程序设计的基本概念01-01.程序设计的基本概念计算机语言 高级语言 远离硬件 C语言- C+ - JAVA 低级语言 贴近硬件 机器语言 汇编语言基本概念:1、机器语言:计算机能接受和处理的由0和1代码构成的二进制指令或数据,是面向机器的。2、源程序:由高级语言编写的程序称为“源程序”。3、目标程序:二进制代码表示的程序称为“目标程序”。4、编译程序:5、C源程序:6、C语言源程序文件名的后缀是.c,经过编译后生成目标文件的后缀名是.obj,经过连接后生成的可执行文件后缀名是.exe。 例题:在Visual C+环境下运行一个C程序时,所运行的程序的后缀名是 ?7、程序设计一般包含以下步骤: 1)确定数据结构;2)确定算法;3)编译;4)运行调试程序;5)整理并写出文档资料。8、算法: 特点:1)有穷性;2)确定性;3)可行性;4)有零个或多个输入;5)有一个或多个输出。 算法的描述方法:1)伪代码;2)一般流程图(传统的结构化流程图);3)N-S流程图;4)PDA图等。传统的结构化流程图: 开始框 处理框 输入/输出框 判断框 流程线 连接点N-S流程图:9、 结构化的语言的三种结构: 1)顺序结构;2)选择结构;3)循环结构。顺序结构: 语句1 语句1 语句2 语句2 一般流程图 N-S图选择结构:不满足判断表达式不满足满足判断表达式 满足 语句2 语句1 语句1 语句2循环结构:不满足 判断表达式满足循环体当判断表达式满足循环体 a)当型循环 先判断,后执行 最少循环0次 b)直到型循环 先执行,后判断 最少循环1次第二章 C语言基础知识02-01.简单C语言的构成和格式例:#include “stdio.h” main()float a,b,area;a=1.2;b=3.6;area=a*b;printf(“a=%f,b=%f,area=%fn”,a,b,area);1、 命令行:1)命令行必须以“#”开头,最后不能加“;”号。(因为它不是C语言的语句)2)一对双引号中间stdio.h是系统提供的文件名,该文件包含着有关输入输出函数的信息。2、 主函数 1)main是主函数名,C语言规定必须用main作为主函数名; 2)主函数后的一对括号中间可以是空的,但这一对括号是绝对不能省略的; 3)一个C程序可包含任意多个不同名字的函数,但必须有且只有一个主函数; 4)C程序的运行总是从主函数开始执行。3、 函数体 1)在主函数的下方是函数主体部分,函数主体部分总是从“”开始,到“”结束, 必须成对出现; 2)函数体分为定义(说明)部分和执行语句部分; 3)可执行语句数量不限,但必须放在定义语句后面;(必须先定义后执行)4、 C语言的简单语法格式 1)C语句必须以“;”结束,“;”是C语句的一部分,而不是语句间的分隔符; 2)注释符号“/* */”必须成对出现,不允许出现嵌套情况。“/”和“*”之间不允许有空格; 02-02.标识符的组成和分类1、 什么是标识符例:main() int a,b; a=10,b=11;Printf(“a=%d,b=%d”,a,b);1)组成:字母,数字和下划线,一定要是字母或者下划线开头;例:area _abc 4dd 2)区分大小写: page Page是2个不同的标识符;3)标识符的长度:C语言中只能识别前8位2、 标识符的分类1)关键字:系统规定好的:if while等 (39个)关键字不能另作他用;2)预定义标识符:系统规定好的,但是可以另作他用,如:scanf、printf。3)用户定义标识符02-03.整型数据和实型数据1、 常量1、定义:程序运行中,不得改变的量2、分类:1)整型常量:1 2 -1 -2 2)实型常量:3.0 -2.03)字符型常量:a b 1 2 4)字符串常量:hghjlk3、符号常量 程序举例圆周率PI#include “stdio.h”#define PI 3.14159main()float r,s;r=5.0;s=PI*r*r;Printf(“s=%fn”,s);2、 变量1、概念:其值可以改变的量。与常量对应。2、变量实质:内存中的存储单元。3、变量应先定义后使用。4、特性: 1)凡未被事先定义的,不作为变量名; 2)每一变量被指定为一确定类型,在编译时就能为其分配相同的存储单元; 3)指定每一变量属于一类型,便于在编译时,据此检查该变量所进行的运算是否合法。3、 整型常量1、整型常量的表示方法:十进制、八进制、十六进制2、三种进制的表示方法: 1)十进制数:用一串连续的数字来表示,中间不允许有空格或其它字符。 2)八进制数:A、八进制数用数字“0”开头(注意:是数字“0”(零),不是字母“o”);B、八进制数只能用合法的八进制数表示,数字“0-7”,但当输入非法数字时,C程序不会提示错误,只是得不到正确的结果。 3)十六进制数:用数字“0”和字母“x”开头(x可大写)。十六进制数只能含有合法的十六进制数字:数字:“0-9” 字母:“a-f”。3、三种进制的转换 1)八进制和十六进制转换成十进制例:十进制:123=3*1+2*10+1*100=3*100+2*101+1*102 八进制数:0123=3*80+2*81+1*82十六进制:0xbd=13*160+11*161 2)十进制数转换为八进制和十六进制A、十进制数 256 189 8 256 0 189 5 32 0 23 7 4 4 2 2 0 00400=0*80+0*81+4*82 0275=5*80+7*81+2*82B、十进制转换成十六进制 十进制数:256 18916 256 0 16 189 d 16 0 11 b 1 1 0 00x100=0*160+0*161+1*162 0xbd=13*160+11*1614、 整型变量1、整型变量的定义: 1)基本整型变量用类型名关键字int进行定义; 2)一个定义语句必须用分号“;”结束,在一个定义语句中可同时定义多个变量,变量之间用“,”隔开; 3)vc6.0为基本整型开辟4个字节的存储单元,基本整型允许存放的数值范围是:-2147483648-2147483647; 4)C语言规定,可以在变量定义的同时给变量赋初值,也称为变量初始化。2、整型常量的分类:基本整型、短整型、长整型、无符号型 1)signed有符号整型:A)int基本整型 B)short短整型 C)long长整型 2)unsigned无符号整型A)unsigned int无符号基本整型B)unsigned short无符号短整型C)unsigned long无符号长整型3、说明:1)无论是短整型还是长整型,都被识别为有符号整型;2)无符号整数应在数字末尾加上“u”或“U”,长整型无符号整数常量,加“lu”或“LU”。注意:无符号常量不能表示成小于0的负数。如:-200U是不合法的。整型数据类型名称占用的字节数数值范围signedint2-2147483648- 2147483647signedshortint2-32768 - 32767signedlongint4-2147483648 - 2147483647unsignedint20 -65535Unsigned shortint20 -65535Unsigned longint40 -42949672955、 实型常量1、小数形式:即在数学中常用的实数形式,由数字和小数点组成。2、指数形式: 1)这种形式类似于数学中的指数形式。在数学中,一个数可以用幂的形式来表示。在C语言中,则以“e”或“E”后跟一个整数来表示以10为底的幂数。 例:2.3026=0.2306*101=2.3026*100=23.026*10-1 2.3026=0.2306E1=2.3026E0=23.026E-1 2)C语言语法规定:字母E或e之前必须有数字,e或E后面的指数必须为整数。字母e或E前后以及数字间不得插空格。如:e3 5e3.6 .e3 .e(不合法)六、实型变量1、C语言中实型变量分为单精度和双精度两类,分别用类型名“float”和“double”进行定义。例:单精度:float a,b; 双精度:double a,b;2、单精度和双精度型的区别如下: 1)在计算机系统中,为float分配4个字节的存储单元,为double分配8个存储单元; 2)两者的取值范围不同:double比float存放的数据精确很多; 3)在程序中一个实数可以用小数形式表示,也可以用指数形式表示。但在内存中,实数一律是以指数形式存放的; 4)注意:在计算机内存中可以精确的存放一个整数,不会出现误差,但整型数值的存放范围较小;使用实型数的范围大,但往往存在误差; 5)给实型变量赋初值的方法如下:main()float a=1.5,b=0.0;.02-04.算术表达式和赋值表达式一、算术运算符 在C语言中基本的运算符是:+、-、*、/、%,分别为加、减、乘、除、求余运算符。1.这些运算符需要两个(运算)对象,称为“双目运算符”,除求余外,运算对象可以是整型,也可以是实型。2.求余运算符的运算对象只能是整型,在“%”运算符左侧的运算数为被除数,运算结果是两数相除后所得的余数。当运算量为负数时,所得结果的符号与被除数相同。例如:17%-3=2 -19%4=-3 15%-7=-13.“+”和“-”也可以做单目运算符,运算符必须出现在运算量的左边,运算量可为整型亦可为实型。4.说明:1)双目运算符两边的运算类型必须一致才能进行操作,所得结果类型与运算类型一致。例:1.0/2.0=0.5 1/2=0 2) 如果双目运算符两边运算数的类型不一致,系统将自动把两边转换成相同的类型后,进行运算。A、如果一边是整型数,一边是实型数时,系统自动把整型转成实型;如:1.0/2 1/2.0.B、如果一边是长整型,一边是短整型,系统自动转换成长整型。C、如果一边是有符号型,一边是无符号型,系统自动转换成无符号型。3)在C中,所有实数的运算符均以双精度方式进行,若是单精度,则在尾数部分补0,使之转化为双精度。二、算术运算符的优先级 () + 、- *、/、% 、+、- 单 目 双 目 同 级 同 级 同 级 高 低三、算术运算符和圆括号的结合性 只有单目运算符“+”和“-”的结合性是从右到左,其他运算符的结合性都是从左到右。 例:(5+1)/2=3 5+1/2=5 5*-2=-10四、算术表达式1、定义:用算术运算符和一对圆括话将运算量连接起来的,符合C语言的表达式称为算术表达式;2、运算规则和要求: 1)在算术表达式中,可使用很多层括号,但左右括号必须配对。运算时从内层圆括号开始,由内向外,依次计算表达式的值;2)在算术表达式中,若包含不同优先级的运算符,则按运算符的优先级别由高到低进行,若表达式中运算符的级别相同,则按运算符的结合方向进行。五、强制类型转换表达式1、强制类型转换表达式形式:(类型名)(表达式)2、“类型名”为强制类型转换运算符,可以利用强制类型转换运算符,将一个表达式转换成指定的类型。例:(int)3.324=3 (double)(10%3)=1.0六、赋值运算符和赋值表达式 1、定义: 1)在C语言中,“=”符号称为赋值运算符,由赋值运算符组成的表达式。 2)赋值形式:变量名=表达式。赋值号左边是变量名,右边必须是C语言合法的表达式。 3)自右向左读: a=10 /*把常量10赋给变量a*/ b=a /*把a中的值赋给变量b,a中的值不变*/ 4)内存中当前的数据就是最后一次所赋的那个数据。2、说明1)赋值运算符的优先级别只高于逗号运算符,比其它任何运算符的优先级别都低,且具有自右向左的结合性。a=1+32)赋值运算符不同于数字中的“等于号”,这里不是等同的关系,而是进行“赋予”操作;3)赋值表达式x=y的作用是:将变量y所代表的存储单元中的内容赋给变量x所代表的存储单元,x中原有的数据被替换掉;赋值后,y变量中的内容保持不变。此表达式当读做“把右边变量中的值赋予左边的变量”。4)在赋值表达式x=y中,赋值号右边的x表示变量y所代表的存储单元中的值,赋值号左边的x代表以x为标识的存储单元,该表达式的含义是取变量x中的值放到变量x中去;5)在赋值表达式n=n+1中,其作用是取变量n中的值加1后,再放入变量n中,使变量n的值增加1;6)赋值运算符的左侧只能是变量,不能是常量和表达式。例如:a+b=c 不合法。7)赋值号右侧的表达式也可以是一个赋值表达式,如:a=b=7+1,按照运算符的优先级,以上表达式先计算出7+1的值是8,按照赋值运算符自右向左的结合性,将先把8赋给变量b,然后再把变量b的值赋给变量a,而a=7+1=b不合法,因为7+1=b中,赋值号左边不是一个变量;8)在C中,“=”符号被视为一个运算符,a=19是一个表达式,而表达式应该有一个值,C规定最左边变量所得到的新值就是赋值表达式的值;9)C语言赋值表达式可以作为语句中的某个成分出现现在众多的语句或表达式中,因此比较难以掌握变量中的数值变化过程;10)给变量赋常量和赋表达式的值,有不同的结果。 例:r是整型常量 当赋值号右边是常量,进行r=60000,赋值时,系统把60000转换成60000L,后赋给r; 当赋值号右边是表达式r=15000+15000时,先计算15000+15000=30000,r=30000 当赋值号右边的表达式是r=30000+30000时,先计算30000+30000=60000,表达式的类型与运算符的类型一致,为int类型60000,但C中,int类型的最大值为32767,占两个字节,60000已超出两个字节,系统只取存于两个字节中的内容进行转换,把它赋给r。因此所赋值已不是60000,而是-32768 - 32767之间的一个数。七、复合的赋值表达式 1、定义: 1)概念:在赋值运算符之前加上其它运算符可以构成复合赋值运算符。C语言规定可以用10种复合赋值运算符,其中与算术运算有关的复合运算符是:+=、-=、*=、/=、%=(注意:两个符号之间不可以有空格)。复合赋值运算符的优先级与赋值运算符的优先级相同。 例:n+=1 n=n+1 n*=m+3n=n*(m+3) S+=5 s=s+5 2)例题:已有变量a,其值为9,计算表达式a+=a-=a+a的值。 分析:因为赋值运算符与复合赋值运算符的优先级相同,且运算方向都是自左向右,所以:a+=a-=a+a 计算a+a,因为a初值是9,所以表达式值为18a+=a-=18 计算a-=18, a=a-18 a=-9a+=-9 计算a+=-9 a=a+(-9) a=-18a=-18 结果八、赋值运算符中的类型转换: 1、在赋值运算中,只有在赋值号右侧表达式的类型与左侧表达式的类型完全一致时,赋值操作才能进行; 2、如果赋值运算符两侧的数据类型不一致,在赋值前,系统将自动先把右侧的表达式求得的数值,按赋值号左边变量的类型进行转换,也可以用强制类型转换的方式,认为的进行转换后赋给赋值号左边的变量。 注意:1)当赋值号左边的变量为短整型,右边的值为长整型时,短整型变量只能接受长整型数最低位上的两个字节中的数据,高位上的两个字节的数据将丢失。 例:int a; unsigned long b; b=98304;a=b; printf(“%dn”,a);则a的值为-32768.因为98304已经超出短整型的数值范围,a截取b中低16位中的值(1000000000000000),由于高位数是1所以为负数,值正好为-32768. 2)当赋值号左边的变量为有符号整型,右边的值为无符号整型时,赋值的机制同上。这时若最高为是1,将按负数处理。 02-05.自加自减运算、逗号运算符一、自加自减运算1、自加运算符“+”和自减运算符“-”的运算结果是使运算对象的值增1或减1.自加或自减运算符本身也是一种赋值运算符。 i+ i=i+1 i- i=i-12、+、-运算符是单目运算符,运算对象可以是整型变量,也可以是实型变量,但不能是常量和表达式,因为不能为其赋值,因此,像+3、(i+j)等都是不合法的。3、自加、自减运算符既可作为前缀运算符也可作为后缀运算符而构成一个表达式,但无论是作为前缀还是后缀运算符,对于变量本身来说,自加1或自减1都具有相同效果,但作为表达式来说却有不同。1)+i或i在使用i之前先使i的值增加或减少1;2)i+或i在使用i之后使i的值自加或减少1,i变,值不变;例如:i=2;a=i+; (a=i+ a=i i=i+1)a=2;i=3; i=2;a=+i; (a=+i i=i+1 a=i)a=3;i=3;4、+和运算符的结合方向是自右向左。二、逗号运算符和逗号表达式1、“,”是C语言提供的一种特殊运算符,用逗号运算符连接起来的式子称为逗号表达式,逗号表达式的一般形式为:表达式1,表达式2, 表达式n2、说明: 1)在所有运算符中,逗号运算符的优先级最低; 2)逗号运算符的结合性为从左到右,因此逗号表达式将从左到右进行运算,最后一个表达式的值就是此逗号表达式的值; 例:i=3,i+,+i,i=5 分析:i=3 i=i+1 i=4 +i i=i+1 i=5 i+5 结果:此逗号表达式的值为10,i的值为5.02-06.课后习题和典型例题讲解第三章 顺序结构03-01.输出函数1、 基本概念 1、按它们在程序中出现的顺序逐条执行,由这样的语句构成的程序结构,称为顺序结构。 2、把数据从计算机内部送到计算机外部设备上的操作叫做“输出”;从计算机外部设备将数据送人内部的操作称为“输入”; 3、C语言本身不提供用于输入和输出的语句。在C程序中,可以通过调用标准库函数提供的输入输出函数来实现数据的输入输出。2、 printf函数 1、printf函数是C语言提供的标准输出函数,作用是在终端设备上按指定的格式输出。 2、Printf(格式控制,输出项表)如果在printf函数后加上“;”,就构成了输出语句。 例如:printf(“a=%d,b=%d”,a,b); 1)printf是函数名 2)“a=%d,b=%d”称为格式字符串 3)a,b是输出项表中的输出项 3、格式控制: 1)它总是由“%d”开始,紧跟其后的是格式描述符 2)为各输出提供格式转换说明3)提供需要原样输出的文字或字符在格式控制内,除格式说明以外的其它字符,一律原样输出例:printf(“a=%d”,a);“a=”原样输出 printf(“%d,%d”,a,b);“,”原样输出?printf(“%”);4、 printf函数常用的格式说明 1)格式字符格式字符说明格式字符说明c输出一个字符x或X无符号十六进制数,不带前导0d或iD是带符号的十进制数,i很少用f单精度实型ld十进制长整型lf双精度实型u无符号十进制数e或E以指数形式输出实型数o无符号八进制数,不带前导0s输出字符串,对应的变量必须是地址%打印一个%p输出内存变量的地址g或G采用最小的宽度输出实型数2) 修饰符(位于%和格式字符之间)修饰符说明l长+使输出的数字总是带有“+”或“-”h短-左对齐0加前导0#在输出的八进制或十六进制前加前导“0”或“0x”,在其它进制前无效输出数据所占宽度:形式(m.n)(1)对整数指定宽度:(d) m:当变量的实际宽度小于m时,左边多余位置补空格,反之,则按实际输出; n:当变量的实际宽度大于n时,按实际输出,反之,则左边多余位置补0。(2) 对实数指定宽度:(f,e) m:用于指定实数的总体宽度,包括小数点。当实数的总体宽度小于m时,在数据左侧补空格,当实数的总体宽度大于m时,m无效; n:用于指定实数的小数部分宽度。当实数的小数部分小于n时,在数据右侧补0,当实数的小数部分大于n时,将小数的多余部分四舍五入。(3) 对g或G指定宽度 m:代表输出的总宽度 n:代表输出几个有效位(4) 对s指定宽度 m:代表输出的总宽度 n:代表输出的字符个数5、 调用printf的注意事项: 1)格式说明与输出项从左到右,类型必须对应,若类型不匹配,系统不会给错误提示; 2)格式说明与输出项个数相同,若不同:格式说明多,输出不定至;输出项多,无用。 3)除格式说明外,其它合法字符“原样照印”; 4)如需输出“%”,则用两个连续的“%”来输出; 5)尽量不要在输出语句中改变变量的值;例:printf(“%d,%d”,i,+i); 6)printf返回值是本次输出字符个数
展开阅读全文