C语⾔是结构化的程序设计语⾔,这⾥的结构指的是顺序结构、选择结构、循环结构。我们可以使⽤ if 、 switch 实现分⽀结构,使⽤ for 、 while 、 do while 实现循环结构。
if语句
语法形式:
if ( 表达式 )
语句
表达式成立(为真),则语句执行,表达式不成立(为假),则语句不执行。
在C语言中,0为假,非0表示真,也就是表达式的结果如果是0,则语句不执⾏,表达式的结果如果是 不是0,则语句执行。
else语句
if ( 表达式 )
语句1
else
语句2
例子:输⼊⼀个年龄,>= 18岁就输出:成年,否则就输出:未成年
#include <stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if (age >= 18)
printf("成年\n");
else
printf("未成年\n");
return 0;
}
switch语句
除了
if
语句外,C语言还提供了
switch
语句来实现分支结构。
switch
语句是⼀种特殊形式的
if...else
结构,用于判断条件有多个结果的情况。它把多重
的
else if
改成更易用、可读性更好的形式。
switch (expression)
{
case value1: statement
case value2: statement
default: statement
}
上⾯代码中,根据表达式 expression 不同的值,执行相应的 case 分支
。如果找不到对应的值,
就执行
default
分支。
注意:
switch
后的
expression
必须是整型表达式
case
后的值,必须是整形常量表达式
例子:输⼊任意⼀个整数值,计算除3之后的余数
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
switch (n % 3)
{
case 0:
printf("整除,余数为0\n");
break;
case 1:
printf("余数是1\n");
break;
case 2:
printf("余数是2\n");
break;
}
return 0;
}
while循环
while(表达式)
语句;
while和if语句很像,举个例子:在屏幕上打印1~10的值
#include <stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
printf("%d ", i);
i = i + 1;
}
return 0;
}
for循环
for(表达式1; 表达式2; 表达式3)
语句
表达式1 用于循环变量的初始化
表达式2 用于循环结束条件的判断
表达式3 用于循环变量的调整
例如:在屏幕上打印1~10的值
#include <stdio.h>
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
printf("%d ", i);
}
return 0;
}
打印出来的结果是:
for语句比while语句更方便,从他们的起始条件、判断条件和变量的调整的位置能看出来,for
循环是更密集的。
do-while循环
do
语句;
while(表达式);
while
和
for
这两种循环都是先判断,条件如果满足就进入循环,执行循环语句,如果不满足就跳
出循环。
而
do while
循环则是先直接进入循环体,执行循环语句,然后再执行
while
后的判断表达式,表
达式为真,就会进行下⼀次,表达式为假,则不再继续循环。
例如:
在屏幕上打印1~10的值
#include <stdio.h>
int main()
{
int i = 1;
do
{
printf("%d ", i);
i = i + 1;
}while(i<=10);
return 0;
}
嵌套
以上每个语句都是可以嵌套的,举个例子:找出100~200之间的素数,并打印在屏幕上。
#include <stdio.h>
int main()
{
int i = 0;
//循环产⽣100~200的数字
for (i = 100; i <= 200; i++)
{
//判断i是否为素数
//循环产⽣2~i-1之间的数字
int j = 0;
int flag = 1;//假设i是素数
for (j = 2; j < i; j++)
{
if (i % j == 0)
{
flag = 0;
break;
}
}
if (flag == 1)
printf("%d ", i);
}
return 0;
}
在上面这个例子里,if语句嵌套在for循坏语句里了。