C语言中有三大结构,分别是顺序结构、选择结构和循环结构(分支结构)。
一、C 判断语句
判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的)。
C 语言把任何非零和非空的值假定为 true,把零或 null 假定为 false。
1、if语句
if 语句:一个 if 语句 由一个布尔表达式后跟一个或多个语句组成。
基本语法:
if(boolean_expression)
{/* 如果布尔表达式为真将执行的语句 */
}
示例如下:
#include <stdio.h>int main() {/* 局部变量定义 */int a = 10;/* 使用 if 语句检查布尔条件 */if (a < 20) {/* 如果条件为真,则输出下面的语句 */printf("a 小于 20\n");}printf("a 的值是 %d\n", a);return 0;
}
2、if…else 语句
if…else 语句:一个 if 语句 后可跟一个可选的 else 语句,else 语句在布尔表达式为假时执行。
基本语法:
if(boolean_expression)
{/* 如果布尔表达式为真将执行的语句 */
}
else
{/* 如果布尔表达式为假将执行的语句 */
}
示例如下:
#include <stdio.h>int main() {/* 局部变量定义 */int a = 100;/* 检查布尔条件 */if (a < 20) {/* 如果条件为真,则输出下面的语句 */printf("a 小于 20\n");} else {/* 如果条件为假,则输出下面的语句 */printf("a 大于 20\n");}printf("a 的值是 %d\n", a);return 0;
}
3、嵌套 if 语句
嵌套 if 语句:你可以在一个 if 或 else if 语句内使用另一个 if 或 else if 语句。
基本语法:
if( boolean_expression 1)
{/* 当布尔表达式 1 为真时执行 */if(boolean_expression 2){/* 当布尔表达式 2 为真时执行 */}
}
示例如下:
#include <stdio.h>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;
}
4、switch case语句
switch 语句:一个 switch 语句允许测试一个变量等于多个值时的情况。每个值称为一个 case,且被测试的变量会对每个 switch case 进行检查。
基本语法:
switch(expression){case constant-expression :statement(s);break; /* 可选的 */case constant-expression :statement(s);break; /* 可选的 *//* 您可以有任意数量的 case 语句 */default : /* 可选的 */statement(s);
}
注意:
- 1)break 关键字,专门用于跳出 switch 语句。一旦遇到 break,就不再执行 switch 中的任何语句,包括当前分支中的语句和其他分支中的语句。
-
- default 不是必须的。当没有 default 时,如果所有 case 都匹配失败,那么就什么都不执行。
示例如下:
#include <stdio.h>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;
}
5、嵌套 switch 语句
嵌套 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 <stdio.h>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;
}
6、三元运算符
基本语法:Exp1 ? Exp2 : Exp3;
- ? 表达式的值是由 Exp1 决定的。
- 如果 Exp1 为真,则计算 Exp2 的值,结果即为整个表达式的值。
- 如果 Exp1 为假,则计算 Exp3 的值,结果即为整个表达式的值。
示例如下:
#include<stdio.h>int main() {int num;printf("输入一个数字 : ");scanf("%d", &num);(num % 2 == 0) ? printf("偶数") : printf("奇数");
}
二、C 循环语句
1、for 循环
for 循环:多次执行一个语句序列,简化管理循环变量的代码。
基本语法:
for ( init; condition; increment )
{statement(s);
}
示例如下:
#include <stdio.h>int main() {/* for 循环执行 */for (int a = 10; a < 20; a = a + 1) {printf("a 的值: %d\n", a);}return 0;
}
2、while 循环
while 循环:当给定条件为真时,重复语句或语句组。它会在执行循环主体之前测试条件。
基本语法:
while(condition)
{statement(s);
}
condition 可以是任意的表达式,当为任意非零值时都为 true。
- 当条件为 true 时执行循环。
- 当条件为 false 时,退出循环,程序流将继续执行紧接着循环的下一条语句。
示例如下:
#include <stdio.h>int main() {/* 局部变量定义 */int a = 10;/* while 循环执行 */while (a < 20) {printf("a 的值: %d\n", a);a++;}return 0;
}
3、do…while 循环
do…while 循环:do…while 循环是在循环的尾部检查它的条件。
基本语法:
do
{statement(s);}while( condition );
示例如下:
#include <stdio.h>int main() {/* 局部变量定义 */int a = 10;/* do 循环执行,在条件被测试之前至少执行一次 */do {printf("a 的值: %d\n", a);a = a + 1;} while (a < 20);return 0;
}
do…while 循环与 while 循环类似,两者的区别在于:
- do…while 循环会确保至少执行一次循环体。
- while 循环可能一次都不会执行循环体。
4、嵌套循环
嵌套循环允许我们可以在 while、for 或 do…while 循环内使用一个或多个循环。
示例如下:
#include <stdio.h>int main()
{int i=1,j;while (i <= 5){j=1;while (j <= i ){printf("%d ",j);j++;}printf("\n");i++;}return 0;
}
5、循环控制语句
循环控制语句改变你代码的执行顺序。通过它你可以实现代码的跳转。
5.1 break 语句
break 语句:终止循环或 switch 语句。
break 语句有下面两种用法:
- 当 break 语句出现在一个循环内时,循环会立即终止,且程序流将继续执行紧接着循环的下一条语句。
- 它可用于终止 switch 语句中的一个 case。
如果您使用的是嵌套循环(即一个循环内嵌套另一个循环),break 语句会停止执行最内层的循环,然后开始执行该块之后的下一行代码。
示例如下:
#include <stdio.h>int main() {/* 局部变量定义 */int a = 10;/* while 循环执行 */while (a < 20) {printf("a 的值: %d\n", a);a++;if (a > 15) {/* 使用 break 语句终止循环 */break;}}return 0;
}
5.2 continue 语句
continue语句:告诉一个循环体立刻停止本次循环迭代(跳过当前循环),重新开始下次循环迭代。
- 对于 for 循环,continue 语句执行后自增语句仍然会执行。
- 对于 while 和 do…while 循环,continue 语句会重新执行条件判断语句。
示例如下:
#include <stdio.h>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;
}
5.3 goto 语句
goto 语句:允许将控制无条件转移到同一函数内的被标记的语句。但是不建议在程序中使用 goto 语句。
注意:
在任何编程语言中,都不建议使用 goto 语句。因为它使得程序的控制流难以跟踪,使程序难以理解和难以修改。任何使用 goto 语句的程序可以改写成不需要使用 goto 语句的写法。
基本语法:
goto label;
...;
...;
label: statement;
label 可以是任何除 C 关键字以外的纯文本,它可以设置在 C 程序中 goto 语句的前面或者后面。
示例如下:
#include <stdio.h>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;
}
– 求知若饥,虚心若愚。