《C语言与计算机》由会员分享,可在线阅读,更多相关《C语言与计算机(92页珍藏版)》请在金锄头文库上搜索。
1、C程序设计,周二强 软件学院 计算机科学与工程系,第1章 C语言与计算机,1.1计算机工作原理 1.2C语言如何控制计算机 1.3C语言函数 1.4“懂”C语言的计算机 1.5与虚拟C语言计算机深入交流,1.1计算机的基本原理,1.采用二进制形式表示数据和指令。 二进制只有2种状态,很容易在物理上表示,如开关的接通和断开表示1和0。,表示什么数据呢? 01010011 这又是什么数据呢? 什么是编码呢? 计算机中的二进制与数学上的二进制有什么不同?,2.计算机存储程序并由程序控制,可执行程序由指令和相关数据组成,指令是计算机能够执行的命令。 当存储在计算机中的程序运行时,计算机自动地取出程序
2、中的一条条指令,加以分析并执行,在程序的控制下工作。 存储程序并由程序控制,计算机就能够自动地连续执行指令,处理数据,完成任务。,3.计算机由运算器、存储器、控制器、输入设备和输出设备5大部件组成。,如何用计算机求用户输入的两个整数的和?,求用户输入的两个整数的和,计算机求两个整数的和,C语言如何控制计算机?,1.在显示器上提示用户输入两个整数;,C语言中用printf函数控制输出设备,使用该函数可以“命令”计算机在输出设备上显示信息。 语句printf (“请输入两个整数:“); 就可以在显示器上该程序的运行窗口中显示上面的信息。 结合示例讨论printf函数的用法。,2.用户输入后,计算机
3、获得用户的输入并将输入数据存储到内存中。,C语言中用scanf函数控制输入设备,使用该函数可以“命令”计算机获得输入设备的输入数据。 scanf函数执行时,程序通常会暂停运行等待用户输入数据。当用户以按下回车键的方式表示输入完成后,scanf函数就会获得用户的输入。 如何存放数据?,存储单元,用户输入的数据存储在内存中,但是存储数据时需明确数据存放的“具体位置”以便可以在程序中取出并处理它们。 计算机中同类数据无论大小(如整数0或100)都用相同的内存空间存放,这些大小和编码方式相同的内存空间可称作存储单元。 各种数据所用的存储单元彼此不同。如存储整数与小数。 计算机中使用地址标识存储单元,由
4、于使用二进制,计算机中的地址非常繁琐,不适合在程序中使用。,变量,C语言中用变量来标识内存中的存储单元。要存储数据时,只需在C语言中“定义”一个“变量”即可。 定义一个变量,就是向计算机申请一块存储单元。变量只是内存中相关存储单元在C语言中的标识,在程序中使用变量,程序执行时计算机就会操作与变量相关的存储单元。 可以用英文字母组成的字符串(如x、sum等)给变量命名,通过“通俗易懂”的变量使用存储单元给编程带来了极大的便利。,变量与存储单元,当用名为x的变量标识了内存中的一个存储单元后,如果该存储单元中存储的数据为3, 则C语言中变量x的值就是3; 如果想把某个数据存储到该存储单元中, 在C语
5、言中只需把该数据“赋值”给变量x即可。如想把整数5存储到该存储单元时,只需用C语言语句x=5;即可。 特别强调:语句x=5;应读作“变量x赋值为5”!,2.用户输入后,计算机获得用户的输入并将输入数据存储到内存中。,用C语言语句scanf(“%d%d“, 就可以“命令”计算机获得用户的输入数据,并把数据存储到变量a和b所标识的存储单元中。 当用户按下回车键确认输入完成后,23和32就被存储到变量和所标识的存储单元中了,也就是说C语言程序中变量和的值变为23和32了。,3.运算器求和,并把结果存储到内存中。,用户输入的数据在哪里? C语言中可以用“代数式”命令运算器对数据进行处理。 使用代数式a
6、+b就可以“命令”运算器求出变量a和b标识的存储单元中的数据之和。 如果把求出的和保存在变量c标识的存储单元中,相关操作可用C语言语句表示为c = a + b; (读作变量c赋值为变量a与变量b的和)。该语句执行时运算器会先求出变量a和b标识的存储单元中的数据之和,然后计算结果将保存到变量c标识的存储单元中。,4.在显示器上显示计算结果。,C语言中可使用printf函数“命令”计算机在输出设备上显示信息。 计算结果在什么地方? 如何显示变量的值? 利用语句printf(“和为%d“, c);就可把变量的值输出到显示器上该程序运行窗口中 。,求和的步骤,计算机中 ()在显示器上提示用户输入两个整
7、数; ()获得用户的输入,并把输入数据存储到内存中; ()运算器求和,并把计算结果存储到内存中; ()在显示器上输出计算结果。,C语言中 (1)printf(“请输入两个整数:n“); (2)scanf(“%d%d“, ,C语言如何控制计算机?,C语言和计算机的对应关系,scanf函数,变量,printf函数,代数式,语句的执行顺序,1.3 C语言函数,在数学上,函数是每个(组)输入值到唯一输出值的映射。输入值又称自变量;输出值因输入值的变动而变动故又称作因变量,也叫函数值。 函数的作用? 是把输入变成输出。C语言中的函数会是什么样子,有何作用呢? C语言函数的作用也是把输入变成输出。C语言函
8、数的输入常称作“参数”。,C语言中函数的定义,函数 = (, ) = x + y 1) int sum(int x ,int y) 2) 3) int z; 4) z = x + y; 5) return z; 6) ,int是C语言关键字,关键字是语言规定的具有特定意义的字符串,通常也称为保留字。 计算机中的存储单元根据编码方式分成了不同的类型。常见的存储单元有用于存储整数(2、1等)的整型存储单元、用于存储小数(1.1、2.3等)的浮点型存储单元和用于存储字符(a、等)的字符型存储单元。 关键字int与整型存储单元或整数相关。,int sum(int x, int y),第一个int表明函
9、数的输出值是一个整数。 sum是函数的名字,其后的一对圆括号是函数的标志。 圆括号中的x和y是函数的输入值,也就是sum函数的两个参数。函数定义中的输入又称为形式参数,简称形参。 函数的形参也是变量,变量对应于计算机中的存储单元,而存储单元又有具体的类型,因此,形参x和形参y前面的int的作用就是?, = (, ),函数 = (, ) = x + y,1) int sum(int x ,int y) 2) 3) int z; 4) z = x + y; 5) return z; 6) ,int z;是一条变量“定义”语句。,C语言规定:变量在使用前必须先定义。 如果把内存比作宾馆,把存储单元比
10、作房间,则定义变量就类似于向宾馆预定房间。房间的类型有单人间、双人间等,存储单元同样有整型、浮点型等,因此,变量也是有类型的,这条语句中的关键字int就是要求计算机为变量z分配一个整型存储单元。 变量z是一个整型变量,变量的类型实际上是其标识的存储单元的类型。,变量定义的一般形式是: 数据类型 变量列表;,数据类型是要定义变量的类型,也是相关存储单元的类型(整型、浮点型和字符型)。 数据类型可以是int、float和char。 “变量列表” 如变量名1,变量名2,变量名n。 变量名是C语言标识符。标识符是C语言中变量或函数的名字,用于标记对象,相互区别。 标识符是一个由大写或小写(英文)字母、
11、数字或下划线组成的字符串,但不能以数字开头。,变量定义的示例,语句“int z;”定义了一个整型变量z,并且整型变量z的值只会是整数? (其标识的存储单元只能存入整数)。 语句float fm, fn;定义了两个浮点型变量fm和fn,它们的值只会是小数。 怎样定义三个字符型变量? 讨论:变量与数学上未知数x的区别和联系。,语句“z = x + y;”的作用,先计算形参x与形参y的和,再把和存储到整型变量z标识的存储单元中,即整型变量z的值为x与y的和。,语句“return z;”的作用,语句“return z;”用于返回输出值,即返回函数值。 return也是C语言关键字,可用于返回函数值。
12、当执行到此条语句时,无论后面是否还有代码,将立即结束函数的执行,并把整型变量z的值作为函数的返回值。,总结讨论C语言的函数定义,函数 = (, ) = x + y 1) int sum(int x, int y) 2) 3) int z; 4) z = x + y; 5) return z; 6) ,C语言中的函数可以没有返回值,在定义没有返回值的函数时,函数的返回值类型需标记为void,void也是关键字。 返回值与return return 3+2;? 返回值为void型的函数何时执行完毕? return;?,C语言中的函数也可以没有输入值,但此时不能省略函数首部中的一对圆括号。还可以在圆
13、括号中用关键字void明确表示函数不需要输入值。 空函数是最简单的C语言函数,没有输入值也没有返回值,什么也不做,定义类似于 void nothing( ) 或void nothing(void) 。 函数定义int fun() 有何问题?,函数调用,定义后的函数有什么作用? 怎么用? 函数名加一对圆括号再加上具体的输入值即可。 利用sum函数求整数3和2的和? sum(3, 2)中的3,2是函数的输入吗?又称为什么? 利用sum函数求变量a和b的和? 函数调用是如何执行的?,函数调用是如何执行的?,sum(3, 2) sum(a, b) sum(2+3, 3) 先对实参求值,再用实参对形参赋
14、值,然后自上而下执行函数体。 函数体中的语句一定会执行吗? 如何用sum函数求a,b,c的和?,怎样理解函数调用的结果?,sum(3, 2)+5? printf(“%dn”, sum(3,2); sum(a, sum(b, c) sum(3, 2)等价于整数5,函数定义与函数调用,sum(3, 2),把输入值变成输出值的公式 输入为形参,一个具体的输出值 输入是实参,函数调用的结果总表现为一个具体的输出值吗?,讨论:应如何理解下面C语言语句出现的字符(串),z = 3 + sum; z = sum(a, 3); z = sum(sum(2, 3), 5) return 3 + a;,C语言程序
15、,C语言程序由n(n1)个函数构成。 现在的问题是:由n个函数构成的C语言程序如何运行呢? 语言规定,程序中必须有且仅有一个名称为main的函数。程序运行时,main函数会被自动调用执行。 其它函数会执行吗?程序?函数?,第一个程序: 求用户输入的两个整数的和,()在显示器上提示用户输入两个整数; ()获得用户的输入,并把输入数据存储到内存中; ()运算器求和,并把计算结果存储到内存中; ()在显示器上输出计算结果。,VC6.0中main函数可以没有返回值和输入值 void main( ) printf(“请输入两个整:n“); scanf(“%d%d“, ,问题?,int a, b, c;,
16、1.4 “懂”C语言的虚拟计算机,机器语言是大多数计算机硬件能够“理解”的惟一语言;机器语言编写的程序是由二进制代码组成的序列,难于阅读和编写。,用高级语言编写的程序称为源程序,计算机不能理解和执行,需要编译程序将源程序翻译成计算机能理解并执行的目标程序。,return,VC6.0是微软公司提供的在Windows环境下进行应用程序开发的C/C+编译器系统。 VC6.0是一个集成开发环境(IDE),包含了许多独立的组件。 如编辑器、编译器、调试器以及各种各样为开发Windows下的C/C+程序而设计的工具。,Visual C+ 6.0 (简称VC6.0),return,使用VC6.0与计算机沟通,1.4.3 在VC6.0中编译程序,在VC6.0中,程序须作为工程的一部分来管理,因此在编程前要先建立一个工程。,两种交互方式,图形用户接口GUI(Grap