C语言速成教程
——教你如何10小时学会 C 语言
内容                page
■ 第一章 C 语言简介与Turbo C 的使用        2
■ 第二章 C 程序的结构            4
■ 第三章 常数与变数            10
■ 第四章 基本输出入函式            13
■ 第五章 流程图与抉择指令          21
■ 第六章 循环与自动重复            32
■ 第七章 数组与指针            40
■ 第八章 函数与呼叫            46
■ 第九章 档案存取            55
■ 第一章  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 <stdio.h>      │←─ 范例原始码
2│main()                  │
3│{                      │
4│  printf("Hello!");    │
5│}                      │
├────────────┤
│Hello!                  │←─ 范例执行结果
└────────────┘
第一列: #include <stdio.h>
是用来定义一些函式的原型(prototype)、数据结构(struct)或是常数(constant)。              C 在使用变量之前,该变量都要先行宣告(declear)才可使用,而使用函式也是一样,必须先宣告它的原型才可以。宣告函式的原型是为了让 C 能在编辑时作数据的型别检查,以减少错误的发生。 内建的函式原型定义都放在 INCLUDE\*.H 中,用 #include <stdio.h> 就会将 INCLUDE\stdio.h 这个档引含。 stdio.h 由档名可知道是跟标准输出入(standard I/O)有关,档内定义了档案输出入、屏幕输出、键盘输入等相关函式的原型、数据结构及常数。 本例中的 printf() 就属于标准输出的函式。  引含 .h 档并不会让你的执行档变大或是变慢,而且还能让编辑器作正确的型别检查,所以要养成写 #include 的习惯。  ☆虽然在某些状况下,不加 #include <> 所产生的执行档,一样可以正常的执行。
第二列: main()
main() 就是主程序。程序在执行时,就是由这个函式开始执行。 在 C 语言中,内定的型别是 int ,所以原来的 main() 相当于是  i
nt 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 <stdio.h>                                              │
2│void main(void)                                                │
3│{                                                              │
4│  printf("%d + %d = %d\n", 8 , 2 , 8+2 );                      │
5│  printf("%d - %d = %d\n", 8 , 2 , 8-2 );                      │
6│  printf("%d * %d = %d\n", 8 , 2 , 8*2 );                      │
7│  printf("%d / %d = %d\n", 8 , 2 , 8/2 );                      │
8│}                                                              │
├────────────────────────────────┤
│8 + 2 = 10                                                      │
│8 - 2 = 6                                                      │
│8 * 2 = 16                                                      │
│8 / 2 = 4                                                      │
└────────────────────────────────┘
我们以第四列的叙述作说明:
printf("%d + %d = %d\n",  8  ,  2  ,  8+2 );
↑    ↑  ↑      │    │    │
│    │  └───│──│──┘
│    └─────│──┘
一个完整的c语言程序└────────┘
在 输出格式(含控制字符串) 内有 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 <stdio.h>    /* prototype : printf() */              │
2│void main(void)  // main program                                │
3│{                                                              │
4│/* 所有的程序代码都变成批注,所以这个程序目前是空的 */            │
5│/* printf("%d + %d = %d\n", 8 , 2 , 8+2 );    */                │
6│/* printf("%d - %d = %d\n", 8 , 2 , 8-2 );                      │
7│  printf("%d * %d = %d\n", 8 , 2 , 8*2 );                      │
8│  printf("%d / %d = %d\n", 8 , 2 , 8/2 );  //  division        │
9│*/                                                              │
10│}    // end of program                                          │
├────────────────────────────────┤
└────────────────────────────────┘
◎ 巢状批注(Nested Comments)
┌────────────────────────────────┐
│nestcom0.c                                                      │
├────────────────────────────────┤
1│#include <stdio.h>    /* prototype : printf() */              │
2│void main(void)               

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。