收藏 分销(赏)

郝斌c语言大纲(讲解).doc

上传人:天**** 文档编号:2191815 上传时间:2024-05-22 格式:DOC 页数:43 大小:510.40KB
下载 相关 举报
郝斌c语言大纲(讲解).doc_第1页
第1页 / 共43页
郝斌c语言大纲(讲解).doc_第2页
第2页 / 共43页
郝斌c语言大纲(讲解).doc_第3页
第3页 / 共43页
郝斌c语言大纲(讲解).doc_第4页
第4页 / 共43页
郝斌c语言大纲(讲解).doc_第5页
第5页 / 共43页
点击查看更多>>
资源描述

1、C语言概述:1、为什么学习C语言1). C的起源和发展2).C的特点优点代码量小速度快功能强大缺点危险性高开发周期长可移植性不强3).c的应用领域 主要是系统领域4).c的重要性2、怎样学习C语言3、学习的目标了解程序语言及发展历史熟练掌握c语言的语法规则掌握简单的算法理解面向过程的思想,这非常有助于将来对面向对象思想的学习能看懂程序会调试程序掌握将大问题转化为一系列小问题来求解的思想为学习c+、数据结构、c#、java打下良好的基础4、常见的学习问题1、学习java为什么建议先学习C语言2、没学过计算机专业的课程能够学懂C语言3、英语和数学不好能学好C吗 32个关键词:(有系统定义,不能重做

2、其他定义)auto break case char constcontinue default do double elseenum extern float for gotoif int long register returnshort signed sizeof static structswitch typedef unsigned unsignedunion void volatile while5、课程规划c语言简介第一讲、基本编程知识 第二讲、数据类型第三讲、运算符和表达式第四讲、流程控制(所有语言都一样的)第五讲、函数(体现出面向过程和面向对象的区别)第六讲、数组第七讲、指针(

3、c语言的灵魂)第八讲、变量的作用域和存储方式第九讲、扩展数据类型第十讲、专题:字符串的处理进制转换补码动态内存分配(java、数据结构必学)综合应用:链表的使用6、举例子:一元二次方程# include # include int main (void)/把三个系数保存到计算机中int a=1; /=不表示相等,表示赋值int b=2;int c=3;double delta; /delta存放的是b*b-4*a*cdouble x1; /存放一元二次方程的其中一个解double x2; /存放一元二次方程的其中一个解delta= b*b - 4*a*c;if(delta0)x1 = (-b

4、+ sqrt(delta) / (2*a)x2 = (-b - sqrt(delta) / (2*a)printf(该一元二次方程有两个解,x1=%f,x2=%fn,x1,x2);else if (delta=0)x1 =(-b)/(2*a);x1=x2; /右边赋给左边printf(该一元二次方程有一个唯一解,x1 = x2=%fn,x1);elseprintf(无解n);Helloword程序举例# include int main(void)printf(欢迎大家学习C语言!);return 0;C语言编写的病毒举例:1、龌龊的程序:/*龌龊的程序!/*# include # inclu

5、de # include int main (void)int c;int i;int j;Nihao:printf(1:死机n);printf(2:机房爆炸n);printf(请选择:);scanf(%d,&c);If (c =1)System(shutdown -s -t 60)else if (2 = c)printf(你太坏了 我要惩罚你!n);for (j=0;j10;+j)System(start);elseprintf(你敲错了,请重新输入!n)goto nihao;return 0;2、内存泄露(占满内存)程序导致死机实例# include # include int main

6、(void)while (1)int *p = (int*)malloc(1000);return 0;C语言编程预备知识1、cpu 内存条 硬盘 显卡 主板 显示器 之间的关系2、Helloworld程序如何运行起来的3、什么是数据类型基本类型数据整数整型 int字节短整型 short int字节长整型 long int字节浮点数【实数】单精度浮点数 float字节双精度浮点数 double字节字符char字节复合类型数据结构体枚举共用体(已淘汰)4、什么是变量变量的本质是内存中一段存储空间5、cpu内存条 vc+6.0 操作系统 之间的关系6、变量为什么必须初始化所谓初始化就是赋值的意思7

7、、如何定义变量数据类型变量名 =要赋的值;等价于数据类型变量名;变量名 =要赋的值;举例子:int i = 3 ; 等价于 int i ; i = 3;int i, j ; 等价于 int i ; int j;int i, j = 3 ; 等价于 int i ; int j ; j = 3 ;int i = 3, j = 5 ; 等价于 int i , j ; i = 5 ; j = 5;int i , j ; i = j = 5 ;等价于 int i , j ; i = 5; j = 5;8、什么是进制十进制就是逢十进一二进制就是逢二进一生活中用到进制的例子:一周七天:七进制一年十二个月:十

8、二进制一小时六十分钟:六十进制电脑中的数据:二进制进制转化:什么叫进制进制就是逢几进一我们说的N进制实际就是指逢N进一我们的计算机只识别二进制人类最习惯使用的是十进制为了实际需要 我们又建立了八进制和十六进制C语言规定八进制前要加0(注意是零不是字母o),十六进制前要加0X或0x,十进制前什么都不加!在汇编中:在数字后加字母B表示二进制数,加字母O表示八进制数,加字母D表示十进制,加字母H表示十六进制。例:1011B为二进制数1011,也记为(1011)21357O为八进制数1357,也记为(1357)82049D为十进制数2049,也记为(2049)103FB9H为十六进制数3FB9,也记为

9、(3FB9)16什么叫n进制十进制十个基数,逢10进一基数:0 1 2 3 4 5 6 7 8 9二进制二个基数 逢二进一基数: 0 1八进制8个基数 逢8进一基数: 0 1 2 3 4 5 6 7十六进制16个基数 逢16进一基数: 0 1 2 3 4 5 6 7 8 9 a b c d e f 或0 1 2 3 4 5 6 7 8 9 A B C D E F十进制(D)二进制(B)八进制(O)十六进制(0x)00001234567891011121314159、常量在c语言中如何表示的整数十进制: 传统的写法十六进制: 前面加0x或0X,是数字0加x八进制: 前面加数字0浮点数:传统写法f

10、loat x = 3.2;/传统科学计数法float x = 3.2e3;/x的值是3200float x = 123.45e-2; /x的值是1.2345字符单个字符用单引号括起来A表示字符AAB是错误的AB是正确的字符串用双引号括起来A正确,因为A代表了 A 0 的组合10、常量以什么样的二进制代码存储在计算机中整数是以补码的形式转化为二进制代码存储在计算机中的实数是以IEEE754标准转化为二进制代码储存在计算机中的具体可参见末尾的穿插在课堂中的零散知识笔记字符的本质实际也是与整数的存储方式相同11、代码规范化代码的可读性更高【容易让别人和自己看懂】是程序更不容易出错林锐高质量C/C+编

11、程 代码要成对的敲12、什么是字节字节就是存储数据的单位,并且是硬件所能访问的最小单位1字节 = 8位1K = 1024字节1M = 1024 K1G = 1024 M 买硬盘时的换算是以1000为单位的13、不同类型的数据之间相互赋值的问题暂不考虑int i = 45;long j = 102345;i= j;printf (%d %dn, i, j);float x = 6.6;double y = 8.8;printf(%f %lfn, x, y);14、什么是ASCIIASCII不是一个值,而是一种规定,ASCII规定了不同的字符是使用哪个整数值去表示它规定了A - 65B - 66a

12、 - 97b - 9815、字符的存储【字符本质上与整数的存储方式相同】基本的输入和输出函数的用法printf ()-(重点讲)将变量的内容输出到显示器上四种用法1.printf (字符串n)2.printf (输出控制符,输出参数);3.printf (输出字符1输出字符2。,输出参数1,输出参数2,。);输出控制符和参数的个数必须一一对应4.printf(输出控制符非输出控制符,输出参数);输出控制符包含如下%d - int(十进制)%ld - long int%c - char%f - float%lf - double%x(或者%X或者%#X) - int或 long int或 sho

13、rt int%o -同上%s -字符串为什么需要输出控制符1. 01组成的代码可以表示数据也可以表示指令2. 如果01组成的代码表示的是数据的话,那么同样的01代码组合以不同的输出格式输出就会有不同的输出结果scanf () -Java中已经没有了两种用法:用法一: scanf (输入控制符,输入参数);功能:将从键盘输入的字符转化为输入控制符所规定格式的数据,然后存入已输入参数的值为地址的变量中。用法二: scanf(非输入控制符输入控制符,输入参数);功能:将从键盘输入的字符转化为输入控制符所规定格式的数据,然后存入以输入参数的值为地址的变量中非输入控制符必须原样输入如何使用scanf编写

14、出高质量代码1. 1.使用scanf之前最好先使用printf提示用户以什么样的方式来输入2.Scanf中尽量不要使用非输入控制符,尤其是不要用n3.应该编写代码对用户的非法输入做适当的处理【非重点】while (ch=getchar() != n) continue;运算符算术运算符+ - * /(除) %(取余数)除法的运算结果和运算对象的数据类型有关,两个数都是int,则商就是int,若商有小数,则截取小数部分;被除数和除数中只要有一个或两个都是浮点型数据,则商也是浮点型,不截取小数部分。如: 16/5 = 3 16/5.0 = 3.20000 -13/4 = -4-13/-3 = 4

15、3/5 = 0 5/3 = 1最经典的例题就是求s = 1 + 1/2 + 1/3 + 1/4 + 1/5.+ 1/100的值。取余的运算对象必须是整数,结果是整除后的余数,其余数的符号与被除数相等。如: 13%3 = 1 13%-3 = 1 -13%3 = -1-13%23 = -13 3%5 = 3关系运算符 = 关系 逻辑 赋值附录一些琐碎的运算符知识自增自减三目运算符逗号表达式流程控制(学习c语言的第一个重点)1.什么是流程控制程序代码执行的顺序1. 2.流程控制的分类顺序选择定义某些代码可执行,也可能不执行,有选择的执行某些代码分类if1. 1.if最简单的用法格式:if(表达式)语

16、句功能:如果表达式为真,执行语句如果表达式为假,语句不执行1. 2.if的范围问题(重点)1.if (表达式)语句A;语句B;解释:if默认只能控制语句A的执行或不执行 if无法控制语句B的执行或不执行或者讲:语句B一定会执行2.If (表达式)语句A;语句B;此时if可以控制语句A和语句B由此可见:if默认只能控制一个语句的执行或不执行,如果想控制多个语句的执行或不执行就必须把这些语句用括起来。1. 3.if.else.的用法1. 4.if.else if.else.的用法格式:if (表达式1)A;else if (表达式2)B;if (表达式3)C;elseD;1. 5.C语言对真假的处

17、理非零是真零就是假真用一表示假用零表示1. 6.if举例-求分数的等级2. 7.if的常见问题解析1. 1.空语句的问题if (3 2);等价于if (3 2); /这是一个空语句2.if (表达式1)A;elseB;是正确的if (表达式1);A;elseB;是错误的3. if (表达式1) A; else if (表达式2) B; if (表达式3) C; else D;即便表达式1和2都成立,也只会执行A语句4.if (表达式1) A;else if (表达式2) B;if (表达式3) C;这样些语法不会错,但逻辑上有漏洞、 5. if (表达式1) A;else if (表达式2)

18、B;if (表达式3) C;else(表达式4) /7行 D;这样写是不对的,正确的写法是:要么去掉7行的(表达式4)要么在7行的else后面加if1. 6. if (表达式1) A;else if (表达式2) B;if (表达式3) C;else(表达式4); D;这样写语法不会错,但逻辑上是错误的else(表达式4); D;等价于 else (表达式4); D;对任意三个数字进行排序:如果ab则a与c比较 ac则输出a ac则输出b bc则输出c穿插在课堂中的零散知识笔记:如何看懂一个程序,分三步:1. 1.流程2. 2.每个语句的功能3. 3.试数如何学习一些需要算法的程序【如何掌握一

19、个程序】1.尝试自己去编程解决它但要意识到大部分人都是自己无法解决的,如果解决不了,这时不要气馁如果十五分钟还想不出来,此时我建议您就可以看答案了2.如果解决不了,就看答案关键是把答案看懂,这个要花很大的精力,也是我们学习的重点看懂一个程序要分三步:流程、每个语句的功能、试数3.看懂之后尝试自己去修改程序,并且知道修改之后程序的不同输出结果的含义不建议看懂程序之后就立即自己敲程序1. 4.照着答案去敲5.调试错误6.不看答案,自己独立把答案敲出来7.如果程序实在无法彻底理解,就把它背会,无法彻底理解的程序很少很少几乎没有 强制类型转换格式: (数据类型)(表达式)功能:把表达式的值强制转换为前

20、面所执行的数据类型例子:(int)(4.5+2.2)最终值是 6(float)(5)最终值是 5.0000000 浮点数的存错所带来的问题 float和 double都不能保证可以把所有实数都准确的保存在计算机中 例子: float i = 99.9; printf(%fn, i);最终结果在VC+6.0中的输出的结果是: 99.900002因为浮点数无法准确存储,所以就衍生出来两个编程问题举例: 有一个浮点型变量x,如何判断x的值是否是零 if (|x-0.0000001| m=121sum=0*10+121%10=1m=m/10=12;m=12成立sum=1*10+12%10=12m=12

21、/10=1m=1成立sum=12*10+1%10=121m=1/10=0m=0不成立sum=val4.什么时候使用while,什么时候使用for没法说,用多了自然而然就知道了do.while格式:do.while(表达式);do.while.并不等价于for,当然也不等价于while主要用于人机交互一元二次方程举例break和continuebreak(很重要)break如果用于循环是用来终止循环break如果用于switch,则是用于终止switchbreak不能直接用于if,除了if属于循环内部的一个子句例子: for (i=0;i 2) break; /break虽然是if内的语句,但b

22、reak终 止的却是外部的for循环 printf (嘿嘿!n); /永远不会输出 在多层循环中,break只能终止距离它最近的那个循环 for (i=0; i3; +i) for (j=1; j4;+j) break; /break只能终止距离它最近的循环 printf (同志们好!n); 在多层switch嵌套中,break只能终止距离它最近的switch例子:int x=1, y=0, a=0, b=0; switch (x) /第一个switch case 1: switch (y) /第二个switch case 0: a+; break; /终止的是第二个switch case 1

23、: b+; break; b = 100; break; /终止的是第一个 switch case 2: a+; b+; break; printf (%d %dn, a,b); /26行最终输出结果是:1 100continue(用的很少)用于跳过本次循环余下的语句,转去判断是否需要下次循环for (1; 2; 3) A; B; continue;/如果执行该语句,则执行完该语句后,会执 行语句3,C和D都不会执行 C; D;while(表达式) A; B; continue;/如果执行该语句,则执行完该语句后,会执 行表达式,C和D都不执行。 C; D;数组1.为什么需要数组为了解决大量同

24、类型数据的存储和使用问题。为了模拟现实世界2.数组的分类一维数组怎么定义一维数组为n个变量连续分配存储空间所有的变量数据类型必须相同所有变量所占的字节大小必须相等例子:int a5;一维数组名不代表数组中所有的元素,一维数组名代表数组第一个元素的地址有关一维数组的操作初始化完全初始化int a5 = 1,2,3,4,5;不完全初始化,未被初始化的元素自动为零int a5 = 1,2,3;不初始化,所有元素是垃圾值int a5;清零int a5 = 0;错误写法:int a5;a5 = 1,2,3,4,5; /错误只有在定义数组的同时才可以整体赋值,其他情况下整体赋值都是错误的int a5 =

25、1,2,3,4,5;a5 = 100; /error因为没有a5这个元素,最大只有a4int a5 = 1,2,3,4,5;int b5;如果把a数组中的值全部复制给b数组错误写法:b = a; / error正确的写法for (i=0; i5; +i)bi = ai;赋值排序求最大/小值倒置查找插入删除二维数组Int a34;总共是12元素看,可以当做3行四列看待,这12个元素的名字依次是:a00 a01 a02 a03a10 a11 a12 a13a20 a21 a22 a23aij表示第i+1行第j+1列的元素int amn;该二维数组右下角位置的元素只能是am-1n-1初始化int a34 = 1,2,3,4,5,6,7,8,9,10,11,12;int a34 = 1, 2, 3, 4,5, 6, 7, 8,9, 10, 11, 12;操作输出二维数组的内容:int a34 = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ; int i, j;

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 考试专区 > 中考

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服