哈工大2010新版C语言.ppt

上传人:max****ui 文档编号:11495976 上传时间:2020-04-25 格式:PPT 页数:111 大小:2.67MB
返回 下载 相关 举报
哈工大2010新版C语言.ppt_第1页
第1页 / 共111页
哈工大2010新版C语言.ppt_第2页
第2页 / 共111页
哈工大2010新版C语言.ppt_第3页
第3页 / 共111页
点击查看更多>>
资源描述
,哈尔滨工业大学(威海),CProgrammingLanguage,C语言程序设计,C语言的祖师爷DennisM.Ritchie,http:/www.cs.bell-,Ritchie漫画像,Cisquirky,flawed,andanenormoussuccess.,C诡异离奇、缺陷重重,却获得巨大成功,Whoami?,姓名:徐永东联系方式:手机:15898972972Email:ydxu(推荐使用Email方式交流答疑)ftp:/172.17.17.17/课件/徐永东用户名:test(pub),密码:123456(提交作业和实验报告),Huru?,用过计算机吗?用来干什么?学过编程吗?哪些语言?,课程特点,紧密围绕在以C语言为核心的课中央周围,进行计算机科学的启蒙教育,重点在于程序设计乐趣与能力重于知识,考试是?,成绩是!自学、自主、自信、自乐人人做“稀饭”,课程说明,课程性质:必修课学时安排:4230考核方式:笔试70%实验20%+平时10%平时要求:出勤作业课程网站:见介绍,课堂帮规,不碍他人,为所欲为可随时进入,不可任意外出可大声喧哗,不可窃窃私语可伏案小睡,不可鼾声大作可眉来眼去,不可动手动脚喧哗有奖,自由万岁藐视教师,鄙视书本,课外帮规,人手一书,不要重样禁止提问,大方讨论说出你对问题的看法思想共享,程序保密藐视教师,鄙视书本,必备知识,中文阅读,英文查字典www浏览,下载,搜索收发emailWindows基本操作文件管理,忠告,不要溺爱本课,而冷落其它!,程序演示welcome.c,程序演示welcome.c,程序演示pro1.c,程序演示pro1.c,程序演示music1.c,程序演示music1.c,程序演示music.c,程序演示music.c,程序演示fk.c,程序演示fk.c,程序演示连连看,C语言的四种常用编程环境,DOS状态下:TurboC2.0,TurboC,C语言的创世纪,一切从一个叫“SpaceTravel”的电子游戏开始为了让他的游戏能在PDP-7上运行,KenThompson用汇编语言给PDP-7写了一个操作系统UNIX汇编太不好用了,Thompson需要高级语言试验了一些高级语言,包括Fortran,都不理想他在BCPL基础上,自己设计了一个B语言UNIX开始发展,B也不够用了DennisRitchie加入,把B改造成C开始用C重写UNIX,流行语言排行榜,C语言与程序设计是计算机专业和非计算机专业的一门技术基础选修课程,大学一年级或大二年级开设。通过本课程的学习使学生更好地了解和应用计算机,培养学生应用计算机独立解决问题的能力,让学生真正掌握一门使用计算机的语言工具,为学生今后无论是从事计算机或非计算机工作都奠定了良好的、扎实的计算机语言基础。,你应该知道,本课程的性质、目的与任务,我们将遵照国家教委考试中心制定的“二级C语言考试大纲”来进行教学,所以在内容上紧扣大纲考试要求,在语言上力求通俗易懂、循序渐进。,你应该知道,你应该知道,自主学习重视上机实践上机要求禁做与课程学习无关的事情看懂编译信息,逐步学会各种调试方法算法及程序代码在上机前搞定,本课程学习方法,讲,课,顺,序,请打开课本。,第一章简单C语言设计,简单的C程序实例,/*一个简单的C程序实例*/*purpose:Ihaveadreamauthor:ZhangWeigangcreated:2008/06/3021:18:08*/#include#includevoidmain(void)intnNumber1;nNumber1=1;printf(“HelloClanguage!n”);printf(“IhaveadreamthatonedayIwillbeskillfulinCprogramming!n”);printf(“IhaveadreamthatonedayIwillbeafamouscomputerscientist!n”);printf(“IhaveadreamthatonedayIwillsolvetheGoldbachsconjectureproblemand”“provethat%d+%d=%dbyusingC!n”,nNumber1,nNumber1,2);printf(“Ihavaadreamtoday!n”);,HelloClanguage!IhaveadreamthatonedayIwillbeskillfulinCprogramming!IhaveadreamthatonedayIwillbeafamouscomputerscientist!IhaveadreamthatonedayIwillsolvetheGoldbachsconjectureproblemandprovethat1+1=2byusingC!Ihavaadreamtoday!,X1,起止端点,输入/输出,一般处理,预定义处理,条件判断,连接点,流程线,注释框,用程序流程图来描述程序,End,程序流程图描述刚才的程序,简单的C程序实例,/*一个简单的C程序实例*/*purpose:Ihaveadreamauthor:ZhangWeigangcreated:2008/06/3021:18:08*/#include#includevoidmain(void)intnNumber1;nNumber1=1;printf(“HelloClanguage!n”);printf(“IhaveadreamthatonedayIwillbeskillfulinCprogramming!n”);printf(“IhaveadreamthatonedayIwillbeafamouscomputerscientist!n”);printf(“IhaveadreamthatonedayIwillsolvetheGoldbachsconjectureproblemand”“provethat%d+%d=%dbyusingC!n”,nNumber1,nNumber1,2);printf(“Ihavaadreamtoday!n”);,注释,打开另一个文件,主函数名,变量声明语句,赋值语句,函数调用语句,C程序结构,HelloClanguage!IhaveadreamthatonedayIwillbeskillfulinCprogramming!IhaveadreamthatonedayIwillbeafamouscomputerscientist!IhaveadreamthatonedayIwillsolvetheGoldbachsconjectureproblemandprovethat1+1=2byusingC!Ihavaadreamtoday!,C程序结构,简单程序扩展,计算器解决方案,(1)变量声明:声明的变量用于存放数据;(2)变量初始化:通过变量赋值或通过键盘输入给出;(3)输出结果:将结果输出到屏幕或窗口;(4)在对变量初始化时,要保证作除法运算有意义,即保证除数不为零;(5)取余运算仅对于整数有意义。,计算过程实现及分析,#include#includevoidmain(void)intlOperator,rOperator;/*定义两个整型变量,用于存放左右操作数*/intnResult1,nResult2,nResult3,nResult4,nResult5;/*定义五个整型变量,用于存放结果*/lOperator=4;rOperator=5;nResult1=lOperator+rOperator;/*计算lOperator与rOperator相加并将和存入nResult1中*/nResult2=lOperator-rOperator;/*计算lOperator与rOperator相减并将差存入nResult2中*/nResult3=lOperator*rOperator;/*计算lOperator与rOperator相乘并将积存入nResult3中*/nResult4=lOperator/rOperator;/*计算lOperator与rOperator相除并将商存入nResult4中*/nResult5=lOperator%rOperator;/*算lOperator与rOperator的模并将余数存入nResult5中*/printf(“%d“,nResult1);/*将和显示在屏幕上*/printf(“%d“,nResult2);/*将差显示在屏幕上*/printf(“%d“,nResult3);/*将积显示在屏幕上*/printf(“%d“,nResult4);/*将商显示在屏幕上*/printf(“%d“,nResult5);/*将余数显示在屏幕上*/,关于基本整型,intlongintunsignedintfloatdoublechar,常用的数据类型与存储方式,数组文件结构体共用体,void,数据类型(DataType),数据类型多型遍地走,安知我多大?,数据为什么要区分类型?不同类型的数据代表不同的数据表示形式合法的取值范围占用内存空间大小可参与的运算种类,基本数据类型,int整数,在目前绝大多数机器上占4个字节。TC2中是2个字节float单精度浮点数,一般是4个字节长double双精度浮点数,一般是8个字节长char字符,一般是1个字节长用来表示256个ASCII字符,或者0255的整数,数据类型修饰符,shortshortint,短整数,一般2个字节长。通常简写为shortlonglongint,长整数,一般是4个字节长。通常简写为longlongdouble,长双精度(高精度)浮点数,一般是10个字节长。signed用来修饰char、int、short和long,说明他们是有符号的整数(正整数、0和负整数)。一般缺省都是有符号的,所以这个修饰符通常省略unsigned用来修饰char、int、short和long,说明他们是无符号的整数(正整数和0),1byte,在16位环境中(DOS),占用2个字节的空间,1byte,int,-3276832767,在32位环境中(Windows等),占用4个字节的空间,1byte,inta;a=9;,1byte,Doyouknow,-9?,a,9,2000,变量名,地址编号,2001,原码:用二进制的最高位表示数符用0,表示正数用1,表示负数数值部分则为真值的绝对值,常用的有三种表示方法,原码,机器数,反码,补码,补码:则先将其表示成原码,然后除符号外,再逐位取反(即0变1,1变0)最后再加上1。,例如:求2的补码(即-2在内存中的储存方式),1000000000000010,原码,负数以补码形式存储,反码,补码,1111111111111101,1111111111111110,x-y=x+(-y),补码:神奇地化减法为加法。,例如:求7-6=7+(-6),0000000000000111,7,-6补码,结果=1,1111111111111010,0000000000000001,超出取值范围会怎样?,TC2中int的范围是-215215-1如果我们给它一个小于-215或者大于215-1的数会如何呢?,小蛇能吞下大象吗?,溢出(Overflow)造成的危害,一台安装了Windows95/98的机器,如果连续运行49.7天没有重新启动,可能死机原因:Windows自启动时刻起,有一个计数器,记录系统已经运行了多少毫秒。这个计数器是个unsignedlong类型的变量unsignedlong的最大值是:4294967295一天有24*60*60*1000=86400000毫秒4294967295/86400000=49.71026961805当49.7天的时候,此计数器会溢出,引起死机,使用变量要注意,不要对变量所占的字节数想当然用sizeof获得变量或者数据类型的长度sizeof(int);,2_Sizeof,1byte,在计算机中占用4个字节的空间,1byte,1byte,1byte,float,此空间只能用于存放实型数据(即32位二进制数),小数部分(包括符号)3个字节,指数部分(包括指数的符号)1字节,以指数形式存储,例如:floatx;,指数形式:0.31415926E1,1byte,3byte,小数部分,指数,数符,x=3.1415926;,x,0.31415926E1,1byte,char,用于表示字符型数据在计算机中占用1个字节的空间,例如:charch;,ch=a;,单引号,双引号,a,“student”,AmericanStandardCodeforInformationInterchange,ASCII码,a-97(ASCII),例如:,27=128,0-9,A-Z,a-z及各种运算符号、标点和控制符号,变量与常量,常量(常数)不动如山是一种在程序中保持固定类型和固定值的数据。,变量我的地盘我做主是在程序执行过程中可以改变、赋值的量。是由编程人员自己定义的。,变量的的命名规则,lOperator,rOperator,nResult为变量标识符,变量的名字遵循标识符的命名规则:(1)由英文字母、数字和下划线组成,其必须以英文字母或下划线开头;(2)不允许使用关键字作为标识符的名字;(3)标识符命名应做到“见名知意”;(4)标识符区分大小写。,变量声明的一般形式,类型说明符变量名标识符1,变量名标识符2,.;intlOperator,rOperator;,技巧:在使用变量时,必须遵循”先定义、后使用”的原则。,关键字,关键字(Keyword)又称保留字,它们是C语言中预先规定的具有固定含义的一些单词,例如:int,return等。C语言提供的关键字总共有32个,详见附录C。,C程序常见符号分类,关键字(Keyword)又称为保留字,C语言中预先规定的具有固定含义的一些单词标识符(Identifier)系统预定义标识符用户自定义标识符函数名、变量名运算符(Operator):详见P17分隔符(Separator)空格、回车/换行、逗号等其它符号大花括号“”和“”通常用于标识函数体或者一个语句块“/*”和“*/”是程序注释所需的定界符数据(Data)变量(Variable)常量(Constant),计算过程实现及分析,#include#includevoidmain(void)intlOperator,rOperator;/*定义两个整型变量,用于存放左右操作数*/intnResult1,nResult2,nResult3,nResult4,nResult5;/*定义五个整型变量,用于存放结果*/lOperator=4;rOperator=5;nResult1=lOperator+rOperator;/*计算lOperator与rOperator相加并将和存入nResult1中*/nResult2=lOperator-rOperator;/*计算lOperator与rOperator相减并将差存入nResult2中*/nResult3=lOperator*rOperator;/*计算lOperator与rOperator相乘并将积存入nResult3中*/nResult4=lOperator/rOperator;/*计算lOperator与rOperator相除并将商存入nResult4中*/nResult5=lOperator%rOperator;/*算lOperator与rOperator的模并将余数存入nResult5中*/printf(“%d“,nResult1);/*将和显示在屏幕上*/printf(“%d“,nResult2);/*将差显示在屏幕上*/printf(“%d“,nResult3);/*将积显示在屏幕上*/printf(“%d“,nResult4);/*将商显示在屏幕上*/printf(“%d“,nResult5);/*将余数显示在屏幕上*/,有关表达式与表达式语句,表达式由函数、变量、运算符、常量等组成,每个表达式都有具体的数值。表达式+分号构成了表达式语句。(1)简单赋值运算符记为“=”,它的作用是将一个表达式的值赋给一个变量。由“=”连接的式子称为赋值表达式。其一般形式为:变量=表达式(2)赋值运算符是右结合性运算符。如x=y=z,由于“=”的右结合性,应先执行y=z,再执行x=(y=z)运算。,有关表达式与表达式语句,(3)如果赋值运算符两边的数据类型不相同,系统将自动进行类型转换,即把赋值号右边的类型换成左边的类型。(4)在程序中常常需要对变量赋初值,以便使用变量。在定义时赋以初值的方法,称为初始化。为了方便,在变量说明中赋初值的一般形式为:类型说明符变量1=值1,变量2=值2,;,有关算术运算符,(1)描述数据运算的特殊符号称为运算符。(2)算术运算符的优先级:当不同优先级的运算符进行混合运算时,按照由高到低运算符的优先级进行计算。(3)算术运算符的结合性:同一优先级的算术运算符进行混合运算时,结合性是按自左至右,即先左后右。,技巧:在数值运算时,一般先考虑运算符的优先级,再考虑结合性。,计算过程实现及分析,#include#includevoidmain(void)intlOperator,rOperator;/*定义两个整型变量,用于存放左右操作数*/intnResult1,nResult2,nResult3,nResult4,nResult5;/*定义五个整型变量,用于存放结果*/lOperator=4;rOperator=5;nResult1=lOperator+rOperator;/*计算lOperator与rOperator相加并将和存入nResult1中*/nResult2=lOperator-rOperator;/*计算lOperator与rOperator相减并将差存入nResult2中*/nResult3=lOperator*rOperator;/*计算lOperator与rOperator相乘并将积存入nResult3中*/nResult4=lOperator/rOperator;/*计算lOperator与rOperator相除并将商存入nResult4中*/nResult5=lOperator%rOperator;/*算lOperator与rOperator的模并将余数存入nResult5中*/printf(“%d“,nResult1);/*将和显示在屏幕上*/printf(“%d“,nResult2);/*将差显示在屏幕上*/printf(“%d“,nResult3);/*将积显示在屏幕上*/printf(“%d“,nResult4);/*将商显示在屏幕上*/printf(“%d“,nResult5);/*将余数显示在屏幕上*/,有关函数printf(),printf函数调用的一般形式为:,printf(“格式控制字符串”,输出表列);,结果分析,编译运行程序compute.c,显示程序运行结果,如图1-12所示。,图1-12compute.c程序运行结果,格式输出函数,格式输出函数printf(格式控制字符串,输出参数表);输出若干个任意指定类型的数据例子:printf(“Hello,World!n”);printf(“%d,%dn”,a,b);printf(“sum=%dn”,sum);,格式输出函数,printf(a=%db=%f,a,b);,函数名,输出表列,普通字符,格式控制格式说明:%普通字符原样输出,x=34;y=3.14;Printf(“x=%d,y=%fn”,x,y);,输出:x=34,y=3.14,%d以带符号十进制整数输出%o以八进制无符号整数输出(无前导0)%x以十六进制无符号整数输出(无前导0 x)%u以十进制无符号整数输出%c以字符形式输出单个字符%s输出一个字符串%f以小数形式输出浮点数(6位小数)%e以标准指数形式输出(6位小数)%g选用%f,%e中输出宽度较小的一种格式,printf格式字符(P315),l长整型整数,加在d、o、x、u前Llongdouble型数,加在f、e、g前m表示数据占用的最小宽度(例如:%3d)数据宽度大于m,按实际宽度输出数据宽度小于m时,补空格n对实数表示输出n位小数(例如:%5.3d)对字符串表示最多输出的字符个数-改变输出内容的对齐方式缺省为右对齐,printf附加格式说明符,整型数据的输出,printf(格式控制,输出参数表);格式控制说明-%.%d:以十进制形式输入、输出整数%o:以八进制形式输入、输出整数%x:以十六进制形式输入、输出整数,#includevoidmain()printf(“%d,%o,%xn”,10,10,10);printf(“%d,%d,%dn”,10,010,0 x10);printf(“%d,%xn”,012,012);,运行结果:10,12,a10,8,1610,a,#includevoidmain()inta,b;scanf(“%o%d”,输入1717,运行结果17f17,已知:b的ASCII码98#includemain()printf(“%c,%dn”,b,b);printf(“%c,%dn”,98,98);printf(“%c,%dn”,97,b-1);,运行结果b98b98a97,关于实型,实型家族包括:单精度型(float)和双精度型(double)。实型的取值范围与值的精度与机器有关,一般float占4字节(32位),提供7位有效数字;double占8字节,提供15-16位有效数字。,程序清单1-3division.c,/*一个关于除法运算符的程序实例*/*purpose:验证/运算符的操作数都为整数或有个为实数的结果是不同的author:Wangweicreated:2008/07/1015:19:20*/#include#includevoidmain(void)printf(“%d,%dn“,20/7,-20/7);printf(“%f,%fn“,20.0/7,-20.0/7);,注意:,求余运算符(%)要求参与运算的量均为整型,运算的结果等于两数相除后的余数。两整数相除结果仍为整数,小数部分全部舍去,并非四舍五入。,实型数据的输出,float和double使用相同的格式控制说明%f以小数形式输出浮点数,保留6位小数%e以指数形式输出1位整数.5位小数e3位指数,#includeVoidmain()floatf=123.45;doubled=3.1415926;printf(“%f,%en”,f,f);printf(“%f,%en”,d,d);printf(“%5.3f,%5.2f,%.2fn”,d,d,d);,一共5位,小数3位,小数点一位,运行结果为:123.450000,1.23450e+023.141593,3.14159e+003.142,3.14,3.14,#includemain()floatf1=100.15799,f2=12.55,f3=1.7;intn1=123,n2=45,n3=6;printf(printfWITHOUTwidthorprecisionspecifications:n);printf(%fn%fn%fn,f1,f2,f3);printf(%dn%dn%dn,n1,n2,n3);printf(printfWITHwidthandprecisionspecifications:n);printf(%5.2fn%6.1fn%3.0fn,f1,f2,f3);printf(%5dn%6dn%3dnn,n1,n2,n3);,再看一个例子,1.2.4深入解读,1.细节的解读数据是程序处理的对象,数据可以依其本身的特点进行分类。在程序中,我们使用变量这个抽象实体来存储计算机中的数据,变量的使用要遵从先声明后使用的规则。当为不同的变量赋值的时候,就必须使用赋值运算符。,程序清单overflow.c程序1-4,/*一个关于整数溢出的程序实例*/*purpose:数据超过表示范围就会溢出author:YanJianencreated:2008/07/1015:58:22*/#include#includevoidmain(void)shortintiNum;iNum=32767;iNum=i_num+1;printf(“num=%dn“,iNum);,查看一下结果是什么,思考一下为什么会出现这种情况呢?,2.如何解决一个问题,第一步,分析问题。第二步,给出解决问题的方法和步骤。第三步,代码编写。第四步,正确性验证。,3.编程风格的问题,程序清单1-5style.c/*一个代码风格混乱的程序实例*/*purpose:代码混乱的弊端author:YanJianencreated:2008/07/1016:21:23*/#include#includelongb,c=2800,d,e,f2801,g;voidmain(void)for(;b-c;)fb+=10000/5;for(;d=0,g=c*2;c-=14,printf(“%.4d”,e+d/10000),e=d%10000)for(b=c;d+=fb*10000,fb=d%-g,d/=g-,-b;d*=b);getch();,能读懂吗?,#include/*对fahr=0,20,.,300打印华氏温度与摄氏温度对照表*/main()intfahr,celsius;intlower,upper,step;lower=0;/*温度表的下限*/upper=300;/*温度表的上限*/step=20;/*步长*/fahr=lower;while(fahr=upper)celsius=5*(fahr-32)/9;printf(%dt%dn,fahr,celsius);fahr=fahr+step;,代码风格,1_F2C1,有关编程风格,非技术性风格要求:程序代码的布局,包括注释和格式控制的使用;变量和函数的命名规则与标准;代码书写习惯等内容;(1)选择合适的名字对函数、常量和变量的命名,要采用统一的格式或长度要求。(2)运行缩进规则。(3)多行书写。(4)适当的使用注释。,有关编程风格,技术性风格要求包括程序结构的选择、程序语句的使用以及编程技巧等方面内容,要求读者随着学习内容的不断深入,仔细研究C语言的技术特点,在实践中探索、改进。,1.3VC+6.0编译环境简介,1.3.1VC+6.0的安装与启动VC+6.0的安装过程,详见附录B。安装好VC+6.0后,按照开始程序MicrosoftVisualStudio6.0MicrosoftVisualC+6.0即可启动VC+6.0。,1.3.2源程序录入,(1)建立工作目录(2)建立工程项目(3)新建C源程序,图1-15New对话框中创建项目图1-16New对话框中创建源文件,1.3.3编译、连接和运行,(1)编译组建(Build)编译(Compile),快捷键Ctrl+F7,如图1-17所示(图中1)。,编译或组建结果,1编译快捷键,1编译菜单,2组建菜单,2组建快捷键,3执行菜单,3执行快捷键,1.3.3编译、连接和运行,(2)连接:组建(Build)组建(Build),快捷键F7,如图1-17所示(图中2)。成功后,生成CompT.exe可执行文件。(3)链接建立exe:组建(Build)执行(Execute),快捷键Ctrl+F5,如图1-17所示(图中3)。运行没有问题,可弹出一命令行窗口,显示结果。(4)编译、连接和运行的含义,1.3.4调试,(1)设置断点,单击此处添加或删除断点,设置好的断点,(2)开始调试,或单击此处,运行至断点,(3)单步运行,(4)自动查看变量,1.3.5退出编译环境,(1)关闭在菜单中选择:文件(File)关闭工作空间(CloseWorkSpace)。(2)退出在菜单中选择:文件(File)退出(Exit)。,1.4本章小结,知识的层面(1)函数是C语言的基本单位(2)注释的使用(3)预处理指令#include(4)空白符与分隔符(5)数据类型与变量的声明(6)算术运算符和赋值运算符(7)VC+6.0编译环境,方法的层面,(1)分析问题的方法通过学习简易计算器的设计与实现,初步了解了软件制作的过程:功能分析,解决方案(画出流程图),代码编写。(2)编程风格的培养计算机程序设计是一门艺术,不仅仅体现在程序本身的算法选择、结构设置以及编程技巧等方面。,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!