|
单片机c语言,10小时学会C 语言 (五)
第五章 流程图与抉择指令
前一章的 scanf好不好用呢?在多笔数据输入时,不小心输错一笔数据,可能会导致后面的读到的数据都是错的。而错误的输入数据,自然会使输出的数据也是错误的,这就是所谓的「垃圾进、垃圾出」( Garbage In, Garbage Out )。如果程序能分辨输入的数据是否正确,如果是错误的或是超过范围的,就可以要求使用者再输入一次。要达到这个目的,我们必须使用「判断」以及「循环」。本章将介绍如何用 C 来做判断,有关循环的部分参考下一章。
◎ 预习课程:流程图 ( Flow Chart )
在进入本章之前,先介绍流程图。流程图不只可以用在程序的流程设计,也可以用在任何事件,例如:计划执行的流程图、休闲计划流程图等等。 在程序设计上,小程序也许不用流程图。 但是中、大型程序最好要有流程图,有了流程图,可以进一步检视你的设计,看看是否在逻辑上有问题,看看那个部分可以再加强,那个部分可以简化,因为看流程图比看原始码要容易除错。另外流程图设计得好,程序的部分就显得相当简单了,只要把流程图的符号用对应的程序流程控制叙述取代,程序的架构就完成了。 隔了一段时间,若须要增加或修改程序部分功能,有留下流程图,就可以快速进入状况,找到要修改的部分,并新增程序。以下介绍 6 种常用的流程图符号:
○ 开始/结束符号
符 号 意 义 例 子
────────────────── ────────────────────────── ──────────────────
╭────────────╮ 表示流程图的开始或结束,每个 ╭───────────╮
│ │ 流程图必须以开始符号开始,以 │ 开 始 │
│ │ 结束符号作结束。 ╰───────────╯
╰────────────╯ 流程图的开始
╭───────────╮
│ 结 束 │
╰───────────╯
流程图的结束
○ 输入/输出符号
符 号 意 义 例 子
───────────────── ───────────────────────────── ───────────────────
___________ 表示计算机与外界的连系,通常程 __________
/ / 式需从外界输入数据,程序再将 / 输入 /
/ / 执行后的结果输出给使用者。 / a, b, c /
/__________/ 在符号中,输入数据时要注明是 /__________/
「输入」,在输出数据时要注明 读入三笔数据,并存在
是「输出」。 a, b, c 三个变数内。
──────────
/ 输出 /
/ a, b, c /
/──────────/
将变数 a,b,c 的数值输出。
○ 处理符号
符 号 意 义 例 子
───────────────── ───────────────────────── ─────────────────
┌──────────────┐ 表示各种算术、函数的运算。 ┌──────────────┐
│ │ 在一个处理符号内可表示多个 │F = 100; │
│ │ 运算。 │C =(F-32)*5/9;│
└──────────────┘ └──────────────┘
○ 抉择符号
符 号 意 义 例 子
───────────────── ────────────────────────── ─────────────────
/\ 表示各种算术、逻辑或关系运算 /\
/ \ ,程序执行到这个地方必须做一 /a>=b\ No
/ 条件 \ No 决定,此项决定由符号内的条件 \ / ────┐
\ /→ 来判断。当条件成立时,则程序 \/ │
\ / 流程依 Yes 的方向指示继续执 Yes │ ↓
\/ 行;当条件不成立时,则程序 ↓ ┌──┴─┐
Yes ↓ 流程依 No 的方向指示继续执行 ┌─┴──┐ │c=0;│
。在这个菱形符号的四个角,上 │c=5;│ └────┘
面的角通常是被上面的流程符号 └────┘
所指,其它的三个角,你可以任 当 a 大于或等于 b 时
选两个角做 Yes 及 No 的流程 执行 c=5; 的运算,否
指向,只要标明清楚就可以了。 则执行 c=0; 的运算。
○ 流向线
符 号 意 义 例 子
─────────────── ───────────────────────── ───────────────────
──────────→ 箭头方向表示程序执行的先后次 ┌──────────────┐
│ 序。 │scanf("%d %d",│
│ │ &a,&b);│
↓ └──┬───────────┘
────────────┐ ↓
│ /\
│ │ ↓ /a>=b\ No
│ │ \ /────┐
├←───────┘ \/ │
↓ Yes ↓ ↓
○ 连接符号
符 号 意 义 例 子
────────────────── ──────────────────────── ──────────────────
○ 绘制流程图时,常会受到空间的 /\
限制,有时流向线需流到比较远 /a>=b\ No
的地方。这种长的流向线往往会 \ /─→?
使流程图看起来比较乱,有时流 \/
程图很大,可能须要许多页来绘 Yes ↓
制,这时,利用连接符号就可以 /\
简化流向线。 /b>=c\ No
在连接符号内会有一个数字或字 \ /─→?
母做为识别。在不同的地方看到 \/
连接符号,只要它们的识别数字 Yes ↓
或字母是相同的,就表示它们是 ┌─┴────┐
相连接的。 │ c=1; │
└──┬───┘
├←──?
↓
/\
/a>=b\ No
\ /────┐
\/ │
Yes ↓ ↓
○ 范例:星期天流程图
╭─────────╮
│ 开 始 │
╰─────┬───╯
↓
┌─────┴───┐
│ 起 床 │
└─────┬───┘
↓
┌─────┴───┐
│刷牙、洗脸│
└─────┬───┘
↓
/\
/天气\ 晴天
\ ? / ─────────┐
\/ ↓
下雨↓ ┌───┴────┐
┌──────┴────┐ │ 看 电 影 │
│ 看 报 纸 │ └────┬───┘
└─────┬─────┘ ↓
↓ ┌─────┴──┐
┌─────┴─────┐ │ 逛 街 │
│ 读 书 │ └──────┬──┘
└─────┬─────┘ │
↓←─────────────┘
┌─────┴───┐
│ 吃 中 饭 │
└─────┬───┘
↓
╭─────┴───╮
│ 结 束 │
╰─────────╯
◎ 关系与条件
在数学上任两个数值一定会符合「三一律」,什么是「三一律」?假设两个数:
一个是 a ,一个是 b ,那 a 跟 b 的关系一定是下列三种的某一种:
a 大于 b ; a 等于 b 或 a 小于 b 。
在计算机程序中,常常要判断数值间的关系,例如:一些游戏软件会在一开始要求你输入密码,输入的密码与正确的密码相等,游戏才会继续执行;或是机密性的数据库管理系统会要求输入密码,系统再依输入的密码给予相对的权限,如:
总经理可以看到全部的数据,一般员工只能看自己的数据。
在 C 语言中提供了下列的关系运算子,让程序设计师判断两个数值的关系:
┌────────────┬───────────╥──────┬───────────────────┐
│ 关系运算子 │ 意 义 ║ 例子 │ 状 况 │
├────────────┼───────────╫──────┼───────────────────┤
│ > │ 大于 ║ a>b │ a 是否大于 b ? │
│ < │ 小于 ║ a │ >= │ 大于或等于 ║ a>=b │ a 是否大于等于 b ? │
│ <= │ 小于或等于 ║ a<=b │ a 是否小于等于 b ? │
│ == │ 等于 ║ a==b │ a 是否等于 b ? │
│ != │ 不等于 ║ a!=b │ a 是否不等于 b ? │
└────────────┴───────────╨──────┴────────────────────┘
两个数的关系符合三一律,所以,当你使用上述任一个关系运算子时,所指定的状况不是成立,就是不成立。指定的状况成立,我们称之为「真(True)」,状况不成立,我们称之为「假(False)」。
在 C 语言中,假(False)是用 0 来表示。不是假的,就是真的,所以,所有非 0的值,在 C 语言中都表示真(True)。
★注意:在 C 语言中 = 是设定运算子; == 是关系运算子,两者不可混用。
┌────────┬───────────────────────────────────────────────────────┐
│a = 3 ; │a 的数值设为 3 │
├────────┼───────────────────────────────────────────────────────┤
│a == 3 │a 是否等于 3 ? a 等于 3 则此关系式为真,否则为假。 │
└────────┴───────────────────────────────────────────────────────┘
◎ if 叙述
if 叙述可用来作基本的抉择: ↓
/\
如果某个条件成立,则要做某事。 / \
No /条件测试\
例:如果天下雨的话,我就要带伞。 ┌─ \ ? /
﹌﹌﹌ ﹌﹌﹌ │不 \ /
条件 要做的事 │成 \/
│立 │成立
if 叙述的型式如下: │ ↓Yes
┌──────────────────────┐ │ ┌────┴────┐
│if(条件测试) { 指令群 } │ │ │ 指令群 │
└──────────────────────┘ │ └────┬────┘
意义: └──────→┤
┌─────────────────────────────────────────────┐ ↓
│如果 (条件测试) 是成立的,则执行 { 指令群 } 。 │
└─────────────────────────────────────────────┘
○ 指令群?
在 C 语言中,所谓的指令群,乃是由数个(包括 0 个,1 个,...)指令括在一对大括号中而形成。例如:
{ } ──────→ ; 空指令
{ ───┐
i = i + 1; ├──→ i = i + 1; 单一指令
} ───┘
{
i = i - 1;
j = i * 2;
}
这三者都可以称为指令群。指令群的后面不必以分号做为结束,因为右大括号便足以代表结尾在何处了。当指令群内只有一个指令时,我们也可以将这一对大括号省略,此时,该指令群便与一般指令无异。当指令群内没有任何指令时,如果你要省略这对大括号,就要补上一个分号 ( ; ),表示是空指令。
以下的范例,将使用者输入的数值取绝对值后再秀出:
┌────────────────────────────────────────────────────────────────┐
│abs.c │
├────────────────────────────────────────────────────────────────┤
1│#include/* 宣告 printf(),scanf() 的原型 */ │
2│void main(void) │
3│{ │
4│ int i; │
5│ │
6│ printf("Enter an integer:"); │
7│ scanf("%d",&i); │
8│ if( i < 0 ) i = -i; │
9│ printf("The absolute value of it is %d.\n", i ); │
10│} │
├────────────────────────────────────────────────────────────────┤
│Enter an integer:-100 │
│The absolute value of it is 100. │
└────────────────────────────────────────────────────────────────┘
┌ i , 若 i >= 0
绝对值的定义: │ i │ = ┤
└ -i , 若 i < 0
所以在程序第 8 行,当 i < 0 成立时,就令 i = -i ,这样 i 就成为正数了。
◎ 二重选择题: if - else 叙述
只有 if 只能设定条件成立要做的事, ↓
再加上 else 则可设定条件不成立时 /\
要做的事。 / \
例如:如果好天气,就出去逛街, No /条件测试\ Yes
否则,就在家看电视。 不┌─ \ ? / ──────┐成
成│ \ / │立
立↓ \/ ↓
┌──┴──────┐ ┌─────┴────┐
if-else 叙述的型式如下: │ 指令群2 │ │ 指令群1 │
┌───────────────────────┐ └──┬──────┘ └─────┬────┘
│if(条件测试) { 指令群1 } │ └─────────→┬←───────┘
│else { 指令群2 } │ ↓
└───────────────────────┘
意义:
┌─────────────────────────────────────────┐
│如果 (条件测试) 是成立的,则执行 { 指令群1 };│
│否则,执行 { 指令群2 } │
└─────────────────────────────────────────┘
以下是课本的范例,将使用者输入的两个数值找出最大值后再秀出:
┌────────────────────────────────────────────────────────────────┐
│max1.c │
├────────────────────────────────────────────────────────────────┤
1│#include/* 宣告 printf(),scanf() 的原型 */ │
2│void main(void) │
3│{ │
4│ int i, j, max; │
5│ │
6│ printf("Enter 2 integer :"); │
7│ scanf("%d %d", &i, &j); │
8│ if( i > j ) max = i; │
9│ else max = j; │
10│ printf("The maximum of %d and %d is %d.\n", i, j, max ); │
11│} │
├────────────────────────────────────────────────────────────────┤
│Enter 2 integer : 7 5 │
│The maximum of 7 and 5 is 7. │
└────────────────────────────────────────────────────────────────┘
◎ 多重选择题: if-else if 架构
当状况不只一种时,光是 if-else 就不够用了。在 C 中,可以在 else之后再加上 if-else 的架构,如此,就可多一个判断。同理,可在所加的 else之后再加上 if-else ,直到所有状况都包含为止。
如:如果气温小于 20 度,就穿两件衣服;气温小于 15 度,就穿三件衣服;气温小于 10 度,就穿四件衣服。
if-else if 架构:
┌────────────────────────────┐
│if(条件测试1) { 指令群1 } │
│else if(条件测试2) { 指令群2 }│
│else if(条件测试3) { 指令群3 }│
│else if... │
│else { 指令群n } │
└────────────────────────────┘
意义:
┌─────────────────────────────────────────────────┐
│如果 (条件测试1) 是成立的,则执行 { 指令群1 }; │
│否则,如果 (条件测试2) 是成立的,则执行 { 指令群2 }; │
│否则,如果 (条件测试3) 是成立的,则执行 { 指令群3 }; │
│否则,如果... │
│否则,只好执行 { 指令群n } │
└─────────────────────────────────────────────────┘
↓
/\
/ \
/条件测试\ 不成立
\ 1 / ──────┐
\ ? / No ↓
\/ /\
│成立 / \
↓Yes /条件测试\ 不成立
┌─────┴─────┐ \ 2 / ───────┐
│ 指令群1 │ \ ? / No ↓
└─────┬─────┘ \/ /\
│ │成立 / \
│ ↓Yes /条件测试\ 不成立
│ ┌─────┴────┐ \ 3 / ───────┐
│ │ 指令群2 │ \ ? / No ↓
│ └─────┬────┘ \/ /\
│ │ │成立 / \
│ │ ↓Yes /条件测试\ 不成立
│ │ ┌────┴────┐ \ ... / ──────┐
│ │ │ 指令群3 │ \ ? / No │
│ │ └────┬───┘ \/ │
│ │ │ │成立 │
│ │ │ ↓Yes │
│ │ │ ┌─────┴───┐ │
│ │ │ │ 指令群...│ │
│ │ │ └─────┬───┘ ┌────┴─────┐
│ │ │ │ │ 指令群n │
│ │ │ │ └────┬─────┘
│ ↓ ↓ ↓ ↓
├←───────────┴───────────┴────────────┴───────────┘
↓
以下的范例,仿真高速公路交通警察执勤状况。
┌────────────────────────────────────────────────────────────────┐
│police.c │
├────────────────────────────────────────────────────────────────┤
1│#include/* 宣告 printf(),scanf() 的原型 */ │
2│void main(void) │
3│{ │
4│ int speed; │
5│ │
6│ printf("Enter the speed = "); │
7│ scanf("%d", &speed ); │
8│ if( speed < 60 ) │
9│ printf("Too slow, speed up!\n"); │
10│ else if( speed < 90 ) │
11│ printf("Good day, boss.\n"); │
12│ else if( speed < 100 ) │
13│ printf("Too fast, slow down!\n"); │
14│ else │
15│ printf("I will give you a ticket!\n"); │
16│} │
├────────────────────────────────────────────────────────────────┤
│Enter the speed = 50 │
│Too slow, speed up! │
│Enter the speed = 80 │
│Good day, boss. │
│Enter the speed = 95 │
│Too fast, slow down! │
│Enter the speed = 120 │
│I will give you a ticket! │
└────────────────────────────────────────────────────────────────┘
这类的程序,在设计时要注意到条件测试的顺序,否则,答案可能会有问题。如:将第 12 行与第 8 行的判断式对调,秀出讯息的第 13 行与第 9 行也对调:
if( speed < 100 )
printf("Too fast, slow down!\n");
else if( speed < 90 )
printf("Good day, boss.\n");
else if( speed < 60 )
printf("Too slow, speed up!\n");
else
printf("I will give you a ticket!\n");
这样的话,程序只会有两种输出:
speed < 100 ,秀出 Too fast, slow down!
speed >= 100 ,秀出 I will give you a ticket!
如果你无法确定你写的程序对不对,那你最好画画流程图来帮助判断。
此程序的判断流程如下:
╭──────╮
│开 始 │
╰───┬──╯
↓
──┴───
/输入车速/
/───┬───/
↓
/\ No 表示车速 ≧ 60
/小于\───────┐
\ 60 / ↓
\/ /\ No 表示车速 ≧ 90
Yes│ /小于\───────┐
↓ \ 90 / ↓
┌───────┴─────┐ \/ /\ No 表示车速 ≧ 100
│ 车速 < 60 │ Yes│ /小于\ ───────────┐
│太慢了,加速! │ │ \ 100/ │
└───────┬─────┘ ↓ \/ │
│ ┌───────┴───────┐Yes│ │
│ │60≦ 车速 <90 │ │ │
│ │ 祝一路顺风。 │ │ │
│ └───────┬───────┘ ↓ ↓
│ │ ┌───────┴─────┐┌─────────┴───┐
│ │ │90≦ 车速<100││ 100 ≦ 车速 │
│ │ │太快了,减速! ││赏你一张罚单! │
│ │ └───────┬─────┘└─────────┬───┘
│ ↓ ↓ ↓
├←──────────────────────┴────────────────┘
↓
╭───┴──╮
│结 束│
╰──────╯
以下是课本的范例:一个简单的四则运算计算器。
┌────────────────────────────────────────────────────────────────┐
│calc.c │
├────────────────────────────────────────────────────────────────┤
1│#include/* 宣告 printf(),scanf() 的原型 */ │
2│void main(void) │
3│{ │
4│ float num1,num2; │
5│ char op; │
6│ │
7│ for(;;) │
8│ { │
9│ printf("Enter number, operator, number\n"); │
10│ scanf("%f %c %f", &num1, &op, &num2); │
11│ if( op == '+' ) │
12│ printf("%f + %f = %f\n", num1, num2, num1+num2); │
13│ else if( op == '-' ) │
14│ printf("%f + %f = %f\n", num1, num2, num1-num2); │
15│ else if( op == '*' ) │
16│ printf("%f + %f = %f\n", num1, num2, num1*num2); │
17│ else if( op == '/' ) │
18│ printf("%f + %f = %f\n", num1, num2, num1/num2); │
19│ } │
20│} │
├────────────────────────────────────────────────────────────────┤
│Enter number, operator, number │
│4 + 8 │
│4.000000 + 8.000000 = 12.000000 │
│Enter number, operator, number │
│5 * 7 │
│5.000000 + 7.000000 = 35.000000 │
│^C │
└────────────────────────────────────────────────────────────────┘
在这个程序中,会读取二个数值以及一个运算符号,接着判断运算符号是否是+ - * / 之中的一个,如果是的话就作相对应的运算,并将结果输出。另外,第 7 行使用了下一章才会提到的「循环」。这个程序会不断的执行,你必须按下 Ctrl + Break 或 Ctrl + C 才能中断它。
☆ 有关「抉择」☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
前面所讲的抉择判断式子都相当简单,以下介绍三种 C 语言提供的方式,可以让你的「抉择」多样化。
◎ 逻辑运算子
○ && AND
假设有一个表达式 : exp1 && exp2则此表达式的结果为真的条件是 exp1 为真 且 exp2 也为真;否则此表达式的结果为假。
○ || OR
假设有一个表达式 : exp1 || exp2则此表达式的结果为真的条件是 exp1 为真 或 exp2 为真;只有在 exp1 为假 且 exp2 也为假时,此表达式的结果才为假。
○ ! NOT
假设有一个表达式 : !exp1则此表达式结果为真的条件是 exp1 为假;而当 exp1 为真时,此表达式的结果就是假。
◎ 小括号指定叙述
任何用小括号括住的指定叙述是一个表达式,它的值与指定值一样。例如:表达式 ( sum = 5 + 3 ) 的值为 8 ,所以表达式( ( sum = 5 + 3 ) <= 10 ) 结果为真,因为 ( 8 <= 10 ) 。
◎ 逗号运算子
你可以利用逗号运算子 (,) 把多个表达式放入括号内。表达式由左至右执行或计算,整个表达式的值以最后一个的值为准。
例如:表达式 ( i = 1, j = 2, k = i + j ) 的值为 k 也就是 3 ,因为,先设了 i = 1 ,再指定 j = 2 ,最后令 k = i + j ,所以 k 的值为 3 ,因为 k = i + j 是最后一个叙述,所以这个表达式的值就等于 k 也就是 3 。
应用:
┌────────────────────────────────────────────────────────────────┐
│yes.c │
├────────────────────────────────────────────────────────────────┤
1│#include/* 宣告 printf() 的原型 */ │
2│#include/* 宣告 getche() 的原型 */ │
3│void main(void) │
4│{ │
5│ char ch; │
6│ │
7│ printf("Press Y or y to continue xxxxxx..."); │
8│ if ( ( ch = getche() ) == 'Y' || ch == 'y' ) │
9│ printf("\nYou press %c.\n", ch), │
10│ printf("continue xxxxxx...\n"); │
11│ else │
12│ printf("\nYou press %c.\n", ch), │
13│ printf("stop xxxxxx!\n"); │
14│} │
├────────────────────────────────────────────────────────────────┤
│Press Y or y to continue xxxxxx...y │
│You press y. │
│continue xxxxxx... │
│Press Y or y to continue xxxxxx...q │
│You press q. │
│stop xxxxxx! │
└────────────────────────────────────────────────────────────────┘
在这个程序中,会要求使用者输入一个字符,如果输入的字符是 Y 或 y 则秀出 You press y. continue xxxxxx... 类似程序继续执行某种程序;如果输入的不是 Y 也不是 y ,则秀出 You press X. stop xxxxxx! 类似程序停止执行某种程序。
在第 8 行中,
if ( ( ch = getche() ) == 'Y' || ch == 'y' )
══╪══════╪════
│↑ │
│└──────┘由键盘读入一个键值,并存到 ch
└→ 整个小括号的值就等于 ch
所以上式可以简化为 if ( ch == 'Y' || ch == 'y' )
也就是,如果 ch 等于 'Y ' 或 'y' 则此判断式为真,否则为假。
在第 9 行中, printf("\nYou press %c.\n", ch),是用逗号 ( , ) 作为结尾的,而不是一般以分号 ( ; ) 来结尾,接着的第 10 行,则是以分号 ( ; ) 作结尾,表示第 9 行与第 10 行的指令是一体的。如果第 9 行要用分号 ( ; ) 作结尾,那就要在第 9 行指令前及第 10 行指令后用大括号 { } 括起来,如:
{ printf("\nYou press %c.\n", ch);
printf("continue xxxxxx...\n"); }
同理,在第 12 行与第 13 行也用了相同的方法。
各位也许会发现:第 9 行与第 12 行的程序代码完全相同的!没错,你可以想办法将第 9 行程序代码移到 if 之前,并删去第 12 行程序代码,这样程序就可以减小。本例只是用一下逗号运算子,所以才将程序写成这样。
在这里,并不是要各位把程序写得很难看懂,而是希望各位能看得懂别人所写的程序,了解一些程序设计师可能的用的「技巧」或「手段」。
以上的程序,我们也可以改写如下:
┌────────────────────────────────────────────────────────────────┐
│yes2.c │
├────────────────────────────────────────────────────────────────┤
1│#include/* 宣告 printf() 的原型 */ │
2│#include/* 宣告 getche() 的原型 */ │
3│void main(void) │
4│{ │
5│ char ch; │
6│ │
7│ printf("Press Y or y to continue xxxxxx..."); │
8│ ch = getche(); │
9│ if ( ch == 'Y' || ch == 'y' ) │
10│ { │
11│ printf("\nYou press %c.\n", ch); │
12│ printf("continue xxxxxx...\n"); │
13│ } │
14│ else │
15│ { │
16│ printf("\nYou press %c.\n", ch); │
17│ printf("stop xxxxxx!\n"); │
18│ } │
19│} │
├────────────────────────────────────────────────────────────────┤
└────────────────────────────────────────────────────────────────┘
这样子写,虽然程序比较长,但是在 Compile 之后产生的 .exe 档是一模一样大的【注】,只是程序代码比较长,却是比较「好看」。
【注】用 TC 整合环境所 Compile 出来的 .exe 文件中包含了除错信息(Debug Information),这些除错信息包含了原始码的行号数据,因为 yes.c 与 yes2.c的行数不同,它们的行号数据就不会相同,所以用 TC 整合环境编译出来的执行檔大小是不同的。
我们可以用命令列编译程序 tcc 来编译 yes.c 及 yes2.c :
DOS_Prompt> tcc yes.c
DOS_Prompt> tcc yes2.c
如此,产生的 yes.exe 及 yes2.exe 的档案大小就是一样的了。
单片机教程,五系列(55讲)电子书全集下载论坛精选:
■ 单片机c语言,10小时学会C 语言 (一)
第一章 C 语言简介与Turbo C 的使用
■ 单片机c语言,10小时学会C 语言 (二)
第二章 C 程序的结构
■ 单片机c语言,10小时学会C 语言 (三)
第三章 常数与变数
■ 单片机c语言,10小时学会C 语言 (四)
第四章 基本输出入函式
■ 单片机c语言,10小时学会C 语言 (五)
第五章 流程图与抉择指令
■ 单片机c语言,10小时学会C 语言 (六)
第六章 循环与自动重复
■ 单片机c语言,10小时学会C 语言 (七)
第七章 数组与指针
■ 单片机c语言,10小时学会C 语言 (八)
第八章 函数与呼叫
■ 单片机c语言,10小时学会C 语言 (九)
第九章 档案存取
123
看看咋样
bucuo
rr
就看看
学习
唉看在眼里是不能要求一些单位
gh




