您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 0C语言学习大纲__郝斌(讲解)
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个关键词:(有系统定义,不能重做其他定义)autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunsignedunsignedunionvoidvolatilewhile5、课程规划c语言简介第一讲、基本编程知识第二讲、数据类型第三讲、运算符和表达式第四讲、流程控制(所有语言都一样的)第五讲、函数(体现出面向过程和面向对象的区别)第六讲、数组第七讲、指针(c语言的灵魂)第八讲、变量的作用域和存储方式第九讲、扩展数据类型第十讲、专题:字符串的处理进制转换补码动态内存分配(java、数据结构必学)综合应用:链表的使用6、举例子:一元二次方程#includestdio.h#includemath.hintmain(void){//把三个系数保存到计算机中inta=1;//=不表示相等,表示赋值intb=2;intc=3;doubledelta;//delta存放的是b*b-4*a*cdoublex1;//存放一元二次方程的其中一个解doublex2;//存放一元二次方程的其中一个解delta=b*b-4*a*c;if(delta0){x1=(-b+sqrt(delta))/(2*a)x2=(-b-sqrt(delta))/(2*a)printf(该一元二次方程有两个解,x1=%f,x2=%f\n,x1,x2);}elseif(delta==0){x1=(-b)/(2*a);x1=x2;//右边赋给左边printf(该一元二次方程有一个唯一解,x1=x2=%f\n,x1);}else{printf(无解\n);}}Helloword程序举例#includestdio.hintmain(void){printf(欢迎大家学习C语言!);return0;}C语言编写的病毒举例:1、龌龊的程序:/*龌龊的程序!/*#includestdio.h#includewindows.h#includemalloc.hintmain(void){intc;inti;intj;Nihao:printf(1:死机\n);printf(2:机房爆炸\n);printf(请选择:);scanf(%d,&c);If(c==1){System(shutdown-s-t60)}elseif(2==c){printf(你太坏了我要惩罚你!\n);for(j=0;j10;++j)System(start);}else{printf(你敲错了,请重新输入!\n)gotonihao;}return0;}2、内存泄露(占满内存)程序导致死机实例#includestdio.h#includemalloc.hintmain(void){while(1){int*p=(int*)malloc(1000);}return0;}C语言编程预备知识1、cpu内存条硬盘显卡主板显示器之间的关系2、Helloworld程序如何运行起来的3、什么是数据类型基本类型数据整数整型——int--4字节短整型——shortint——2字节长整型——longint——8字节浮点数【实数】单精度浮点数——float——4字节双精度浮点数——double——8字节字符char——1字节复合类型数据结构体枚举共用体(已淘汰)4、什么是变量变量的本质是内存中一段存储空间5、cpu内存条vc++6.0操作系统之间的关系6、变量为什么必须初始化所谓初始化就是赋值的意思7、如何定义变量数据类型变量名=要赋的值;等价于数据类型变量名;变量名=要赋的值;举例子:inti=3;等价于inti;i=3;inti,j;等价于inti;intj;inti,j=3;等价于inti;intj;j=3;inti=3,j=5;等价于inti,j;i=5;j=5;inti,j;i=j=5;等价于inti,j;i=5;j=5;8、什么是进制十进制就是逢十进一二进制就是逢二进一生活中用到进制的例子:一周七天:七进制一年十二个月:十二进制一小时六十分钟:六十进制电脑中的数据:二进制进制转化:什么叫进制进制就是逢几进一我们说的N进制实际就是指逢N进一我们的计算机只识别二进制人类最习惯使用的是十进制为了实际需要我们又建立了八进制和十六进制C语言规定八进制前要加0(注意是零不是字母o),十六进制前要加0X或0x,十进制前什么都不加!在汇编中:在数字后加字母B表示二进制数,加字母O表示八进制数,加字母D表示十进制,加字母H表示十六进制。例:1011B为二进制数1011,也记为(1011)21357O为八进制数1357,也记为(1357)82049D为十进制数2049,也记为(2049)103FB9H为十六进制数3FB9,也记为(3FB9)16什么叫n进制十进制十个基数,逢10进一基数:0123456789二进制二个基数逢二进一基数:01八进制8个基数逢8进一基数:01234567十六进制16个基数逢16进一基数:0123456789abcdef或0123456789ABCDEF十进制(D)二进制(B)八进制(O)十六进制(0x)00001234567891011121314159、常量在c语言中如何表示的整数十进制:传统的写法十六进制:前面加0x或0X,是数字0加x八进制:前面加数字0浮点数:常用计数制对照表传统写法floatx=3.2;//传统科学计数法floatx=3.2e3;//x的值是3200floatx=123.45e-2;//x的值是1.2345字符单个字符用单引号括起来'A'表示字符A'AB'是错误的AB是正确的字符串用双引号括起来A正确,因为A代表了'A''\0'的组合10、常量以什么样的二进制代码存储在计算机中整数是以补码的形式转化为二进制代码存储在计算机中的实数是以IEEE754标准转化为二进制代码储存在计算机中的具体可参见末尾的穿插在课堂中的零散知识笔记字符的本质实际也是与整数的存储方式相同11、代码规范化代码的可读性更高【容易让别人和自己看懂】是程序更不容易出错林锐《高质量C/C++编程》代码要成对的敲12、什么是字节字节就是存储数据的单位,并且是硬件所能访问的最小单位1字节=8位1K=1024字节1M=1024K1G=1024M买硬盘时的换算是以1000为单位的13、不同类型的数据之间相互赋值的问题暂不考虑inti=45;longj=102345;i=j;printf(%d%d\n,i,j);floatx=6.6;doubley=8.8;printf(%f%lf\n,x,y);14、什么是ASCIIASCII不是一个值,而是一种规定,ASCII规定了不同的字符是使用哪个整数值去表示它规定了'A'--65'B'--66'a'--97'b'--9815、字符的存储【字符本质上与整数的存储方式相同】基本的输入和输出函数的用法printf()----(重点讲)将变量的内容输出到显示器上四种用法1.printf(字符串\n)2.printf(输出控制符,输出参数);3.printf(输出字符1输出字符2。。。。,输出参数1,输出参数2,。。。);输出控制符和参数的个数必须一一对应4.printf(输出控制符非输出控制符,输出参数);输出控制符包含如下%d--int(十进制)%ld--longint%c--char%f--float%lf--double%x(或者%X或者%#X)--int或longint或shortint%o--同上%s--字符串为什么需要输出控制符1.01组成的代码可以表示数据也可以表示指令2.如果01组成的代码表示的是数据的话,那么同样的01代码组合以不同的输出格式输出就会有不同的输出结果scanf()----Java中已经没有了两种用法:用法一:scanf(输入控制符,输入参数);功能:将从键盘输入的字符转化为输入控制符所规定格式的数据,然后存入已输入参数的值为地址的变量中。用法二:scanf(非输入控制符输入控制符,输入参数);功能:将从键盘输入的字符转化为输入控制符所规定格式的数据,然后存入以输入参数的值为地址的变量中非输入控制符必须原样输入如何使用scanf编写出高质量代码1.使用scanf之前最好先使用printf提示用户以什么样的方式来输入2.Scanf中尽量不要使用非输入控制符,尤其是不要用\n3.应该编写代码对用户的非法输入做适当的处理【非重点】while((ch=getchar())!='\n')continue;运算符算术运算符+-*/(除)%(取余数)除法的运算结果和运算对象的数据类型有关,两个数都是int,则商就是int,若商有小数,则截取小数部分;被除数和除数中只要有一个或两个都是浮点型数据,则商也是浮点型,不截取小数部分。如:16/5==316/5.0==3.20000-13/4==-4-13/-3=43/5=05/3==1最经典的例题就是求s=1+1/2+1/3+1/4+1/5......+1/100的值。取余的运算对象必须是整数,结果是整除后的余数,其余数的符号与被除数相等。如:13%3==113%-3==1-13%3==-1-13%23==-133%5==3关系运算符==!=(不等于)==(等于)逻辑运算法!(非)&&(并且)||(或)!真假!假真真&&真真真&&假假假&&真假假&&假假真||假真假||真真真||真真假||假假C语言对真假的处理非零是真零是假真是1表示假使0表示&&左边的表达式为假右边的表达式肯定不会执行||左边的表达式为真右边的表达式肯定不会执行赋值运算符=+=*=/=-=优先级别算术关系逻辑赋值附录一些琐碎的运算符知识自增自减三目运算符逗号表达式流程控制(学习c语言的第一个重点)1.什么是流程控制程序代码执行的顺序2.流程控制的分类顺序选择定义某些代码可执行,也可能不执行,有选择的执行某些代码分类if1.if最简单的用法格式:if(表达式)语句功能:如果表达式为真,执行语句如果表达式为假,语句不执行2.if的范围问题(重点)1.if(表达式)语句A;语句B;解释:if默认只能控制语句A的执行或不执行if无法控制语句B的执行或不执行或者讲:语句B一定会执行2.If(表达式){语句A;语句B;}此时if可以控制语句A和语句B由此可见:if默认只能控制一个语句的执行或不执行,如果想控制多个语句的执行或不执行就必须把这些语句用{}括起来。3.if...else...的用法4.if...elseif...else...的用法格式:if(表达式1)A;elseif(表达式2)B;if(表达式3)C;elseD;5.C语言对真假的处理非零是真零就是假真用一表示假用零表示6.if举例---求分数的等级7.if的常见问题解析1.空语句的问题if(32);等价于if(32);//这是一个空语句2.if(表达式1)A;elseB;是正确的if(表达式1);A;elseB;是错误的3.if(表达式1)A;elseif(表达式2)B;if(表达式3)C;elseD;即便表达式1和2都成立,也只会执行A语句4.if(表达式1)A;elseif(表达式
本文标题:0C语言学习大纲__郝斌(讲解)
链接地址:https://www.777doc.com/doc-6403668 .html