




已阅读5页,还剩71页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第 76 页 共 76 页C语言速成教程教你如何10小时学会 C 语言 第一章 C 语言简介与Turbo C 的使用 第二章 C 程序的结构 第三章 常数与变数 第四章 基本输出入函式 第五章 流程图与抉择指令 第六章 循环与自动重复 第七章 数组与指针 第八章 函数与呼叫 第九章 档案存取 第一章 C 语言简介与Turbo C 的使用 C 语言的优点: 效率高:C 语言的编译器会产生最小的程序代码。 可移植性/移植性高:经过些许的修改,可以在不同的平台使用。 功能强而有弹性。 需要记忆的东西很少,易于写作。 Turbo C 的安装:已安装在学校主机。 Turbo C 的环境设定:Turbo C 安装的目录必须设定在 PATH 的系统变量。 如: PATH=C:TC;C:DOS;. 如此 TC 才能正常工作。 Turbo C 的使用 只要设定好 PATH 变量,在 DOS 提示号输入 TC ,就可以执行 Turbo C 的 整合环境了。TC 将编辑(Edit)、编译(Compile)、连结(Link)、除错(Debug)、 档案管理(File)、.等等的功能整合在一起,所以我们称之为整合环境。 最好先用 CD 的指令,变更工作目录到你要写 C 的目录,再执行 TC,这样 所产生的档案,就会里这个目录里面,便于备份与管理。 移动光标 方向键 可以用来移动光标。 删除文字 将光标移到你要删除的文字上,再按下 Del 键即可。 将光标移到要删除文字的右边,再按下 BS 退位键也可以。 加载文字文件(C 语言原始码文件) 按下功能键 F3 或 按 F10 选 File Load 就会出现一个询问窗口要求输入文件名: Load File Name *.C 其中的文件名可以使用万用字符 * 或 ? ,或直接指定你要的檔名。 若是使用万用字符,TC 会再秀出一个窗口让你选择所要的档案, 你可以用方向键移动反白光棒,按 Enter 键则是选择反白的档案。 储存编辑的文字文件 按下功能键 F2 或 按 F10 选 File Save 就会储存目前编辑档案。 若你想另外取一个档名,并加以存盘,就必须 按 F10 选 File Write to 就会出现一个询问窗口要求输入文件名: New Name _ 输入新的档名,按下 Enter 即可。 编译并执行目前的所编辑的程序 Turbo C 是一种编译语言系统,你所写的程序,经过 TC 的编译(pass 1)及 连结(pass 2)后,产生可执行档(.exe),才能在 PC 上执行。 按下 Ctrl + F9 或 按 F10 选 Run Run ,TC 会编译目前所编辑的程序, 如果没有错误发生,TC 会立即执行所编辑的程序。 TC 在执行完程序后,会立刻切换回到 TC 的整合环境,如果你还想看刚才程序 执行的结果,可以按下 Alt + F5 或 按 F10 选 Run User screen ,就会 切换到执行画面,再按下任何一键,就会回到 TC 的整合环境。 结束 Turbo C 按下 Alt + X 或 按 F10 选 File Quit 便可结束 Turbo C。 若你还有已编修尚未储存的档案,TC 会问你要不要存。 Verify NONAME.C not saved. Save? (Y/N) 要存就按 Y ,不想存就按 N 。 第二章 C 程序的结构 C 程序的结构: hello.c 范例文件名 1#include 范例原始码 2main() 3 4 printf(Hello!); 5 Hello! 范例执行结果 第一列: #include 是用来定义一些函式的原型(prototype)、数据结构(struct)或是常数(constant)。 C 在使用变量之前,该变量都要先行宣告(declear)才可使用,而使用函式也是一样,必须先宣告它的原型才可以。宣告函式的原型是为了让 C 能在编辑时作数据的型别检查,以减少错误的发生。 内建的函式原型定义都放在 INCLUDE*.H 中,用 #include 就会将 INCLUDEstdio.h 这个档引含。 stdio.h 由档名可知道是跟标准输出入(standard I/O)有关,档内定义了档案输出入、屏幕输出、键盘输入等相关函式的原型、数据结构及常数。 本例中的 printf() 就属于标准输出的函式。 引含 .h 档并不会让你的执行档变大或是变慢,而且还能让编辑器作正确的型别检查,所以要养成写 #include 的习惯。 虽然在某些状况下,不加 #include 所产生的执行档,一样可以正常的执行。第二列: main()main() 就是主程序。程序在执行时,就是由这个函式开始执行。 在 C 语言中,内定的型别是 int ,所以原来的 main() 相当于是 int main(int) 在这里正确的写法应该是 void main(void), 因为在这个简单的程序中,没有回传值,也没有输入参数。 回传值,是指一个函式在执行后传回的数值。 输入参数,是指一个函式可由参数决定执行的结果,这个部分在第八章中有详细的说明。第三列: 第五列: 在第三列及第五列之间,属于 main() 函式的程序代码。 表示程序由此开始, 表示程序到此结束。第四列: printf(Hello!);是本程序要求系统做动作的指令,称之为叙述。在 C 语言中,每一叙述都以分号(;)做为结束。 在这个程序中,利用缩排的方式,使程序的层次分明,增加可读性。在 C 语言中,调位字符( 如:空白(space)、定位(tab)及换列字符 )在编译时都会被忽略,所以可适时加入调位字符,使程序好看一点。 要注意的是,别把一个完整的个体拆开,如:main、printf 等,这些字本身是一个完整的个体,不可予以拆开。而在各个个体之间,可以任意加入调位字符。 C 语言中的英文字母是有分大小写的,printf() 与 PrintF() 不同, 内建的函式大多是小写的,你自己写的函式,则可以用大写来做区隔。 printf 的功用printf() 的功用是在屏幕上输出数据。在 TC 中,在编辑区内输入printf ,再将光标移到 printf 这个字上,按下 Ctrl + F1 就会看到以下Help画面: Help 这是 TC 的 Help 窗口 printf: formatted output to stdout printf 是将格式化的 数据输出到 stdout int printf(const char *format, .); printf 的语法 Prototype in stdio.h 要用 printf 应该 #include 的檔 Print formats a variable number of arguments 使用说明:不同的格式 according to the format, and sends the output 须要不同的参数,这些 to stdout. Returns the number of bytes output. 数据会送到stdout。传 In the event of error, it returns EOF. 回值是输出的byte数, 若发生错误则传回 EOF See also ecvt fprintf putc 可参考相关指令: puts scanf vprintf ecvt,fprintf,putc, puts,scanf,vprintf 在用 TC 的整合环境中,只要将光标移到想进一步了解的指令或内建的函式上,按 下 Ctrl + F1 就可以叫出 TC 的 Help 说明窗口,得到该指令或函式的相关说明。printf 的语法: int printf(const char *format, .);其中 const char *format 指的是一个格式化的字符串。 const 是常数的意思,在此表示 format 这个字符串指针传入 printf 函式后,它的值不会被改变。 . 指的是不定参数,参数的数目取决于 format 字符串的内容,这些参数,通常是一些你要秀出来的变量。 简单来说: printf( 输出格式(含控制字符串) , 要印出的数据 ); 在 C 语言中是用双引号()来引含字符串,也就是在双引号内的数据,是一个字符串。本章只介绍 %d 这个控制字符串,其它的控制字符串在第四章会讲到。 %d 表示以整数 10 进位的方式秀出数据。在输出格式(含控制字符串) 内有几个%d ,在要印出的数据内就要有几个整数来对应。 arith.c 1#include 2void main(void) 3 4 printf(%d + %d = %dn, 8 , 2 , 8+2 ); 5 printf(%d - %d = %dn, 8 , 2 , 8-2 ); 6 printf(%d * %d = %dn, 8 , 2 , 8*2 ); 7 printf(%d / %d = %dn, 8 , 2 , 8/2 ); 8 8 + 2 = 10 8 - 2 = 6 8 * 2 = 16 8 / 2 = 4 我们以第四列的叙述作说明: printf(%d + %d = %dn, 8 , 2 , 8+2 ); 在 输出格式(含控制字符串) 内有 3 个 %d ,所以在 要印出的数据 的部分有 8 , 2 , 及 8+2 三个整数对应,所以输出来的结果就是 8 + 2 = 10 在 输出格式(含控制字符串) 的最后有 n 符号,这是一个控制字符,表示要 更换到下一列,其它的控制字符在第四章会提到。 若将本例中的 n 都删除,那秀出的结果会像这样子: 8 + 2 = 108 - 2 = 68 * 2 = 168 / 2 = 4 C 的四则运算 计算机语言用的四则运算符号几乎都是相同的: 四则运算符号 意 义 范 例 结 果 = = = = + 加法 4 + 2 6 - 减法 ( 或代表负号 ) 4 - 2 2 * 乘法 4 * 2 8 / 除法 4 / 2 2 = = = = 相关运算符号 意 义 范 例 结 果 = = = = + 变数值加 1 i+ 或 +i i 值加 1 - 变数值减 1 i- 或 -i i 值减 1 % 整数除法的余数 4 % 2 0 = = = = 在书中提到 C 语言没有提供次方的功能,指的是在某些计算机语言可以用 * 表示 次方,如: 2 * 3 ,表示 2 的 3 次方;有的用 表示,如: 2 8 ,表示 2 的 8 次方。在 C 语言,没有运算符号可以表示次方,但是 C 语言有提供次方 的函式: pow(), pow( 2 , 3 ) 表示 2 的 3 次方。 一个式子如果有多个运算的话,C 是以先乘除后加减的方法来运算,当然我们也 可以用括号 ( ) 来改变这个法则,只要有括号,就优先运算。另外,在 C 语言内 中括号 及 大括号 是有其它的用途,所以在作数学运算时,只要用括号 ,就只能用小括号 ( ),小括号可以多层,C 在运算时,是由最内层开始运算。 范例: ( 1 + 2 * ( 3 + 4 ) ) * 5 - 6 * 7 / 2 + 8 = ( 1 + 2 * ( 7 ) ) * 5 - 6 * 7 / 2 + 8 = ( 15 ) * 5 - 6 * 7 / 2 + 8 = 75 - 42 / 2 + 8 = 75 - 21 + 8 = 62 批注(Comments)通常老师会要求初学者在程序的每一列加上批注,这是为了让初学者知道自己在写些什么程序代码,了解为什么要这样写,而不只是照著书 Keyin 程序。写批注有助于自己了解程序的内容,便于日后的修改。但写批注对于某些程序设计师而言可说是一种噩梦,因为写批注所花的时间可能会与写程序的时间相去不远,认为写批注只是在浪费时间。 对一个相当好的程序设计师而言,也许写批注真的是浪费时间,因为好的程序代码本身就已经隐含了批注,这也是写程序相当高的境界。 对一般的程序设计师而言,写一些批注还是比较好的作法,特别是某些程序代码是你花了一段时间才想到的特殊方法,加上一些批注,说明一下这个特殊的方法,以后要修改才能快速进入状况,否则,你可能会佩服自己当时是如何想到的这个方法,又再花一段时间才知道自己在写些什么程序代码。 讲了这么多批注的正反面(正面居多)论调,在 C 语言中要如何写批注呢? 只要用 /* 和 */ 将你要的批注内容包起来就可以了。C 在编译时,会将 /* */ 内的数据略去,就如同调位字符一样。唯一的例外是:当 /* */ 在一组双引号 内时,它们就属于这组双引号所包含的字符串。 在 C+ 语言中则可用/当批注. comments.c or comments.cpp 1#include /* prototype : printf() */ 2void main(void) / main program 3 4/* 所有的程序代码都变成批注,所以这个程序目前是空的 */ 5/* printf(%d + %d = %dn, 8 , 2 , 8+2 ); */ 6/* printf(%d - %d = %dn, 8 , 2 , 8-2 ); 7 printf(%d * %d = %dn, 8 , 2 , 8*2 ); 8 printf(%d / %d = %dn, 8 , 2 , 8/2 ); / division 9*/ 10 / end of program 巢状批注(Nested Comments) nestcom0.c 1#include /* prototype : printf() */ 2void main(void) 3 4/* 这个程序必须把巢状批注的设定打开,才不会有错误 */ 5/* 6 printf(%d + %d = %dn, 8 , 2 , 8+2 ); 7/* printf(%d - %d = %dn, 8 , 2 , 8-2 ); */ 8 printf(%d * %d = %dn, 8 , 2 , 8*2 ); 9 printf(%d / %d = %dn, 8 , 2 , 8/2 ); 10*/ 11 上面的例子,有四组批注 /* */ ,其中第三组及第四组的批注之间有部分重迭。 想要 Compile 没有错误,必须第 5 列的 /* 与 第 10 列的 */ 配,也就是 第 5 列到第 10 列都是批注;另外第 7 列的 /* 与 第 7 列的 */ 配,也就是 第 7 列是批注。这种批注方式,我们称之为巢状批注。 Turbo C 内定是不可使用巢状批注的,上面的例子会是第 5 列的 /* 与 第 7 列 的 */ 配,结果在第 10 列的 */ 会变成是多余的,造成 Compile 错误。 打开巢状批注的方法: 按下 F10 Options Compiler Source Nested comments Off 将 Off 设为 On 就可以了。 巢状批注的使用时机 在前面的例子只是为了说明巢状批注,也许你会觉得这样的用法是自找麻烦, 但是以下的例子,你就会认为有巢状批注的功能还是比较好的。 在 nestcom1.c 中,每一列的 printf(); 后面都加上了批注。 若要把这几列程序变成批注,不使用巢状批注,就会像 nestcom2.c 一样, 必须在每一列的 printf(); 前后再加上 /* */,若是使用巢状批注, 就像 nestcom3.c 一样,只要在这几列的前后加 /* */ 就可以了。 nestcom1.c 1#include /* prototype : printf() */ 2void main(void) 3 4 /* 这个程序在每一个叙述后都加上了批注 */ 5 6 printf(%d + %d = %dn, 8 , 2 , 8+2 ); /* 8 + 2 = 10 */ 7 printf(%d - %d = %dn, 8 , 2 , 8-2 ); /* 8 - 2 = 6 */ 8 printf(%d * %d = %dn, 8 , 2 , 8*2 ); /* 8 * 2 = 16 */ 9 printf(%d / %d = %dn, 8 , 2 , 8/2 ); /* 8 / 2 = 4 */ 10 11 nestcom2.c 1#include /* prototype : printf() */ 2void main(void) 3 4/* 这个程序不用把巢状批注的设定打开,也不会有错误 */ 5 6/* printf(%d + %d = %dn, 8 , 2 , 8+2 ); */ /* 8 + 2 = 10 */ 7/* printf(%d - %d = %dn, 8 , 2 , 8-2 ); */ /* 8 - 2 = 6 */ 8/* printf(%d * %d = %dn, 8 , 2 , 8*2 ); */ /* 8 * 2 = 16 */ 9/* printf(%d / %d = %dn, 8 , 2 , 8/2 ); */ /* 8 / 2 = 4 */ 10 11 nestcom3.c 1#include /* prototype : printf() */ 2void main(void) 3 4/* 这个程序也必须把巢状批注的设定打开,才不会有错误 */ 5/* 6 printf(%d + %d = %dn, 8 , 2 , 8+2 ); /* 8 + 2 = 10 */ 7 printf(%d - %d = %dn, 8 , 2 , 8-2 ); /* 8 - 2 = 6 */ 8 printf(%d * %d = %dn, 8 , 2 , 8*2 ); /* 8 * 2 = 16 */ 9 printf(%d / %d = %dn, 8 , 2 , 8/2 ); /* 8 / 2 = 4 */ 10*/ 11 第三章 常数与变数 C 语言的数据可分为常数(constant)及变量(variable),常数指的是固定不变的数, 例如:0,1,2 等数值,或是用双引号定义的字符串,我们也称之为字符串常数。 变量指的是数值可以改变的数,例如:一个整数变量,我们可以把它设成 1,然后再 改为 10,或是其它的整数数值。 一个程序若没有变量,那纯粹只是将常数秀出来而已,好比是用文字编辑器编辑一个 档案,再用 type 把它秀出来一样。有了变量,就可以做不同的变化。 变量的型态Char, int, long, float, double etc.。 变数的命名 如同档案的命名,变量的名字要取得有意义,在 C 中,名字可以取得很长,但是 要用英文的,所以你可以把变量用中翻英来命名。 变量的命名规则 变量名称的第一个字符必须是英文字母(A 到 Z 或 a 到 z)或是底线( _ )。 第二个字符以后可以使用前述字符,再加上数字 0 到 9 。 变量名称的大小写是不同的。 变量名称的最前面 32 个字符有效。 不可以使用保留字当变量的名称,保留字是给编译器使用,不可以当成 变量名称。TC 有以下的保留字: 流程: if else for do while switch default case break continue goto return 型别: char int long float double void register signed unsigned short near far huge typedef struct union enum auto const static volatile extern interrupt cdecl pascal asm 运算: sizeof 缓存器: _AX _AH _AL _cs _CS _BX _BH _BL _ds _DS _CX _CH _CL _es _ES _DX _DH _DL _ss _SS _SI _DI _BP _SP 变量的设定 使用变量时,应该先考虑这个数可能的数值范围,用以选定变量的型别,例如: 用一个数来存班上的人数,一个合班的大班级可能超过百人,但最大不太可能 超过千人,所以选一种变量型别可存 1000 以下的数值,在此可选整数。 若是要用一个数来存你的存款,则整数的上限 32767 可能某些同学一个月的薪资 就是它的数倍,所以要选长整数,它的上限是 2147483647 。在数学运算时, 想要有小数的就要用浮点数(float)。 在 C 语言中,变量宣告的语法如下: 型别 变量名称1 ,变量名称2 ,. ; 例如: int NumberOfStudent; /* 学生人数 */ long MoneyInBank, interest; /* 银行存款 */ float RateOfInterest; /* 利息利率 */ char EndOfString; /* 字符串结束 */ char OneStudentName9; /* 学生姓名 */ 在宣告变量时,我们可以设定变量的初始值(initial value),语法如下: 型别 变量名称1=初始值1 ,变量名称2=初始值2 ,. ; 例如: int NumberOfStudent=60; /* 学生人数 */ long MoneyInBank=1000000L; /* 银行存款 */ float RateOfInterest=5.0; /* 利息利率 in % */ char EndOfString=0; /* 字符串结束 */ char OneStude
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 供水工程方案比较(3篇)
- 2025商品买卖合同范本
- 护理核心制度考试题(附参考答案)
- 2025专用独家主播经纪合同范本
- 龙门架安拆方案
- 市场开发策划方案
- (新)2025年急救相关知识考试题库及答案
- (2025)预防接种培训考核试题及参考答案
- 2025消毒高级工考试题及答案
- 2025养老保险基金管理委托合同
- (正式版)SH∕T 3548-2024 石油化工涂料防腐蚀工程施工及验收规范
- 四川省成都市2025届高中毕业班摸底测试英语试题(含答案)
- 简易呼吸器使用的评分标准
- 电脑耗材实施方案、供货方案、售后服务方案
- 水利工程专家协议书
- 肝硬化伴胃底静脉曲张的护理查房
- 2024年低压电工考试题库低压电工证考试内容
- 5 国行公祭为佑世界和平
- 食堂员工防鼠知识培训
- 工程伦理 课件全套 李正风 第1-9章 工程与伦理、如何理解伦理- 全球化视野下的工程伦理
- 和大人一起读
评论
0/150
提交评论