c语言学习框架
C语言基础知识(一)内容说明主要1.c语言出现的历史背景内容2.c语言的特点3.c语言的基本词法—标识符4.c语言的基本数据类型重点1.标识符的概念2.整型数据类型难点1.标识符的概念2.常量与变量的区别问题什么是C语言?为什么会出现C语言?提出通过对c语言的介绍,自然引入各部分内容一.C语言概述1.介绍C语言出现的历史背景2.介绍C语言的特点3.C语言的基本结构及程序设计风格举例:分析以下程序的结构#include
/*头文件*/ 以实例分析程序入口函数体部分main()/*主函数*/{inta,b,sum;/*声明部分,定义变量*/a=123;b=456;sum=a+b;printf(“sumis%d\n”,sum);/*输出c的值*/}结合实例讲解总结:C程序的主要结构特点如下:²所有的c程序都是由一个或多个函数组成的程序模块构成的。²在程序中,可以包含任意多个不同名的函数,但必须有且仅有一个main()主函数。c程序总是从主函数main()开始执行的。²c语言程序是由语句组成,使用“;”作为语句的中止符或分隔符。一行中可以有多个语句,一条语句也可以占用任意多行²c语言程序中用{}将函数体括起来。²c语言中注释的格式:/*注释内容*/。二.c语言的基础知识1.标识符概念用来作变量、符号、函数和数组、文件等的名字。举例说明规定标识符的命名原则:由字母、数字和下划线组成,并且第一\n个字符必须为字母或下划线。分类关键字参考附录一int、if…标识符预定义标识符printf…用户标识符注意做到见名知义_in、a23b…【注意】²标识符区分大小写。²标识符的长度为8个字符,长于8个的字符不被识别。2.常量如整型常量:12,0,-34实型常量:4.6,-1.45字符常量:‘a’,‘d’概念在程序运行过程中,其值不能被改变的量。①数值常量②符号常量--用一个标识符代表一个常量,如:#definePRICE30/*命令行定义*/main(){intnum,total;通过程序说明符号常量的使用num=10;total=num*PRICE;printf(“total=%d”,total);}如上题中加入赋值语句PRICE=40;是不对的。【注意】²符号常量的值在其作用域内不能改变,也不能再被赋值。²习惯上,符号常量名用大写,变量名用小写。²改变符号常量值须在命令行中修改,“一改全改”。3.变量概念其值可以改变的量称为变量。遵守标识符的命名规则。深化变量的实质:介绍变量存储单元的关系。注意区分变量名与变量值概念例如:a=3;其存储为:变量名a3变量值存储单元【总结】常量与变量的区别:取值是否固定。讲述三.整型数据\n1.整型常量的表示0123123,0,-32①十进制整数。0x123②八进制整数。以0开头。③十六进制整数。以0x开头。介绍8进制和16进制与10进制的转化⑵整型变量①整型数据在内存中的存放形式数据在内存中以二进制形式存放,占用2个字节,数值以补码表示。如定义整型变量i的值为10,在内存中存放形式为:0000000000001010如不加限制,最高位为符号位,最大正整数为32767。0111111111111111举例介绍负数求补方法求负数的补码方法如下:将该数的绝对值的二进制形式,按位取反再加一。②整型变量的分类。见下表:类型字节数使用表格对比的说明数的范围[signed]int2-2~(2-1)Unsignedint20~(2-1)[signed]short[int]2-2~(2-1)Unsignedint20~(2-1)Long[int]4-2~(2-1)Unsignedlong[int]40~(2-1)【注意】无符号整数,因其最高位不再用来存放整数符号,因此无符号整数不可能是负数。如:inta,b;定义两整型变量a,b③整型变量的定义格式整型类型标识符变量名【说明】²数据类型的选择要注意避免数据的溢出。²长整型常量与长整型无符号整数常量用后缀l或L和lu或LU标识\nC语言基础知识(二)内容说明主要1.实型数据类型的基本知识内容2.字符型数据类型的基本知识3.变量定义时赋初值4.各数值型数据间的混合运算重点1.实型数据类型的基本知识2.字符型数据类型的基本知识难点1.字符型数据与整型数据的相互转化2.变量定义时赋初值介绍一.实型变量1.实型数据在内存中的存放形式实型数据在内存中占4个字节(32)位。按照指数形式存贮。系统把实型数据分成小数部分和指数部分。如实数3.6547的存放形式如图所示:+.365471数符小数部分指数+.36547*103.65472.实型变量的分类。见下表:类型字节数有效数字数值范围float(单精度)326~710~10double(双精度)6415~1610~10longdouble(长双精度)8018~19例如:floatx,y;doublez;10~103.定义实型数据:类型标识符变量名例:如下程序出现舍入误差main(){floata,b;a=.78e5;b=a+20;printf(“%f”,b);}【注意】避免将一个很大的数和一个很小的数直接相加或相减。4.实型常量的类型\n【说明】²在常量的后面加f或F,编译系统会按单精度常量进行计算。²在实型常量符值时,要注意常量类型与有效数字的关系。二.字符型数据1.字符常量注意:‘a’和‘A’是不同的。概念用单引号括起来的一个字符。有如下形式:①‘a’,‘D’,‘?’,‘#’等。②转义字符----以“\”开头的字符序列,常见的有:\n----换行\t----水平制表\b----退\r----回车\f----换页\\----反斜杠字符“\”例如:\101代表ASCII码为65的字符A,\012代表换行\’----单引号字符\”----双引号字符\ddd----1到3位8进制数所代表的字符\xhh----1到2位16进制数所代表的字符【注意】‘\0’或‘\000’代表ASCII码为0的“空操作”。举例转义字符的使用main(){printf(“abc\tde\rf\tg\n”);printf(“h\ti\b\bjk”);}结果为:fgdehjk2.字符变量概念用来存放字符常量,注意只能放一个字符①字符变量的定义形式如下:charc1,c2;②字符变量的赋值形式如下:c1=’a’;c2=’b’;③字符数据在内存中的存储形式及其使用方法讲解一个字符变量在内存中占一个字节,字符型数据与整型数据可以相互转化。也可以互相赋值。如下例:注意字符变量与整型变量的相互转化。常用这个特点解决大小写字母转换问题。main(){charc1;intc2;c1=97;c2=’b’;prntf(“%c%c\n”,c1,c2);/*以字符形式输出*/printf(“%d%d\n”,c1,c2);}/*转换为整数形式输出*/运行结果如下:ab9798字符串常量可以输出:printf(“howdoyoudo.”);④字符串常量概念字符串常量是一对双引号括起来的字符序列。\n如:“howdoyoudo.”,“CHINA”,“$23.34”等。区分⑤字符常量与字符串常量的区别:a‘a’----字符常量,在内存中占一个字节,存储形式为:“a”----字符串常量,在字符串结尾加字符串结束标志’\0’。a\0因此存储形式为:如:charc;c=”CHINA”;是不对的【注意】不能把一个字符串赋给一个字符变量三.变量定义时赋初值1.单独赋初值inta=3;<=>inta;a=3;2.定义变量的一部分赋初值inta,b,c=5;<=>inta,b,c;c=5;【注意】在定义变量赋初值时不能使用连等。如下语句错误:inta=b=c=3;四.各类数值型数据间的混合运算整型、实型、字符型数据间可以混合运算,进行运算时,不同类型数据要先转换成同一类型,然后进行运算。转化规则如图所示:doublefloat高longunsigned低intchar,short【规律】字符型数据向整型数据转换,短字节类型向长字节类型转换。\nC语言基础知识(三)内容说明主要1.运算符和表达式内容2.算法与N-S图重点算术运算中的取余和整除难点1.自增、自减运算符2.复合算术运算符引入c语言包括多种运算,这里重点讲授算术运算符,其他运算符如:关系运算符,逻辑运算符,条件运算符等,在以后各章中结合有关内容将陆续介绍其他运算符。介绍双目单目运算概念一.基本的算术运算符类型运算符说明双目或单目+(加)如5/3的结果为1,17%-3的结果为2,-19%4的结果为-3。参加运算的两个数中有一个数为实数,则结果为double型。两个整数相除的结果为整数,如果除数或被除数中有一个为负值,多采取“向零取整”法-(减)双目*(乘)/(除)%(取余)运算量必须为整数。当运算量为负数时,符号与被除数相同【说明】²双目运算符运算数的类型必须一致,否则先进行类型转换。²所有实型数的运算均以双精度方式进行。二.运算符的优先级、结合性和算术表达式1.优先级()、+、-、*、/、%、+、-同级同级同级单目双目高低2.结合性单目运算符“-”和“+”的结合性是从右到左,其余运算符的结合性都是从左到右。运算对象可以是常量、变量和函数等三.算术表达式\n【注意】²在算术表达式中使用多层圆括号时,圆括号要成对出现。运算时从内往外依次计算。²不同优先级按优先级由高到低顺序进行,同级按运算符的结合方向进行。强制类型转换得到一个所需类型的中间变量,原来变量的类型不发生变化。四.强制类型转换运算符形式(类型名)(表达式)如:(int)x%3(float)(5%3)【注意】表达式应用括号括起来。五.自增、自减运算符++i,--i(在使用i之前,先使i的值加1或减1)i++,i--(在使用i之后,使i的值加1或减1)举例说明区分以下两条语句:i的初值为3j=++i;(i的值先变成4,再赋给j,j的值为4)j=i++;(先将i的值3赋给j,j的值为3,然后i变为4)说明不宜使用自增自减运算情况:输出语句,一个表达式同一个变量多次自增自减运算。【注意】²对于形如i+++j的表达式,应理解为(i++)+j的形式。²自增、自减运算符只适用于变量,不能用于常量和表达式。²++和—的结合方向是“自右至左”。i++相当于-(i++)。六.赋值运算符和赋值表达式1.赋值运算符“=”2.赋值表达式的一般形式:变量名=表达式【说明】²赋值运算符的优先级别只高于逗号运算符。具有自右向左的介绍“截断法”和“补足法”比如:a=b=c+2;a=(b=10)/(c=2)结合性。²如果赋值运算符两侧的类型不一致,要进行类型转换。²赋值号右边的表达式也可以是一个赋值表达式,按照自右向左的结合顺序。七.复合的赋值运算符名称运算符运算规则运算对象例如:x%=y+3相当于x=x%(y+3)运算结果加赋值+=a+=b<=>a=a+b整型或实型整型或实型减赋值-+a-=b<=>a=a-b乘赋值*=a*=b<=>a=a*b除赋值/+a/=b<=>a=a/b\n模赋值%=a%=b<=>a=a%b整型整型注:其中如果b是包含若干项的表达式,则相当于它有括号。八.逗号运算符和逗号表达式概念用逗号将表达式连接起来的式子称为逗号表达式。a=3*5,a*4;a的值为15,整个逗号表达式的值为60。1.其一般形式为:表达式1,表达式22.逗号表达式的求解过程:先求解表达式1,再求解表达式2。整个逗号表达式的值是表达式2的值。说明一个逗号表达式可以与另一个表达式组成一个新的逗号表达式。如:(a=3*5,a*4),a+53.逗号表达式一般形式的扩展:例如:输出语句中多个变量之间用逗号分隔形式表达式1,表达式2,……表达式n【注意】²并不是出现的任何逗号都是作为逗号运算符。²在所有运算符中,逗号运算符的优先级别最低。九.算法引入怎样才能编写出程序呢?除了选定合理的数据结构外,还有关键的一步,就是设计算法。概念算法是指为解决某个特定问题而采取的确定切有限的步骤。特点算法应当具有以下五个特性:有穷性、确定性、可行性、有零个或多个输入、有一个或多个输出。流程图是描述算法的很好的工具,有以下几种基本框组成:开始或终止框处理框输入输出框判断框流程线连接点另外一种描述算法的工具是N-S图。结构化程序三种基本结构用算法的描述:1.顺序结构语句2语句1语句1语句2(流程图)(N-S图)\n1.选择结构判断表达式语句1语句2当判断表达式满足循环体(流程图)(N-S图)2.循环结构循环体判断表达式满足不满足循环体直到判断表达式满足(流程图)(N-S图)例题先后输出若干个整数,要求打印出其中最大的数,当输入的数小于0时结束。用N-S流程图表示算法。N-S流程图如下:读入一个数给xmax=x当x>ox>max是否max=x读入一个数给x输出max\n总结:通过以上对C语言的基础知识的讲解,我们了解了C语言出现的背景、结构以及语法知识,这些是我们后面学习的一个基础,因此要重点掌握。