目录
文章目录
前文列表
《程序编译流程与 GCC 编译器》
《C 语言编程 — 基本语法》
《C 语言编程 — 基本数据类型》
《C 语言编程 — 变量与常量》
《C 语言编程 — 运算符》
结构化程序设计
结构化程序:采用结构化算法化繁为简地把一个复杂问题的求解过程分成可控、易理解和易处理的阶段进行,实现一个便于编写、阅读、修改和维护的程序。
三种基本结构:1966 年,Bohra 和 Jacopini 提出顺序结构、选择结构和循环结构三种基本结构,用这三种基本结构作为表示一个良好算法的基本单元。
- 顺序结构:是由一组顺序执行的程序块组成。程序按照语句书写的顺序一步一步顺序执行,没有任何的跳转。
- 选择结构:依据不同的条件选择执行不同的处理块。可以采用 if/else 语句、switch 语句,还有条件运算符来实现选择结构。
- 循环结构:又称重复结构,反复执行某一部分的操作。
条件分支语句
条件分支语句可以让程序在只有条件为真的时候才去执行一段代码。
if/else 语句
if 语句
#include <stdio.h>
int main ()
{
/* 局部变量定义 */
int a = 10;
/* 使用 if 语句检查布尔条件 */
if( a < 20 )
{
/* 如果条件为真,则输出下面的语句 */
printf("a 小于 20
" );
}
printf("a 的值是 %d
", a);
return 0;
}
if/else 语句
#include <stdio.h>
int main ()
{
/* 局部变量定义 */
int a = 100;
/* 检查布尔条件 */
if( a < 20 )
{
/* 如果条件为真,则输出下面的语句 */
printf("a 小于 20
" );
}
else
{
/* 如果条件为假,则输出下面的语句 */
printf("a 大于 20
" );
}
printf("a 的值是 %d
", a);
return 0;
}
if/else-if/else 语句
#include <stdio.h>
int main ()
{
/* 局部变量定义 */
int a = 100;
/* 检查布尔条件 */
if( a == 10 )
{
/* 如果 if 条件为真,则输出下面的语句 */
printf("a 的值是 10
" );
}
else if( a == 20 )
{
/* 如果 else if 条件为真,则输出下面的语句 */
printf("a 的值是 20
" );
}
else if( a == 30 )
{
/* 如果 else if 条件为真,则输出下面的语句 */
printf("a 的值是 30
" );
}
else
{
/* 如果上面条件都不为真,则输出下面的语句 */
printf("没有匹配的值
" );
}
printf("a 的准确值是 %d
", a );
return 0;
}
嵌套 if 语句
#include <stdio.h>
int main ()
{
/* 局部变量定义 */
int a = 100;
int b = 200;
/* 检查布尔条件 */
if( a == 100 )
{
/* 如果条件为真,则检查下面的条件 */
if( b == 200 )
{
/* 如果条件为真,则输出下面的语句 */
printf("a 的值是 100,且 b 的值是 200
" );
}
}
printf("a 的准确值是 %d
", a );
printf("b 的准确值是 %d
", b );
return 0;
}
switch 语句
switch(表达式 1)
{
case 常量表达式 1 : 语句组 1;
case 常量表达式 2 : 语句组 2;
...
case 常量表达式 n : 语句组 n;
default : 语句组 n + 1;
}
执行过程:
- 先计算表达式 1 的值。
- 然后依次把表达式 1 的值与常量表达式的值进行比较。
- 一旦发现表达式 1 的值能够与某个常量表达式配对, 则以此为入口号,由此开始顺序执行语句。
- 若表达式 1 的值与所有的 case 中的常量表达式均无法匹配, 则执行 default 后的语句组 n + 1。
NOTE:
- default 是个可选项,如果 switch 语句中没有 default 分支,则当 switch 后的表达式与所有的常量表达式都不匹配时,将不执行任何操作。
- 每当表达式 oper 找到匹配的常量表达式时,会把顺序执行剩余的语句组。如果目的只是需要特定的运算结果,这时,可以采用 break 语句退出 switch 结构。
switch 语句
#include <stdio.h>
int main ()
{
/* 局部变量定义 */
char grade = 'B';
switch(grade)
{
case 'A' :
printf("很棒!
" );
break;
case 'B' :
case 'C' :
printf("做得好
" );
break;
case 'D' :
printf("您通过了
" );
break;
case 'F' :
printf("最好再试一下
" );
break;
default :
printf("无效的成绩
" );
}
printf("您的成绩是 %c
", grade );
return 0;
}
嵌套 switch 语句
switch(ch1) {
case 'A':
printf("这个 A 是外部 switch 的一部分" );
switch(ch2) {
case 'A':
printf("这个 A 是内部 switch 的一部分" );
break;
case 'B': /* 内部 B case 代码 */
}
break;
case 'B': /* 外部 B case 代码 */
}
三元运算符
Exp1? Exp2 : Exp3;
#include<stdio.h>
int main()
{
int num;
printf("输入一个数字 : ");
scanf("%d",&num);
(num%2==0)?printf("偶数"):printf("奇数");
}
循环语句
循环可以不断的执行一段代码,直到条件变为假,或者计数完成。
for 循环
for ( init; condition; increment )
{
statement(s);
}
- init 会首先被执行,且只会执行一次。这一步允许您声明并初始化任何循环控制变量。您也可以不在这里写任何语句,只要有一个分号出现即可。
- 接下来,会判断 condition。如果为真,则执行循环主体。如果为假,则不执行循环主体,且控制流会跳转到紧接着 for 循环的下一条语句。
- 在执行完 for 循环主体后,控制流会跳回上面的 increment 语句。该语句允许您更新循环控制变量。该语句可以留空,只要在条件后有一个分号出现即可。
- 条件再次被判断。如果为真,则执行循环,这个过程会不断重复(循环主体,然后增加步值,再然后重新判断条件)。在条件变为假时,for 循环终止。
#include <stdio.h>
int main ()
{
/* for 循环执行 */
for( int a = 10; a < 20; a = a + 1 )
{
printf("a 的值: %d
", a);
}
return 0;
}
嵌套 for 循环
for (initialization; condition; increment/decrement)
{
statement(s);
for (initialization; condition; increment/decrement)
{
statement(s);
... ... ...
}
... ... ...
}
while 循环
#include <stdio.h>
int main ()
{
/* 局部变量定义 */
int a = 10;
/* while 循环执行 */
while( a < 20 )
{
printf("a 的值: %d
", a);
a++;
}
return 0;
}
嵌套 while 循环
while (condition1)
{
statement(s);
while (condition2)
{
statement(s);
... ... ...
}
... ... ...
}
do/while 循环
#include <stdio.h>
int main ()
{
/* 局部变量定义 */
int a = 10;
/* do 循环执行 */
do
{
printf("a 的值: %d
", a);
a = a + 1;
}while( a < 20 );
return 0;
}
嵌套 do/while 循环
do
{
statement(s);
do
{
statement(s);
... ... ...
}while (condition2);
... ... ...
}while (condition1);
循环控制语句
- break
- continue
- goto
相关阅读: