文章目录
C语言支持最基本的三种程序运行结构:顺序结构、选择结构、循环结构。
顺序结构:程序按顺序执行,不发生跳转。
选择结构:依据条件,有选择的执行相应功能。
循环结构:依据条件,循环多次执行某段代码。
选择结构
if
int main()
{
int a = 0;
int b = 3;
if (a > b)
printf("a > b");
if (a < b)
printf("a < b");
if (a == b)
printf("a == b");
putchar('\n');
return 0;
}
if else
int main()
{
int a = 0;
int b = 3;
if (a > b)
printf("a > b");
else {
if (a < b)
printf("a < b");
else
printf("a == b");
}
putchar('\n');
return 0;
}
if else if else if …else
int main()
{
int a = 0;
int b = 3;
if (a > b)
printf("a > b");
else if (a < b)
printf("a < b");
else
printf("a = b");
putchar('\n');
return 0;
}
三目运算符 ? :
int main()
{
int a = 0;
int b = 3;
printf(a > b ? "a>b": (a==b?"a==b":"a<b"));
putchar('\n');
return 0;
}
多重选择 switch和break
有时程序需要在多个选项中进行选择,可以使用switch语句。
switch(expression){
case label1:
statement1;
break;
case label2:
statement2;
break;
default:
}
程序根据expression的值跳转至相应的case标签处,然后执行剩下的所有语句,除非遇到break跳出switch。如果没有case标签与expression 的值匹配,控制则转至标有default的语句。 expression和case标签都必须是整数值(包括char类型),标签必须是常量或完全由常量组成的表达式。
#include <stdio.h>
int main()
{
char c;
c = getchar();
switch (c) //参数只能是整型变量
{
case '1':
printf("OK\n");
break;//switch遇到break就中断了
case '2':
printf("not OK\n");
break;
default:
printf("are you ok?\n");
}
return 0;
}
循环结构
while
while循环是一种入口条件循环,即在执行循环之前就决定了是否执行循环。
某些while循环的简写形式:
while(scanf("%d", &num)); //跳过整数输入
while(getchar() != '\n'); //跳出输入行的其余部分
do…while
do…while 循环是出口条件循环,在循环的每次迭代之后检查测试条件,这保证了至少执行循环体中的内容一次。
for
for(initialize; test; update)
statement
for语句使用3个表达式控制循环过程,分别用分号隔开。initialize表达式在循环开始之前执行且只执行一次,然后对test表达式求值,如果表达式为真(或非零),执行循环一次。然后对update表达式求值,并再次检查test表达式。
#include <stdio.h>
int main()
{
//打印乘法口诀表
for (int i=1, j=1; i < 10; i++) {
for (j = 1; j <= i; j++) {
printf("%d×%d=%2d ", j, i, j*i);
}
putchar('\n');
}
return 0;
}
跳转语句
break
在switch语句和循环语句中都可以使用break语句:
1 在switch条件语句中,终止某个case并跳出switch结构。
2 在循环语句中,中止包含它的最近的循环,执行后面的代码。
continue
立即跳过本次循环剩余部分并执行下一次循环。
goto
goto是无条件跳转语句。
label: statement; // label 是一个标记
go label; // 跳转到label标记的位置开始执行
int main(void)
{
// 无限打印字符串,除非手动关闭
end: printf("think you!\n"); // end 标记了一个语句
goto end; // 跳转到end标记的语句去执行
return 0;
}