对C语言控制语句的再认识(万字超详细讲解)(一)

简介: 对C语言控制语句的再认识(万字超详细讲解)

前言

从本篇开始,月亮将带着大家一起在初识C语言的基础之上,对C语言作出进一步的认识。只有一步一个脚印,我们才能掌握的更扎实,收获的更多!好的,今天我们就开始再认识一下控制语句吧!!!

补充

在我们开始之前我们应该知道下面这些内容,这些内容会有助于我们对语句的理解,我们可以看一看!!

C语句可分为以下五类:

1. 表达式语句

2. 函数调用语句

3. 控制语句

4. 复合语句

5. 空语句

本篇后面介绍的是控制语句。

控制语句用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成,C语言有九种控制语句。

可分成以下三类:

1. 条件判断语句也叫分支语句:if语句、switch语句;
2. 循环执行语句:do while语句、while语句、for语句;
3. 转向语句:break语句、goto语句、continue语句、return语句。

通俗的讲,前两种也就是我们所说的分支语句循环语句。

分支语句

if语句

语法介绍

那if语句的语法结构是怎么样的呢?

语法结构如下:

1. 语法结构:
2. if(表达式)
3. 语句;
4. if(表达式)
5. 语句1;
6. else
7. 语句2;
8. //多分支
9. if(表达式1)
10. 语句1;
11. else if(表达式2)
12. 语句2;
13. else
14. 语句3;

为了更清晰的认识,我们来进行一些演示的程序(从简单到复杂):

1. #include <stdio.h>
2. 
3. int main()
4. {
5.  int age = 0;
6.  scanf("%d", &age);
7.  if (age < 18)
8.  {
9.    printf("未成年\n");
10.   }
11. }

这时我们选择输入一个5,结果如下:

是的,我们输入的5满足了if的条件,所以进入了if语句中打印了未成年的答案!

但是这个程序有一点点小问题:当我们输入大于等于18的数字时,程序没有显示任何东西,这表明我们的程序还不够完善,所以我们做了进一步改进。

那我们再来看一个:

1. #include <stdio.h>
2. int main()
3. {
4.  int age = 0;
5.  scanf("%d", &age);
6.  if (age < 18)
7.  {
8.    printf("未成年\n");
9.  }
10.   else
11.   {
12.     printf("成年\n");
13.   }
14. }

这是我们改进后的程序,我们运行一下:

我们可以清楚的看到,完善后的代码可以打印出满足相应条件的内容!!!

那如果我们想添加更多的内容怎么办呢?别急,先看下面这个程序

1. #include <stdio.h>
2. int main()
3. {
4.  int age = 0;
5.  scanf("%d", &age);
6.  if (age < 18)
7.  {
8.    printf("少年\n");
9.  }
10.   else if (age >= 18 && age < 30)
11.   {
12.     printf("青年\n");
13.   }
14.   else if (age >= 30 && age < 50)
15.   {
16. 
17.       printf("中年\n");
18.   }
19.   else if (age >= 50 && age < 80)
20.   {
21.     printf("老年\n");
22.   }
23.   else
24.   {
25.     printf("老寿星\n");
26.   }
27. }

这就用到了更多的elseif语句来提供我们所需要的条件。

注意:

如果表达式的结果为真,则语句执行。

那么在C语言中如何表示真假?

0表示假,非0表示真。

如果条件成立,要执行多条语句,怎应该使用代码块?

1. #include <stdio.h>
2. int main()
3. {
4. if(表达式)
5. {
6. 语句列表1;
7. }
8. else
9. {
10. 语句列表2;
11. }
12. return 0;
13. }

这里的一对 { } 就是一个代码块。

按照这个格式书写就可以解决这个问题啦!

悬空else

很多小伙伴可能木听说过这个概念,那么我们就用一个程序来说明吧!

1. #include <stdio.h>
2. int main()
3. {
4.  int a = 0;
5.  int b = 2;
6.  if (a == 1)
7.    if (b == 2)
8.      printf("hehe\n");
9.    else
10.       printf("haha\n");
11.   return 0;
12. }

你们猜一猜这个程序运行的结果是什么?是打印hehe嘛?答案是不是,它什么都没有打印。

那么问题的原因在哪里呢?

原因在这里:else的匹配:else是和它离的最近的if匹配的。

当我们运行这个程序的时候,a=0没有满足对应的if条件,而程序中也没有a=0是可以执行的语句,所以什么都没有打印,而代码中后面的else是和离它最近的if相匹配的,所以并没有执行!看到这里想必大家已经理解悬空else的意思了,为了避免这种情况的出现,需要我们养成合理的代码风格。我们看看更改后的程序:

1. #include <stdio.h>
2. int main()
3. {
4. int a = 0;
5. int b = 2;
6. if(a == 1)
7. {
8. if(b == 2)
9. {
10. printf("hehe\n");
11. }
12. }
13. else
14. {
15. printf("haha\n");
16. }
17. return 0;
18. }

运行结果:

在这里我们可以看到对{}的使用,对于良好的代码习惯是多么的重要。所以我们要学习这种形式!

if书写形式的对比

1. if (condition) {
2.  return x;
3. }
4. return y;
5. //代码2
6. if (condition)
7. {
8.  return x;
9. }
10. else
11. {
12.     return y;
13. }
14. //代码3
15. int num = 1;
16. if (num == 5)
17. {
18.   printf("hehe\n");
19. }
20. //代码4
21. int num = 1;
22. if (5 == num)
23. {
24.   printf("hehe\n");
25. }

代码2和代码4更好,逻辑更加清晰,不容易出错。

那就有人会问了,3和4有什么区别呢?3和4的效果在这里是一样的,但是实际意义是不一样的,3在这里的条件是判断5是不是等于num,而4判断的是num是不是等于5。有时候我们可能会漏写一个等号,那么就变成了赋值语句啦!!!如果是代码3所写的那样,编译器可能不会报错,这样你就发现不了错误了,而4的写法有效的避免了这种错误,并不会改变num的数值!!!

小练习

1. 判断一个数是否为奇数

(奇数不能被2整除)

1. #include<stdio.h>
2. int main()
3. {
4.  //判断一个数是否为奇数
5.  int num = 0;
6.  scanf("%d", &num);
7.  //判断
8. 
9.  if (num % 2 == 1)
10.     printf("奇数\n");
11.   else
12.     printf("no\n");
13. 
14.   return 0;
15. }

2. 输出1-100之间的奇数

(借助循环和判断奇数的方法)

1. #include<stdio.h>
2. //输出1-100之间的奇数
3. int main()
4. {
5.  int i = 1;
6.  while (i <= 100)
7.  {
8.    if (i % 2 == 1)
9.      printf("%d ", i);
10.     i++;
11.   }
12. 
13.   return 0;
14. }



相关文章
|
6月前
|
程序员 C语言
C语言控制语句详解
C语言控制语句详解
102 0
|
6月前
|
C语言
C语言中的控制语句(1)
C语言中的控制语句(1)
|
C语言
C语言控制语句
C语言控制语句
59 0
|
4月前
|
C语言
C语言7 控制语句
C语言7 控制语句
23 1
|
存储 C语言
C语言入门(2)——数据类型、运算符、类型转换、控制语句
char short int long flout(默认保存小数点后6位,并且可以四舍五入) double 输出int类型的值%d 输出字符用%c 输出long用%ld 输出float用%f 输出double用%lf
137 0
|
6月前
|
C语言
C语言控制语句(2)
C语言控制语句(2)
|
6月前
|
C语言
在C语言中,for语句是一种常用的循环结构控制语句
在C语言中,for语句是一种常用的循环结构控制语句
72 0
|
C语言
C语言—控制语句与函数
本文介绍了C语言中的控制语句和函数。
66 0
|
C语言
认识C语言 Day_5 >控制语句
认识C语言 Day_5 >控制语句
|
C语言
C语言之控制语句的详解
C语言之控制语句的详解
88 0