C语言详细教程(完整版)_第1页
C语言详细教程(完整版)_第2页
C语言详细教程(完整版)_第3页
C语言详细教程(完整版)_第4页
C语言详细教程(完整版)_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言程序设计——2010年度春季学期CProgrammingLanguage教学安排适应专业:非计算机专业学时:48先修课程:计算机文化基础教材:《C语言程序设计》,马德骏等编著任课教师:钟钰2教学环节课前预习讲授作业(上机)答疑答疑时间:星期四 12:00~13:30地点:鉴主-12楼-计算机技术研究所第6周到第18周考试3上机安排地点:南湖计算中心机房时间:待定上机内容:随教学进度根据配套的实验书(上机调试每次课堂作业)要求:所有作业必须独立完成作业必须经上机调试通过上机考勤3次缺席,按不及格处理发现上机时间玩游戏等,按缺席一次处理4实验安排实验一1机时TurboC集成环境的熟悉与使用实验二1机时数据类型、运算符和表达式实验三2机时顺序程序设计实验四2机时选择结构程序设计实验五4机时循环结构程序设计实验六4机时数组实验七4机时函数实验八2机时指针5课程要求课前请做好预习保持课堂安静,头脑清醒,思维活跃认真、独立、按时完成并提交作业重视上机实践,有效利用宝贵的上机时间6计算机技术研究所钟钰caddilester@C语言程序设计Lecture1

CProgrammingLanguage教学目的:掌握“文化基础”中的相关概念,明确学习方法,了解C语言基本知识。教学要求:明确本课程的目标及学习方法,复习“文化基础”中与C语言相关的知识:数制、编码、计算机系统组成,了解算法的概念及表示、C语言及标识符、C语言基本结构。学时:2学时81.1引言1.2算法和程序设计初步1.3C语言简介1.4集成开发环境TurboC2.0简介9数据非数值数据:编码数值数据:二进制定点法浮点法西文:ASCII汉字:国标码图形:……信息与数据:信息存在于自然界,有多种形式;数据是信息在计算机中的表示,以二进制形式存在。原码、反码、补码数制转换10有符定点整数ds

dndn-1dn-2……..d1

↑↑

符号位

数值部分小数点无符定点整数dndn-1dn-2…………..d1

数值部分小数点11数值数据的编码方法:

前面讨论的是数值数据在计算机中的存放格式,下面讨论对数值数据进行编码的方法。

①原码表示法:(假定用八个二进制位表示)

a=+51(a)2=(+00110011)2

则[a]原=00110011a=-127(a)2=(-01111111)2则[a]原=11111111

原码表示法在八个二进制位中的表示范围:

-127≤a≤+127[+0]原=00000000[-0]原=10000000

要点:最高位作为符号位,若正数,则最高位是0,若负数,则最高位是1。

12②反码表示法:(假定用八个二进制位表示)通过一个二进制整数的原码得到所谓反码:当a为正数时,[a]

原=[a]

,当a为负数时,则保持[a]

原的符号位不变,其余各个二进制位逐位取反,即0变1,1变0。如:

a=+51[a]原=00110011则[a]

=[a]

原=00110011a=-51[a]原=10110011则[a]反=11001100

反码表示法在八个二进制位中的表示范围:

-127≤a≤+127[+0]反=00000000[-0]反=11111111

要点:由原码得到反码。若正数,则反码与原码相同,若负数,则最高位不变,其余逐位取反。

13③补码表示法:(假定用八个二进制位表示)通过一个二进制整数的反码得到所谓补码:当a≥0时,[a]

补=[a]

,当a<0时,则[a]

补=[a]

反+1,如:

a=+51[a]原=00110011则[a]补=[a]

=[a]

原=00110011a=-51[a]原=10110011[a]反=11001100则[a]补=[a]

反+1

=11001101

补码表示法在八个二进制位中的表示范围:

-128≤a≤+127[+0]补=00000000

[-128]补=10000000

要点:由反码得到补码。若正数,则反码与补码相同,若负数,则补码等于反码加1。

在补码表示法中,0的表示是唯一的,而最小值可达-128。14在上述介绍当中我们是以八位二进制位为例,同样,我们可以将其推广到十六位,三十二位等二进制位中去,需要注意的是数值范围将发生变化。

思考:以上介绍的原码、反码、补码都是有符定点整数的编码方式,若以八位二进制位表示无符定点整数,则其范围是0到255。

在TurboC中:

有符整数是按有符定点整数格式的补码表示的,

无符整数是按无符定点整数格式表示的。15什么是程序设计语言?

自然语言,如汉语、英语等,随人类发展进步而自然形成的,人之间交流信息的工具和媒介。程序语言是一类人造语言,“编程语言”、“程序语言”或“语言”。描述计算用的工具。

程序语言是人与计算机“交流”的媒介:人能用程序语言描述计算过程,计算机可接受这种描述,完成所需计算。人用程序语言写程序,指挥计算机完成各种工作。一、程序设计语言概述161、机器语言:计算机可以直接识别和执行的二进制语言。2、汇编语言:用“助记符”来表示机器指令。

如:ADDA,BSUBA,B它必须经过一个叫汇编程序的系统软件翻译成机器语言程序(即目标程序)后才能执行。3、算法语言:亦称为面向过程的程序设计语言,不依赖于机器。计算机也不能直接执行算法语言描述的源程序,必须先经过编译程序编译成目标程序后,才能由计算机执行。二、程序设计语言的发展简史174、面向任务的程序设计语言:是非过程化的语言,不需要知道问题是如何求解的,只需描述需求解的问题是什么。数据库操作语言便是。5、面向对象的程序设计语言:认为系统是由许多对象组成的,对象通过消息相互联系和相互作用,从而完成系统的功能。如C++,设计的程序更易懂,更适合更大规模的程序开发。18新语言不断提出,老语言被淘汰或改变推动程序语言发展的主要原因:1)编程中取得的新认识;随着程序设计实践,人们对程序该怎样做,怎样描述等不断产生新认识。2)计算机应用发展。应用领域不断提出新要求。新认识和要求促使人们改造已有语言,提出新语言 目前使用较广的语言包括FORTRAN、C、C++、PASCAL、Ada、Java等。“常规语言”。

非常规语言:LISP、Smalltalk、PROLOG、ML等。程序语言发展现状19三、翻译方式高级语言源程序目标程序(code)编译方式解释方式“翻译”20用高级语言书写的源程序机器指令程序函数库编译程序编译用高级语言书写的源程序执行结果解释程序函数库解释并执行21用计算机解决问题的基本过程:一、程序设计技术分析问题确定解决问题方案确定实现算法编写程序运行程序整理结果程序设计的核心任务:设计算法程序=算法+数据结构22

算法:为解决特定问题所使用的确定的且有限的步骤或方案。

特点:

有穷性确定性有输入有输出有效性23常用的算法描述方法:用自然语言表示用伪码表示用传统流程图用N_S流程图(教材P6)二、算法的表示结构化程序设计的三种基本结构:顺序、选择、循环基本原则:所有结构都可以由这三种基本结构组成、单入口、单出口、限制使用GOTO语句24

[例1.1]求一个班学生的平均成绩。设A等(85分)12人,B等(70分)16人,C等(60分)6人,D等(按50分计算)5人。三、简单算法举例开始A=12B=16C=6D=5SUM=85×A+70×B+C×60+D×50AVER=SUM/(A+B+C+D)输出AVER的值结束AA25[例1.2]输出一个数的绝对值。输入XX>=0吗?NY输出-X输出X开始输入XX>=0吗?YN结束输出-X输出X26

[例1.3]输入10个数,把其中的正数输出。开始N=0N<10吗?X>=0吗?N=N+1输入

XY结束NYN输出X27[例1.4]输入10个数,求它们的平均值。N=0,SUM=0当N<10输入XSUM=SUM+XN=N+1AVER=SUM/10输出AVER的值28

[例1.5]输入50个学生的成绩,统计出得优秀的人数。N=0,M=0当N<50输入一个学生成绩G

G>90

YM=M+1N=N+1N输出M的值291、对一个班的40个学生逐个检查,将身高1.60米以上的学生挑出来。2、求Y的值,X由用户给出-1(x<0)Y=0(x=0)1(x>0)3、求1+3+5+..99。4、根据输入的年月,输出此月份对应的天数课堂练习

N=0当N<40输入一个学生身高HH>160Y输出姓名N=N+1N输入XX<0?YY=-1NX=0?NYY=0Y=1N=1,SUM=0当N<=99SUM=SUM+NN=N+2输出SUM的值30开始输入年月Y是闰年M=2day=30day=31day=28day=29M=1、3、5…12结束YNYNYN31产生背景产生过程时间:1972~1973地点:美国贝尔实验室目的:UNIX操作系统设计人:Ken.Thompson和Dennis.M.RitchieC标准标准C:K&R合著《TheCProgrammingLanguage》ANSIC:1983年87ANSIC:1987年1990年国际标准的ANSIC一、C语言发展历史32语言简洁、紧凑、灵活运算符和数据类型丰富程序设计结构化、模块化生成目标代码质量高可移植性好二、C语言的特点>>>>>C语言有很多种,如:MicrosoftC、TurboC、QuickC、BorlandC++、VisualC等。本课程通过TurboC的环境来学习C语言。

33/*example1.1ThefirstCProgram*/#include<stdio.h>main(){

printf(“Hello,World!”);}三、C程序格式和结构特点例1.1第一个程序Hello,World!输出:Hello,World!

注释

编译预处理

函数

语句34

参照例题,编写一个C程序,在屏幕上输出以下信息:**************Verygood!**************35例1.2/*example1.2calculatethesumofaandb*/#include<stdio.h>/*Thisisthemainprogram*/main(){

int

a,b,sum;

a=10;

b=24;

sum=add(a,b);

printf(”sum=%d\n",sum);}/*Thisfunctioncalculatesthesumofxandy*/int

add(int

x,int

y){

int

z;

z=x+y;

return(z);}运行结果:sum=34函数语句预处理命令注释36格式特点习惯用小写字母,大小写敏感不使用行号,无程序行概念可使用空行和空格常用锯齿形书写格式main(){

inti,j,sum;sum=0;

for(i=1;i<10;i++){

for(j=1;j<10;j++){sum+=i*j;}}

printf(“%d\n”,sum);}37结构特点函数与主函数程序由一个或多个函数组成必须有且只能有一个主函数main()程序执行从main开始,在main中结束,其它函数通过嵌套调用得以执行。程序语句C程序由语句组成用“;”作为语句终止符注释/**/为注释,不能嵌套不产生编译代码例:/*Thisisthemain/*ofexample1.1*/*/

非法编译预处理命令38scanf是C语言的标准输入函数;“%f”是格式输入符号,表示用户输入的数据应该是实数,“&”的含义是“取地址”。调用average函数,求出平均值并赋值给变量aver。return语句将aver1的值返回给主调函数main,返回值是通过函数名average带回到main的调用处例1.3从键盘上输入三个数,求该三个数的平均值floataverage(floata1,floatb1,floatc1){floataver1;aver1=(a1+b1+c1)/3;return(aver1);}main(){floata,b,c,aver;

printf("pleaseinputa,b,c:");

scanf("%f%f%f",&a,&b,&c);

aver=average(a,b,c);

printf("theaverageis%4.1f",aver);}四、简单的C程序介绍39

源程序不能直接执行。为完成C程序描述的计算,必须先把C程序转换成计算机可执行的程序。这个转换称为C程序的加工,是C语言系统的主要功能。程序加工通常分两步:编译:编译程序处理源程序,生成相应机器语言目标模块(目标文件)。目标模块不能执行,其中缺少必要的C程序运行系统和库提供的功能。连接:连接程序把目标模块与运行系统、库功能模块组合起来,构成完整的可执行程序。一、在TurboC环境下建立及运行文件源程序目标程序可执行程序内容程序设计语言机器语言机器语言可执行不可以不可以可以文件名后缀.c.obj.exe40C源程序目标程序可执行程序C语言函数库编译连接C源程序的加工过程41FILE----NEWFILE----WRITETOFILE----SAVE(F2)FILE----LOAD(F3)COMPILE----MakeEXEfile(F9)RUN----RUN(Ctrl+F9)RUN---USERSCREEN(ALT+F5)编写TurboC新程序42二、TurboC菜单的功能和使用方法使用Alt+首字母(F10)激活菜单使用光标移动键选择命令按回车键确定43File(文件)菜单

Load(F3):打开文件。Pick(Alt+F3):列出最后装入的8个文件名,可以从文件列表中选择所需文件。New:新建文件。Save(F2):保存文件。Write:另存为。Directory:显示当前工作目录的文件列表Changedir:指定当前目录,用于保存用户文件。OSshell进入操作系统环境,并显示:

TypeExittoreturntoTurboCQuit(Alt+X)退出TurboC44Run(运行)菜单

Run(Ctrl+F9):生成编译文件OBJ;生成可执行文件EXE;并运行当前程序。

Programreset(Ctrl+F2);程序重启,终止当前调试过程,回到初始状态。

Gotocursor(F4):使程序运行到当前光标所在的行。

Traceinto(F7):跟踪,单步执行。

Stepover(F8):跟踪,单步执行。但不进入被调函数内跟踪。

UserScreen(Alt+F5)显示运行结果,按任意键返回。45Compile(编译)菜单

CompiletoOBJ:生成目标文件(OBJ文件)

MakeEXEfile:生成可执行文件(EXE文件)

LinkEXEfile:将当前的OBJ文件和库文件连接生成EXE文件

Buildall:重新编译连接Project中的全部程序,生成EXE文件。

PrimaryCfile:指定文件作为编译对象,以替代编辑窗口中的文件。

Getinto:在弹出的窗口中显示有关文件的信息。

46Project(项目)菜单

Projectname:指定项目文件名(PRJ文件)Breakmakeon:指定终止编译的条件。有四个选项:Warning编译中遇警告停止Error编译中遇错误停止Fatal编译后发现错误停止Link只生成OBJ文件,不进行连接(不生成EXE文件)Autodependencies:指定若程序已经修改,则在运行前是否重新编译连接。(Off或On)Clearproject:清除当前项目文件Removemessages:删除信息窗口的错误提示47Options(选项)菜单

Compiler:指定编译选项Linker:指定连接选项Environment:指定工作环境Directories:是改变工作路径Arguments:指定参数SaveOptions:保存选项RetrieveOptions:从环境文件中恢复选项48Debug(调试)菜单

Evaluate:计算变量或表达式的值,显示结果。Callstack:当调试程序调用多级函数时,显示调用栈。Findfunction:查找函数,在编辑窗口显示被查找的函数的源程序。Refreshdisplay:刷新屏幕。Displayswapping:指定在调试程序时若程序产生输出是否切换到用户屏幕。Sourcedebugging:指定进行源程序调试的选项。49Break(中断)菜单

Addwatch:增加监视表达式Deletewatch:删除指定的监视表达式Editwatch:编辑监视表达式Removeallwatches:删除全部监视表达式Togglebreakpoint:设置/取消程序调试时的中断点Clearallbreakpoints:清除全部中断点Viewnextbreakpoint:将光标定位在下一个中断点。50与数据类型有关的:

char int float double signed long void struct union short

typedef

enum

sizeof unsigned 与存储类别有关的:

auto

extern

register

static与程序控制结构有关的:

do while for if else switch case default goto continue break return

(由系统定义,不能重作其它定义)32个关键字:<51if()~else~for()~while()~do~while()continuebreakswitchgotoreturn9种控制语句:<52C语言 Pascal语言

{} BEGIN….END if(e)s; IF(e)THENs inti; VARi:INTEGER

inta[10]; VARa:ARRAY[1..10]OFINTEGERintf(); FUNCTIONf():INTEGER

int*p; VARp:^IN

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论