《C程序设计实例教程》山东科技大学机电学院1第一章C语言概述本章的主要内容:C语言的发展C语言的组成及特点C语言的调试方法程序设计入门《C程序设计实例教程》山东科技大学机电学院2本章的学习要求:了解:C语言的发展掌握:C语言的特点、简单C程序的组成掌握:C程序的上机调试步骤重点:简单C程序的组成、上机调试步骤难点:集成开发环境的学习、程序调试方法《C程序设计实例教程》山东科技大学机电学院3§1.1C语言的发展一、程序设计语言的发展:机器语言汇编语言高级语言面向过程面向对象CPU指令系统,由0、1序列构成的指令码组成如:10000000加10010000减用助记符号描述的指令系统如ADDA,B客观世界可以分类,对象是类的实例对象是数据和方法的封装对象间通过发送和接受消息发生联系程序设计是数据被加工的过程《C程序设计实例教程》山东科技大学机电学院4二、C语言发展过程产生过程时间:1972~1973地点:美国贝尔实验室目的:UNIX操作系统设计人:Ken.Thompson和Dennis.M.RitchieC标准标准C:K&R合著《TheCProgrammingLanguage》ANSIC:1983年87ANSIC:1987年1990年国际标准的ANSIC《C程序设计实例教程》山东科技大学机电学院5当前流行的编程语言VisualStudio6.0(VisualC++,VisualBasic,VisualJ++,VisualFoxpro)VisualStudio.net(2003,2005,2008)《C程序设计实例教程》山东科技大学机电学院6§1.2C语言的组成及特点C语言的特点简洁、紧凑,使用方便、灵活(32个关键字,5种基本语句[表达式语句、空语句、复合语句、函数调用语句、控制语句],9种控制语句)具有丰富的运算符和数据类型,便于实现各类复杂的数据结构能够直接访问内存的物理地址,进行位操作具有结构化控制语句,便于实现程序的模块化设计既可用于系统软件的开发,也适合于应用软件的开发具有效率高、可移植性强等特点《C程序设计实例教程》山东科技大学机电学院7例题1一个简单的小程序:#includestdio.h/*编译预处理包含命令*/voidmain()/*主函数*/{printf(hello,world!);/*格式输出函数*/}《C程序设计实例教程》山东科技大学机电学院8例题2#includestdio.h/*函数功能:计算两个整数相加之和入口参数:整型数据a和b返回值:整型数a和b之和*/intAdd(inta,intb){return(a+b);}/*主函数*/main(){intx,y,sum=0;printf(Inputtwointegers:);scanf(%d%d,&x,&y);/*输入两个整型数x和y*/sum=Add(x,y);/*调用函数Add计算x和y相加之和*/printf(sum=%d\n,sum);/*输出x和y相加之和*/}《C程序设计实例教程》山东科技大学机电学院9例题3判断一个数是否为素数。#includestdio.hvoidmain(){inti,n;scanf(%d,&n);for(i=2;in;i++)if(n%i==0)break;if(i==n)printf(notprime\n);elseprintf(isaprime\n);}《C程序设计实例教程》山东科技大学机电学院10例4正弦函数#includestdio.h#includemath.h#definePI3.1415926/*宏定义*/voidmain(){doublex;scanf(%lf,&x);/*输入数值*/x=x*PI/180;/*转换成弧度*/printf(sinx(%lf)=%lf\n,x,sin(x));/*调用系统函数*/}《C程序设计实例教程》山东科技大学机电学院11例4正弦函数#includestdio.h#includemath.h#definePI3.1415926/*宏定义*/doublesinx(doublex);/*函数声明语句*/voidmain(){doublex;scanf(%lf,&x);printf(sinx(%lf)=%lf\n,x,s);/*函数调用*/}doublesinx(doublex)/*函数定义*/{doubley,n=1,s=0;inti=1,f=-1;x=x*PI/180;y=x;while(fabs(y/n)1e-6){s=s+y/n;y=f*y*x*x;n=n*(i+1)*(i+2);i+=2;}}《C程序设计实例教程》山东科技大学机电学院12例5汉诺塔ABC《C程序设计实例教程》山东科技大学机电学院13例5汉诺塔#includestdio.hvoidmove(chars,chart){printf(%c-%c,s,t);}voidHanoi(intn,charone,chartwo,charthree){if(n==1)move(one,three);else{Hanoi(n-1,one,three,two);move(one,three);Hanoi(n-1,two,one,three);}}《C程序设计实例教程》山东科技大学机电学院14例5汉诺塔voidmain(){inth;printf(inputnumber:\n);scanf(%d,&h);printf(thesteptomoving%2ddiskes:\n,h);Hanoi(h,'A','B','C');getch();}《C程序设计实例教程》山东科技大学机电学院151.3C程序的调试方法C程序上机操作过程主要包括以下几个步骤:(1)编辑。选择合适的编辑程序,将C语言源程序通过键盘输入到计算机中,并保存为扩展名为“.c”的源文件。(2)编译。该过程对编辑好的源文件经过C编译程序进行编译,生产扩展名为.obj的目标文件。(3)连接。经过编译后生成的目标文件还是不能执行的,还需要通过连接程序将源文件生成的目标文件和其包含的库函数及其他目标文件连接后才能生成扩展名为.exe的可执行程序。(4)执行。执行过程是将连接生成的可执行文件在操作系统下运行,检查程序运行结果。《C程序设计实例教程》山东科技大学机电学院16C程序上机操作流程开始编辑编译有错?连接执行结果正确?源程序f.c目标程序f.obj库函数及其它目标程序可执行程序f.exe结束有无正确错误《C程序设计实例教程》山东科技大学机电学院171.4程序设计入门程序设计的过程,简单地说就是数据被加工的过程。人们可以通过程序在计算机中的执行来完成对计算机的各种控制。学习程序设计的目的就是学会控制计算机的能力。一个程序应包括:(1)对数据的描述。在程序中要指定数据的类型和数据的组织形式,即数据结构(datastructure)。(2)对操作的描述。即操作步骤,也就是算法(algorithm)。《C程序设计实例教程》山东科技大学机电学院18使用C语言进行程序设计的主要步骤包括:(1)分析所要处理的具体问题,确定需要的数据结构及解决问题的方法。(2)通过一定方式将数据结构和算法进行描述。(3)用C语言将解决问题需要的数据结构、算法进行描述,即编制C程序。(4)将编制好的C程序通过编译、连接、执行后得出解决问题的结果。《C程序设计实例教程》山东科技大学机电学院191.5TurboC2.0集成开发环境一、TurboC2.0集成开发环境主菜单内容有:FileEditRunCompileProjectOptionsDebugBreak/watch除Edit外,其他各项均有子菜单,只要用Alt加上某项中第一个字母,就可进入该项的子菜单中,由于篇幅限制,这里只介绍常用的部分功能菜单。《C程序设计实例教程》山东科技大学机电学院201.6VisualC++6.0集成环境调试启动VisualC++6.0创建新工程创建源文件源程序的调试与运行源程序书写源程序编译运行程序《C程序设计实例教程》山东科技大学机电学院21第二章数据类型内容提要:标识符命名;基本数据类型;常量和变量;常用运算符和表达式;运算符的优先级与结合性《C程序设计实例教程》山东科技大学机电学院22关键字(Keyword)又称为保留字,C语言中预先规定的具有固定含义的一些单词int,return等标识符(Identifier)系统预定义标识符,main,printf等用户自定义标识符,Add,x,y等运算符(Operator)34种,详见附录2C程序常见符号分类§2.1标识符和字符集《C程序设计实例教程》山东科技大学机电学院23分隔符(Separator)空格、回车/换行、逗号等其它符号大花括号“{”和“}”通常用于标识函数体或者一个语句块“/*”和“*/”是程序注释所需的定界符数据(Data)变量(Variable)常量(Constant)《C程序设计实例教程》山东科技大学机电学院24标识符:定义:用来标识变量、常量、函数等的字符序列组成:只能由字母、数字、下划线组成,且第一个字母必须是字母或下划线大小写敏感不能使用关键字长度:最长32个字符《C程序设计实例教程》山东科技大学机电学院25命名原则:见名知意不宜混淆如l与1,o与0例:判断下列标识符号合法性sumSumM.D.JohndayDate3daysstudent_name#33lotus_1_2_3charab_above$123《C程序设计实例教程》山东科技大学机电学院26C语言的标识符可分为以下3类。1.关键字:关键字是由C语言规定的具有特定意义的字符串,通常也称为保留字。(1)类型说明符。用于定义、说明变量、函数或其他数据结构的类型。如前面例题中用到的int,double等。(2)语句定义符。用于表示一个语句的功能。如例1.3中用到的ifelse就是条件语句的语句定义符。(3)预处理命令字。用于表示一个预处理命令,如前面各例中用到的include。《C程序设计实例教程》山东科技大学机电学院27C语言共有32个关键字:(由系统定义,不能重作其它定义)autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunsignedunionvoidvolatilewhile《C程序设计实例教程》山东科技大学机电学院282.特定字特定字是具有特殊含义的标识符。它们虽然不是关键字,但是在习惯上把它们看成关键字。所以一般用户定义的标识符也不要使用它们。特定字包括:defineundefincludeifdefifndefendifline《C程序设计实例教程》山东科技大学机电学院293.用户定义字用户定义字指用户按照语法规则定义的标识符。用户定义字可以用来标识用户自己使用的变量,符号常量、数据类型以及函数等。注意:(1)不能使用关键字和特定字。(2)用户定义字为了标识不同的对象,标识符的前8个字符要有区别。(3)标识符最好有含义。(4)避免使用容易混淆的字符。如l与1,0与o,z与2等。(5)大、小写代表不同的意义。(6)尽量不要与某个库函数同名《C程序设计实例教程》山东科技大学机电学院30字符集字符集是高级语言的编译系统所能识别的字母、数字和特殊符号。每种高级语言都有自己特定的字符集。C语言的字符集包括:(1)大、小写英文字母:A,B,…,Z,a,b,…z。(2)数字:0,1,2,…,9。(3)运算符:+–*/%=&|?!^~。(4)括号