C语⾔是结构化的程序设计语⾔,这⾥的结构指的是顺序结构、选择结构、循环结构。
我们可以使⽤ if 、 switch 实现分⽀结构,使⽤ for 、 while 、 do while 实现循环结构。
1·if语句
if语句的语法形式如下:
if ( 表达式 )
语句
表达式成⽴(为真),则语句执行,表达式不成立(为假),则语句不执行。
在C语⾔中,0为假,非0表示真,也就是表达式的结果如果是0,则语句不执行,表达式的结果如果不是0,则语句执行。
例子:输⼊⼀个整数,判断是否为奇数
#include <stdio.h>
int main()
{
int num = 0;
scanf("%d", &num);
if(num % 2 == 1)
printf("%d 是奇数\n", num);
return 0;
}
2·else语句
如果⼀个数不是奇数,那就是偶数了,如果任意⼀个整数,我们要清楚的判断是奇数还是偶数怎么表示呢?
这⾥就需要 if...else... 语句了,语法形式如下:
if ( 表达式 )
语句1
else 语句2
3·if与else的嵌套
在 if else 语句中, else 可以与另⼀个 if 语句连⽤,构成多重判断。
例子:要求输⼊⼀个整数,判断输⼊的整数是0,还是正数或者负数
#include <stdio.h>
int main()
{
int num = 0;
scanf("%d", &num);
if(num == 0)
printf("输⼊的数字是0\n");
else if(num > 0) //这⾥的if 相当于嵌套在els语句中,形成了嵌套结构
printf("输⼊的数字是正数\n");
else
printf("输⼊的数字是负数\n");
return 0;
}
上面的代码中橙色背景的代码也是嵌套在 if 语句中的,构成了嵌套的 if 语句。
以上就是嵌套if语句的语法,有了嵌套if语句,就可以完成更多复杂逻辑的判断。
注意:如果有多个 if 和 else ,可以记住这样⼀条规则, else 总是跟最接近的 if 匹配。
例子:
#include <stdio.h>
int main()
{
int a = 0;
int b = 2;
if(a == 1)
{
if(b == 2)
printf("我爱C语言\n");
else
printf("我爱作者\n");
}
return 0;
}
在这个程序中 else 是和第⼆个 if进行匹配的,这样后边的 if...else 语句是嵌套在第⼀个 if 语句中的,如果第⼀个 if 语句就不成立,嵌套 if 和 else 就没机会执行了,最终啥都不打印。
总之记住,else 总是跟最接近的 if 匹配。
4·while循环
语法形式: while(表达式)
语句;
例子:在屏幕上打印1~10的数字
#include <stdio.h>
int main()
{
int i = 1;
while(i<=10)
{
printf("%d ", i);
i = i+1;
}
return 0;
}
5·for循环
语法形式如下:
for(表达式1;表达式2;表达式3)
语句;
其中:表达式1用于循环变量的初始化
表达式2用于循环结束条件的判断
表达式3用于循环变量的调整
6·do-while循环
语法形式: do 语句;
while(表达式);
以上三种循环,while 和 for 这两种循环都是先判断,条件如果满足就进入循环,执行循环语句,如果不满足就跳出循;而 do while 循环则是先直接进⼊循环体,执行循环语句,然后再执行 while 后的判断表达式,表达式为真,就会进行下⼀次,表达式为假,则不再继续循环。
7. break和continue语句
在循环执行的过程中,如果某些状况发生的时候,需要提前终止循环,这是非常常见的现象。C语言中提供了 break 和 continue 两个关键字,就是应该到循环中的。
break 的作用是用于永久的终止循环,只要 break 被执行,直接就会跳出循环,继续往后执
行。
continue 的作用是跳过本次循环 continue 后边的代码,在 for 循环和 while 循环中有所
差异的。
break
#include <stdio.h>
int main()
{
int i = 1;
for(i=1; i<=10; i++)
{
if(i == 5)
break;
printf("%d ", i);
}
return 0;
}
代码运行结果:1 2 3 4
由此可见,break 的作用是永久的终止循环,未来我们在某个条件发生的时候,不想再继续循环的时候,就可以使用 break 来完成。
continue
#include <stdio.h>
int main()
{
int i = 1;
for(i=1; i<=10; i++)
{
if(i == 5)
continue;//这⾥continue跳过了后边的打印,来到了i++的调整部分
printf("%d ", i);
}
return 0;
}
代码运行结果:1 2 3 4 5 6 7 8 9 10
由此可见,在 for 循环中 continue 的作⽤是跳过本次循环中 continue 后的代码,直接去到循环的调整部分。未来当某个条件发生的时候,本次循环无需再执执行后续某些操作的时候,就可以使用
continue 来实现。
8. 循环的嵌套
前面学习了三种循环 while , do while , for ,这三种循环往往会嵌套在⼀起才能更好的解决
问题,就是我们所说的:循环嵌套。
例子:题目有多组输入数据,每一行输入三个a,b,c(0 < a, b, c < 1000),作为三角形的三个边,用空格分隔。针对每组输入数据,输出占一行,如果能构成三角形,等边三角形则输出“Equilateral triangle!”,等腰三角形则输出“Isosceles triangle!”,其余的三角形则输出“Ordinary triangle!”,反之输出“Not a triangle!”。
#include <stdio.h>
int main()
{
int a = 0;
int b = 0;
int c = 0;
while(scanf("%d %d %d",& a,& b,& c)!=EOF)
if (a == b && a == c && a == c)
{
if (a + b >= c && a + c >= b && b + c >= a)
printf("Equilateral triangle!");
else
printf("Not a triangle!");
}
else if(a == b || a == c|| b == c)
{
if (a + b >= c && a + c >= b && b + c >= a)
printf("Isosceles triangle!");
else
printf("Not a triangle!");
}
else if (a != b && a != c & a!= c)
{
if(a + b >= c && a + c >= b && b + c >= a)
printf("Ordinary triangle!");
else
printf("Not a triangle!");
}
return 0;
}
9·goto语句
C语言提供了⼀种非常特别的语法,就是 goto 语句和跳转标号, goto 语句可以实现在同一个函数
内跳转到设置好的标号处。但同时,C语言提供了一种非常特别的语法,就是 goto 语句和跳转标号, goto 语句可以实现在同一个函数内跳转到设置好的标号处。
但是 goto 语句也不是一无是处,如果想快速跳出某个语句,使用goto 就非常的方便了。
#include<stdio.h>
int main()
{
printf("我爱比特\n");
goto end;
printf("我爱作者\n");
end:
printf("跳过我爱作者的打印,直接来到这里\n");
return 0;
}
代码运行结果:
我爱比特
跳我爱作者的打印,直接来到这里
今天我的介绍到这里了,谢谢大家。