流 程 控 制
l l 控 制 结 构 ( control structure )
结 构 化 程 式 设 计 的 基 础 建 立 在 下 列 三 个 结 构 :
( 1 ) 循 序 ( sequential ) : 以 一 个 接着 一 个 方 式 进 行 作 业 。
( 2 ) 条 件 执 行 ( conditional ) : if_then_else 。
( 3 ) 回 路 ( looping ) :
l l 条 件 执 行 if 的 运 用
以 下 是 if_then_else 流 程 控 制 可 能 出 现 的 四 种 语 法
syntax 1: if (关系操作数) statement ; | syntax 3: if (关系操作数) statement ; else statement ; |
syntax 2: if (关系操作数) { statement 1 ; statement 2 ; . . . statement n ; } | syntax 4: if (关系操作数) { statement 1 ; statement 2 ; . statement n ; } else { statement 1 ; statement 2 ; . statement n ; } |
ps. 如 果 statement 超 过 一 个 以 上 , 则 须 以 { } 将 其 区 块 分 隔 开 来 。
Example 1: void main(void) { int x; scanf("%d",&x); if ( x >= 10 ) printf("%d >= 10/n",x); else printf("%d < 10/n",x); } Result: 10 ---> 此处为键盘输入值 10 >= 10 | Example 2: void main(void) { char c; scanf("%c",&c); if( c == 'A' ) { printf("c=%c/n",c); printf("This is true./n"); } else { printf("c!=A/n"); printf("That isn't true./n"); } Result: A -----> 此处为键盘输入值 c=A This is true |
l l 回 路 while 的 运 用
在 while 的 叙 述 中 , 当 关 系 运 算 元之 条 件 为 真 时 , 会 不 断 地 重 覆 执 行 位 于 while 后 所 列 的 叙 述 , 直 到 条 件 变 为 否 定 才 停 止 。
Syntax 1: while ( 关系操作数 )
statement ; | Syntax 2: while ( 关系操作数 ) { statement 1 ;
statement n ; } |
Example 1: main( ) { int i=0; while ( i < 5 ) printf("%d/n",i++);
printf("out of loop./n"); } Result = ????? | Example 2: main( ) { int i=0,c=0; while ( i < 5 ) { printf("%d",i++); printf("%d/n",++c); } printf("out of loop./n"); } Result = ????? |
l l 回 路 do-while 的 运 用
do-while 回 路 , 由 于 测 试 条 件 在 回 路 的 后 面 , 所以 回 路 中 的 叙 述 至 少 会 被 执 行 一 次 ,
Syntax 1: do statement ; while ( 关系操作数 ) ; | Example 1: main( ) { int i=0,c=0; do { printf("%d",i++); printf("%d/n",++c); } while ( i < 5 ) ;
printf("We're out of the loop./n"); } Result = ????? |
Syntax 2: do { statement 1 ; statement 2 ; . statement n ; } while ( 关系操作数 ) ; |
l l 回 路 for 的 运 用
for 允 许 使 用 者 在 同 一 行 叙 述 中 就 设 定 了 回 路 的 三 个 部 份 。 ( 1 ) 计 数 器 的 初 值 , ( 2 ) 关 系 运 算 元 , ( 3 ) 增 减 回 路 计 数 器 的 值 。 其 语 法 如 下 所 示 ,
for ( 计数器初值,关系操作数,计数器值更新 )
statement ;
or
for ( 计数器初值,关系操作数,计数器值更新 )
{ statement 1 ;
.
statement n ;
}
Example 1: main( ) { int i; for( i = 0 ; i <= 5 ; ++i ) printf("%d/n",i); } Result = ????? | Example 2: main( ) { int i,c; for ( i=0,c=1 ; i < 5 ; ++i,++c ) { printf("%d",i); printf("%d/n",c); } printf("Out of Loop./n"); }Result = ????? |
l l 条 件 执 行 switch 的 运 用
我 们 在 实 际 的 程 式 写 作 时 常 会 遇 到 多 种 选 择 情 况 , 而使 用 一 连 串 if - else 来 表 示 是 常 发 生 的 , 所 以 C 提 供 了 一 项 特 殊 的 控 制结 构 , 让 我 们 能 够 有 效 且 精 简 处 理 程 式 。
其 语 法 如 下 所 示
switch ( 变量)
{
case 常数 1 :
statement 1 ;
case 常数 2 :
statement 2 ;
.
.
case 常数 n :
statement n ;
default :
statement ;
}
ps. 此 处 常 数 的 资 料 型 态 为 整 数 与 字 元 两 种 。
Example 1: main( ) { char var='D'; switch (var ) { case 'A' : printf("var = A/n"); break; case 'B' : printf("var = B/n"); break; case 'C' : printf("var =C/n"); break; default : printf("I'm in default."); } /* end of switch */ } /*end of main */ | Example 2: main( ) { int var=3; switch ( var ) { case 1 : printf("var = 1/n"); break; case 2 : printf("var = 2/n"); break; case 3 : printf("var = 3/n"); break; default : printf("I'm in default"); } /* end of switch */ }/*end of main */ |
l l goto 的 运 用
在 一 个 程 式 中 , 使 用 goto 叙 述 可 以 强 制 改 变 程 式 执 行 的 步 骤 , 但 也 会因 此 使 程 式 的 结 构 混 乱 , 所 以 此 叙 述 应 尽 量 不 用 。 其 语 法 如 下 所 述 。
Syntax : goto label ; label : | Example: main( ) { int i=1111; repeat : printf("%d/n",i); goto repeat ; } |