C语言中有三大结构,分别是顺序结构、选择结构和循环结构(分支结构)。
判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的)。
C 语言把任何非零和非空的值假定为 true,把零或 null 假定为 false。
if 语句:一个 if 语句 由一个布尔表达式后跟一个或多个语句组成。
基本语法:
if(boolean_expression)
{
/* 如果布尔表达式为真将执行的语句 */
}
示例如下:
#include
int main() {
/* 局部变量定义 */
int a = 10;
/* 使用 if 语句检查布尔条件 */
if (a < 20) {
/* 如果条件为真,则输出下面的语句 */
printf("a 小于 20\n");
}
printf("a 的值是 %d\n", a);
return 0;
}
if…else 语句:一个 if 语句 后可跟一个可选的 else 语句,else 语句在布尔表达式为假时执行。
基本语法:
if(boolean_expression)
{
/* 如果布尔表达式为真将执行的语句 */
}
else
{
/* 如果布尔表达式为假将执行的语句 */
}
示例如下:
#include
int main() {
/* 局部变量定义 */
int a = 100;
/* 检查布尔条件 */
if (a < 20) {
/* 如果条件为真,则输出下面的语句 */
printf("a 小于 20\n");
} else {
/* 如果条件为假,则输出下面的语句 */
printf("a 大于 20\n");
}
printf("a 的值是 %d\n", a);
return 0;
}
嵌套 if 语句:你可以在一个 if 或 else if 语句内使用另一个 if 或 else if 语句。
基本语法:
if( boolean_expression 1)
{
/* 当布尔表达式 1 为真时执行 */
if(boolean_expression 2)
{
/* 当布尔表达式 2 为真时执行 */
}
}
示例如下:
#include
int main() {
/* 局部变量定义 */
int a = 100;
int b = 200;
/* 检查布尔条件 */
if (a == 100) {
/* 如果条件为真,则检查下面的条件 */
if (b == 200) {
/* 如果条件为真,则输出下面的语句 */
printf("a 的值是 100,且 b 的值是 200\n");
}
}
printf("a 的准确值是 %d\n", a);
printf("b 的准确值是 %d\n", b);
return 0;
}
switch 语句:一个 switch 语句允许测试一个变量等于多个值时的情况。每个值称为一个 case,且被测试的变量会对每个 switch case 进行检查。
基本语法:
switch(expression){
case constant-expression :
statement(s);
break; /* 可选的 */
case constant-expression :
statement(s);
break; /* 可选的 */
/* 您可以有任意数量的 case 语句 */
default : /* 可选的 */
statement(s);
}
注意:
示例如下:
#include
int main() {
/* 局部变量定义 */
char grade = 'B';
switch (grade) {
case 'A' :
printf("很棒!\n");
break;
case 'B' :
case 'C' :
printf("做得好\n");
break;
case 'D' :
printf("您通过了\n");
break;
case 'F' :
printf("最好再试一下\n");
break;
default :
printf("无效的成绩\n");
}
printf("您的成绩是 %c\n", grade);
return 0;
}
嵌套 switch 语句:可以在一个 switch 语句内使用另一个 switch 语句。即使内部和外部 switch 的 case 常量包含共同的值,也没有矛盾。
基本语法:
switch(ch1) {
case 'A':
printf("这个 A 是外部 switch 的一部分" );
switch(ch2) {
case 'A':
printf("这个 A 是内部 switch 的一部分" );
break;
case 'B': /* 内部 B case 代码 */
}
break;
case 'B': /* 外部 B case 代码 */
}
示例如下:
#include
int main() {
/* 局部变量定义 */
int a = 100;
int b = 200;
switch (a) {
case 100:
printf("这是外部 switch 的一部分\n");
switch (b) {
case 200:
printf("这是内部 switch 的一部分\n");
}
}
printf("a 的准确值是 %d\n", a);
printf("b 的准确值是 %d\n", b);
return 0;
}
基本语法:Exp1 ? Exp2 : Exp3;
示例如下:
#include
int main() {
int num;
printf("输入一个数字 : ");
scanf("%d", &num);
(num % 2 == 0) ? printf("偶数") : printf("奇数");
}
for 循环:多次执行一个语句序列,简化管理循环变量的代码。
基本语法:
for ( init; condition; increment )
{
statement(s);
}
示例如下:
#include
int main() {
/* for 循环执行 */
for (int a = 10; a < 20; a = a + 1) {
printf("a 的值: %d\n", a);
}
return 0;
}
while 循环:当给定条件为真时,重复语句或语句组。它会在执行循环主体之前测试条件。
基本语法:
while(condition)
{
statement(s);
}
condition 可以是任意的表达式,当为任意非零值时都为 true。
示例如下:
#include
int main() {
/* 局部变量定义 */
int a = 10;
/* while 循环执行 */
while (a < 20) {
printf("a 的值: %d\n", a);
a++;
}
return 0;
}
do…while 循环:do…while 循环是在循环的尾部检查它的条件。
基本语法:
do
{
statement(s);
}while( condition );
示例如下:
#include
int main() {
/* 局部变量定义 */
int a = 10;
/* do 循环执行,在条件被测试之前至少执行一次 */
do {
printf("a 的值: %d\n", a);
a = a + 1;
} while (a < 20);
return 0;
}
do…while 循环与 while 循环类似,两者的区别在于:
嵌套循环允许我们可以在 while、for 或 do…while 循环内使用一个或多个循环。
示例如下:
#include
int main()
{
int i=1,j;
while (i <= 5)
{
j=1;
while (j <= i )
{
printf("%d ",j);
j++;
}
printf("\n");
i++;
}
return 0;
}
循环控制语句改变你代码的执行顺序。通过它你可以实现代码的跳转。
break 语句:终止循环或 switch 语句。
break 语句有下面两种用法:
如果您使用的是嵌套循环(即一个循环内嵌套另一个循环),break 语句会停止执行最内层的循环,然后开始执行该块之后的下一行代码。
示例如下:
#include
int main() {
/* 局部变量定义 */
int a = 10;
/* while 循环执行 */
while (a < 20) {
printf("a 的值: %d\n", a);
a++;
if (a > 15) {
/* 使用 break 语句终止循环 */
break;
}
}
return 0;
}
continue语句:告诉一个循环体立刻停止本次循环迭代(跳过当前循环),重新开始下次循环迭代。
示例如下:
#include
int main() {
/* 局部变量定义 */
int a = 10;
/* do 循环执行 */
do {
if (a == 15) {
/* 跳过迭代 */
a = a + 1;
continue;
}
printf("a 的值: %d\n", a);
a++;
} while (a < 20);
return 0;
}
goto 语句:允许将控制无条件转移到同一函数内的被标记的语句。但是不建议在程序中使用 goto 语句。
注意:
在任何编程语言中,都不建议使用 goto 语句。因为它使得程序的控制流难以跟踪,使程序难以理解和难以修改。任何使用 goto 语句的程序可以改写成不需要使用 goto 语句的写法。
基本语法:
goto label;
...;
...;
label: statement;
label 可以是任何除 C 关键字以外的纯文本,它可以设置在 C 程序中 goto 语句的前面或者后面。
示例如下:
#include
int main() {
/* 局部变量定义 */
int a = 10;
/* do 循环执行 */
LOOP:
do {
if (a == 15) {
/* 跳过迭代 */
a = a + 1;
goto LOOP;
}
printf("a 的值: %d\n", a);
a++;
} while (a < 20);
return 0;
}
– 求知若饥,虚心若愚。