




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
配套视频:C语言内涵教程学习指导一第1章C语言和计算机1.1怎样编程问题:)计算机的组成及计算机与工厂的异同。)用户、程序员和计算机三者的关系。)计算机怎样求出用户输入的两个整数的和。)C语言语句中常见的组成及作用。)C语言与计算机的对应关系。C语言是程序员与计算机交流的工具,程序员借助C语言“指挥”计算机为用户提供服务,因此,只有先了解了计算机才能用C语言对它发布命令,也才能真正“懂得”C语言。计算机只是一台会执行命令的机器,与一个工厂类似。计算机有五大部件组成,它们分别是输入设备、存储器、运算器、输出设备和控制器。输入设备用于向计算机中输送需要处理的数据,类似向工厂中的输送原料的运输设备。存储器用于存储数据(待加工的原料,加工后的成品等),类似工厂中的仓库。运算器用于计算(处理数据),类似工厂中的加工车间。输出设备用于显示处理结果,类似工厂的产品展示中心。控制器用于执行命令,即控制其它部件按照预先规定的步骤有条不紊地工作,类似工厂中制定生产计划的调度。计算机的五大部件组成如图1所示。了解了计算机之后,现通过一个简单的案例来说明计算机、用户和程序员的关系。假设用户需要借助计算机求两个整数的和。用户和计算机之间的交互是:用户给计算机提供两个整数,计算机在输出设备(显示器)上显示这两个整数的和。在这个过程中计算机需要把用户提供的原料加工成用户希望的产品并反馈给用户。计算机只是一台如图1所示的机器,只会根据命令完成相应的操作,因此,程序员的工作就是设计一个合理的加工流程,并把每个步骤用计算机能够理解的命令表示出来,这样计算机就可以根据命令序列实现加工流程并最终完成任务。怎样调度计算机的组成部件才能完成“求两个整数的和”这个任务呢?可以用下面的四个步骤完成。第一步:为了友好,计算机在显示器(输出设备)上显示一行提示信息“请输入两个整数:”第二步:等待用户输入,当用户借助键盘(输入设备)输入两个整数后,计算机获得用户的输入,并把用户的输入存储到内存中。第三步:计算机先把位于内存中的用户输入的两个整数在运算器中求和,再把和保存到内存中。第四步:计算机在显示器(输出设备)上显示最终的结果“和为”,其中省略号表示一个具体的整数,因用户输入的不同而不同。由此可见,想让计算机完成某个任务,程序员首要的工作就是为计算机设计一个工作步骤,因为计算机只是一台由五部分组成的机器。从这个角度说,编程是什么?怎样指挥计算机按照设计的步骤工作呢?当然要借助C语言了。下面按步分析,把每一步都变成计算机能理解执行的C语言命令。第一步:怎样命令计算机在输出设备上显示信息?在C语言中,函数printf可用于控制输出设备。语句printf(请输入两个整数:n);就可以命令计算机在显示器上该程序的运行窗口中显示如下所示的信息。问题:printf函数有什么用?怎么用?切记:C语言使用英文的字母和符号(半角符号),所有非英文的字符只能出现在一对双撇号(英文的双引号)中。第二步:怎样获得用户的输入并把用户输入的整数存入内存中。在C语言中,函数scanf可用于控制输入设备,使用该函数可以“命令”计算机获得用户通过输入设备输入的数据。scanf函数执行时,程序通常会暂停运行等待用户输入数据。用户通常用键盘输入数据,按下回车键就表示输入完成。用户完成输入后,scanf函数会“命令”计算机获得用户的输入,并把用户输入的数据存入内存中。用户输入的数据会存入到内存中的什么地方呢?可简单地认为内存是由存储单元组成的。内存类似学校的宿舍区,存储单元类似于宿舍。内存中的存储单元可以存储数据,存储单元最大的特点是分类型,常见的有可存储整数的整型存储单元,可存储小数的浮点型存储单元和可存储字符的字符型存储单元。整型存储单元可以存入整数但不能用于存储小数。宿舍用房间号标识,内存中的存储单元在计算机中以二进制形式的地址标识,但在C语言中用变量标识存储单元。C语言语句int j;中,字符串int是C语言命令,这条语句命令计算机准备一个整型的存储单元,与j对应,字符j就是C语言中的变量。变量有一个容易识别的由字符(串)构成的名字,如变量a,变量ave等。C语言变量对应于计算机内存中的存储单元,在C语言中操作变量,C语言语句执行时计算机就会操作与变量对应的存储单元。在C语言语句j=23;中,字符j是变量,“=”是C语言命令,表示赋值,23就是整数23,这条语句命令计算机把整数23存储到与变量j对应的存储单元中。“=”在C语言中是赋值号,语句j=23;可读作:变量j赋值为整数23。任务中需要两个整型的存储单元存储用户输入的整数,因此,需要两个整型变量。假设变量a和变量b是两个用于保存用户输入整数的整型变量,那么,获得用户输入的两个整数,并把用户输入数据存入内存中的C语言语句为:scanf(%d%d, &a, &b);。这条语句可简单地理解为:计算机先暂停执行命令,等待用户输入两个整数,当用户输入完成后,获得用户输入的数据,并把它们存入与变量a和变量b相关的整型存储单元中。等待用户输入时,如用户通过键盘输入“2332回车”,计算机就会把用户输入的整数23存入变量a中,整数32存入变量b中。C语言中变量a的值就变成了23,变量b的值就变成了32。“2332回车”中,回车表示一次输入完成,一次输入多个数据时可用空格分隔数据。用户也可输入“23回车”,此时用户只是输入了一个整数,计算机会继续暂停执行,等待用户输入第二个整数,因为C语言语句命令计算机获得两个整数。问题一:语句scanf(%d%d, &a, &b);中,%d怎样理解?可能代表一个整数吧。问题二:怎样理解C语言语句中单独出现(不在双撇号)的字符(串)?有三种可能表示函数,如scanf和printf;表示变量,如a和b;表示命令如int。C语言中用于表示命令的字符串常被称为关键字,共有32个。关键字和函数都具有特定的功能,是C语言的命令。变量标识了存储单元,通常为命令操作的对象。第三步:求出用户输入的两个整数的和。计算机的运算器可求和,C语言怎样命令计算机求和呢?用+号,C语言中3+5可理解为命令计算机求整数3和5的和,其结果为8。现在求用户输入的两个整数的和,而用户输入的数据存储在变量a和变量b中,因此,C语言中a+b可让计算机求出a和b的和,实际上也就是用户输入的两个整数的和。还需把求出的和保存起来,设整型变量c用于保存和,用其保存数据时可使用赋值命令,求和并保存的C语言语句为:c=a+b;,可读作变量c赋值为变量a与变量b的和,其中加号+和赋值号=是命令,字符(串)a,b,c是变量,表示命令操作的对象。问题:怎样理解C语言语句的作用?提示:分析C语言语句的组成,找出其中的命令和命令操作的对象。第四步:把求出的和在显示器上显示出来反馈给用户。在显示器上显示信息在C语言中需使用printf函数,和在变量c中,C语言语句printf(和为c);会命令计算机在显示器上显示“和为c”。printf函数中双撇号内的信息会原样出现在显示器上,也就是说双撇号内的字符c不会被认为是变量c而只是平常的字符c,同样语句printf(a+b);的执行结果为“a+b”,双撇号内的加号+也不会被认为是命令。语句printf(和为%d, c);的执行结果为“和为55”,语句中字符c不在双撇号内,故表示一个变量;双撇号内的%d表示整数,执行时%d会被变量c的值代替。可见双撇号内的%d有特殊的含义。问题:C语言语句中位于双撇号里面的字符和外面的有何不同?小结:下面四条C语言语句可以命令计算机执行刚才设计的四个步骤,从而完成用计算机“求两个整数的和”这个任务。printf(请输入两个整数:n);scanf(%d%d, &a, &b);c=a+b;printf(和为%d, c);核心问题:怎样编程?程序是用户和计算机之间的桥梁,利用程序可以指挥计算机的五大组成部件有条不紊地工作完成用户的任务。编程分两步。第一步:设计。设计出合理的工作步骤以调度计算机的五大组成部件协同工作并最终完成任务。第二步:编码。实际上是“翻译”,把步骤翻译成C语言语句。从不同的角度分析。用户:借助计算机求和。提供原料(两个整数),获得结果(和)。计算机:类似工厂,可以把原料加工成产品(和),但需要在程序的指挥下工作。程序员:根据用户的需求,设计处理流程加工步骤,把步骤翻译成C语言语句。重点:)理解C语言语句的组成。)理解C语言语句的作用(即计算机会如何执行)。)体会C语言与计算机的对应关系。scanf函数对应于输入设备,变量对应于内存中的存储单元,代数式(3+5)对应于运算器,printf函数对应于输出设备,语句的顺序对应于控制器。1.2C语言自定义命令函数问题:)什么是函数?)怎样在C语言中定义函数?)计算机怎样理解执行函数命令?)计算机会求正弦吗?)C语言中为何不能定义一个求两个数的和的函数?函数、关键字和操作符号都是C语言命令,其中关键字和符号通常表示“简单”的命令,如+号表示让计算机执行加法,这些命令对应的步骤非常简单,计算机可以直接理解执行,而函数表示的命令比较复杂。scanf函数让计算机获得用户输入的数据并赋值给相关的变量,完成这样的命令需要复杂的步骤,作为机器的计算机本身并不能直接理解执行这样复杂的命令。函数实际上是程序员“自己定义”的命令,scanf函数和printf函数的定义非常复杂,下面以一个简单的函数为例来说明怎样在C语言中定义自己的命令。数学上,函数是每个(组)输入值到唯一输出值的映射。函数的作用通常表现为把输入变成输出。函数的输入又称为自变量,函数的输出又称为函数值;在C语言中常称自变量为参数,称函数值为返回值。函数z=f(x,y)=x+y的作用是求两个数的和,f(3,5)的值为8。使用函数f时需要提供两个数,函数值就是这两个数的和。只所以说f(3,5)的值是8,是因为我们的大脑根据函数的映射关系执行了加法运算得到的结果是8,计算机不可能有这样的智能。为了让计算机能够执行这样的函数命令,程序员需要定义一个有这样功能的C语言函数,在定义函数命令时程序员需要安排细节提供加工步骤。函数的功能为求两个参数的和,因此,计算机需要分配两个存储单元存放输入。计算机中的存储单元有类型,没有既可以存储整数又可以存放小数的存储单元!只能定义求两个整数的和的函数或求两个小数的和的函数。现定义求两个整数的和的函数,其定义形式如下:int f(int x, int y)int z;z = x + y;return z;在定义中,int f(int x, int y)称为函数的首部,第一个关键字int表示让计算机准备一个整型的存储单元用于存储函数的返回值;字符f是函数的名字;圆括号是函数的标志;int x, int y表示让计算机准备两个整型的存储单元,并分别与变量x和变量y对应,x和y又称为形参(形式参数)。形参x和y用于存储函数的输入。在定义中,一对花括号界定的部分称为函数的函数体,用于指挥计算机完成函数的映射,即利用存储在形参x和y中的函数的输入值,得到函数的输出值。先利用int z;让计算机为变量z分配一个整型存储单元,然后利用z = x + y;让计算机求出x与y的和,并把结果存入变量z中。语句return z;中,return是关键字用于命令计算机停止执行函数中的语句,return后面如有变量就把变量的值作为函数的输出。这条语句将把变量z的值作为函数的输出。有了这个函数定义,C语言中就多了一个函数命令f,它可以让计算机求出两个整数的和。使用函数f时需要提供两个输入,f(3,5)可理解为让计算机求出整数3和5的和,计算机怎样执行这个函数命令呢?首先根据函数的首部申请两个整型的存储单元与形参x和y对应,然后把3和5分别存入形参x和y中,接着顺序执行函数体中的语句,遇到return命令时结束函数的执行,并把变量z的值8作为函数值,即命令f(3,5)执行的结果就是整数8。计算机只能直接理解执行C语言中简单的命令。C语言函数是复杂的命令,也是自定义命令,需要程序员为计算机明确函数命令怎样执行。函数通常表现为把输入变成输出。在定义函数时,程序员需考虑输入的个数和类型以及函数返回值的类型,设计把输入变成输出的步骤。利用自定义函数命令f,也可以求出用户输入的两个整数的和,如下所示。printf(请输入两个整数:n);scanf(%d%d, &a, &b);c=f(a, b);printf(和为%d, c);语句c=f(a, b);执行时,变量a和变量b的值会分别存入形参x和y中,然后函数f函数体中的语句顺序执行,最终把a与b的和作为函数的返回值,赋值命令执行之后,变量c的值就是变量a与变量b的和。语句可理解为先利用函数命令f求出变量a与变量b的和,再把和存入变量c中。与语句c=a+b;相比,利用加号求和比利用函数命令f求和更简单更直接。加号+是计算机能够直接执行的C语言命令,而函数f需要程序员安排细节和执行步骤是自定义命令。求两个整数和的函数命令f无疑是不必要的,定义它仅为了演示函数命令定义的形式及函数命令的执行步骤。把一些常用的功能定义为函数, C语言就增加了许多“命令”,可极大地提高程序的编写效率。C语言有许多已经定义好的函数,它们常称为库函数。最常用的库函数自然是printf函数和scanf函数。计算机只会计算加减乘除,不会直接计算复杂的数学运算(如开平方根、求幂、求正弦等),但常用的复杂数学运算有对应的库函数(如sqrt函数、pow函数、sin函数等),可以利用这些“函数命令”指挥计算机完成运算(如sqrt(2.25)就是命令计算机求出2.25的算术平方根)。利用函数命令时需清楚函数的输入输出及功能,如sin函数的首部为double sin(double x)功能为求x的正弦,但函数的输入要求为弧度而非角度。用sin函数求90度角的正弦时需用弧度表示角,即sin(3.1415926/180*90)的结果为1.0,是90度角的正弦值。关键字double表示存储小数的存储单元,/号表示除法命令,*号表示乘法命令,3.1415926/180的结果为每角度等于多少弧度。教材附录D中介绍了常用的C语言库函数。重点:)函数的作用就是把输入变成输出。)定义函数实际上与编程类似,也需设计步骤和把步骤转换成C语言语句两个阶段。)函数扩展了C语言的功能。)函数的定义及使用。)由于存储单元的特点,C语言中没有可以求两个数的和的函数,只有求两个整数的和的函数或求两个小数的和的函数。1.3C语言程序问题:)功能相同的程序和函数,它们的作用相同吗?)怎样使用程序?怎样使用函数?)程序和函数有何相同和不同之处?)怎样理解“程序是由函数组成的,但执行程序就是执行main函数的函数体”?)由多个函数组成的程序执行时,每个函数都会执行吗?简单地说,C语言编程在形式上就是把与问题解决步骤相对应的C语言语句放置到一个main函数中。C语言程序运行时,计算机只执行程序中main函数的函数体,执行完毕程序也就运行结束了。main函数是C语言程序的标志,它可以没有输入和返回值,即首部可定义为void main()。其中void为关键字,表示函数没有返回值,圆括号中没有形参表示函数不需要输入值。下面的程序用于求用户输入的两个整数的和。void main()printf(请输入两个整数:n);scanf(%d%d, &a, &b);c=a+b;printf(和为%d, c);从形式上分析,定义程序就是定义main函数。在main函数中使用了输入输出函数命令控制计算机的输入输出设备。C语言规定,函数必须先定义再使用,因此,完整的程序应该是下面的样子。? printf()? scanf()void main()printf(请输入两个整数:n);scanf(%d%d, &a, &b);c=a+b;printf(和为%d, c);printf函数和scanf函数是库函数,在C语言中有定义,可简单认为它们在stdio.h文件中定义,所以编程时只需找到stdio.h文件,把文件内容拷贝到此处就可以了。C语言中include命令能帮助程序员完成这些操作,故程序可写作:#include void main()printf(请输入两个整数:n);scanf(%d%d, &a, &b);c=a+b;printf(和为%d, c);include命令前面需要个#号,与库函数有关的文件可放置在尖括号中。#include 没有分号,表明它不是C语言语句。它的作用是找到stdio.h文件,用文件的内容替换掉它本身。程序中使用了变量a、变量b和变量c,与函数一样,变量也必须先定义再使用。因此,完整的程序为:#include void main()int a, b, c;printf(请输入两个整数:n);scanf(%d%d, &a, &b);c=a+b;printf(和为%d, c);程序中先利用语句int a, b, c;让计算机为变量a、b和c分配整型存储单元,然后用自定义函数命令printf让计算机在显示器上程序运行窗口中显示“请输入两个整数:”的提示;接着,当scanf函数执行时,计算机会暂停程序的执行,等待用户输入两个整数,此时程序的运行窗口如下图所示。当用户输入两个整数后,程序的运行窗口如下图所示。当用户按下回车键表示输入完成后,scanf函数会指挥计算机把用户输入的整数23和32分别存入变量a和变量b标识的整型存储单元中,即在程序中变量a的值已经是23,变量b的值已经是32了。计算机会依次执行下面的语句。c=a+b;使它求出变量a与变量b的和,并把和存入变量c中,变量c的值变成了55。printf(和为%d, c);让计算机在显示器上程序运行窗口中显示“和为55”,程序的运行窗口如下图所示。最后,程序执行到界定main函数的函数体的花括号处停止,程序执行完毕。这个程序的功能是求用户输入的两个整数的和。程序需要用户输入两个整数,它把计算结果反馈给用户。在1.2中定义的函数命令f的功能也是求两个整数的和,函数需要用户输入两个整数,它也把计算结果反馈给用户。程序和函数的用法不同。程序的用户通常为人,双击程序可以运行程序,程序需要输入数据时会暂停执行等待用户输入,人通过键盘输入数据,程序则借助scanf函数获得用户的输入。程序的结果则借助printf函数以显示在程序运行窗口中的方式反馈给用户。函数的用户实际上是程序员,函数的使用方式为函数调用,使用函数时需准备好函数的输入,要把函数的输入放置在函数名后的一对圆括号中,如
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年全科医学慢性病管理知识检测模拟试题答案及解析
- 驾驶客车考试题及答案
- 家长教师培训考试题及答案
- 2025年放射科影像学报告解读能力测验试卷答案及解析
- 农发行延安市吴起县2025秋招笔试创新题型专练及答案
- 梧州市2025广西梧州苍梧县供销合作社联合社招聘基层供销社工作人员1人笔试历年参考题库附带答案详解
- Web服务创新发展计划总结
- 办公自动化风险管控规范
- 清洁酒店餐饮厨房规范
- 医疗机构执业许可证延续申请表
- 农业现代化种植技术培训课件
- 中城汽车(山东)有限公司审计报告
- 大学博士竞赛试题及答案
- 钢结构彩钢瓦施工工艺与技术交底
- 2025版煤矿安全规程宣贯培训课件
- 梁启超家教家风课件
- 第5课 我们说方言教学设计-2025-2026学年小学地方、校本课程浙教版(2024)人·自然·社会
- (2025秋新版)青岛版科学三年级上册全册教案
- 顾客联络服务 人工与智能客户服务协同要求 编制说明
- DB31∕T 1545-2025 卫生健康数据分类分级要求
- 大学生创新创业基础(创新创业课程)完整全套教学课件
评论
0/150
提交评论