大家好,今天我将开始分享选择语句、循环语句以及函数等相关内容的知识点以及自己对这些内容的理解。
选择语句
选择语句顾名思义就是给你多个选项让你来选嘛,然后根据你选择的不同,最终的到的结果也会有所区别。
这里我借用一下鹏哥的视频中所举的比较幽默的例子——
如果你好好学习,校招时拿一个好offer,走上人生巅峰。
如果你不学习,毕业等于失业,回家卖红薯。
上述例子就是一个选择,接下来我想让计算机把这个内容给展现出来,应该如何操作呢?
这里就要用到我们的选择语句了(if……else语句)
下面我们来编写一下代码,代码如下:
#define _CRT_SECURE_NO_WARNINGS 1//用来解决在VS编译器中对于scanf、strcpy、strlen、strcat……这些C语言提供的不安全的库函数报错的问题
#include <stdio.h>
#include<string.h>//这里在使用string相关的库函数如:strlen、strcpy、strcat...等函数时需要引用此头文件。
int main()
{
int input = 0;
printf("加入比特\n");
printf("是否好好学习?(1/0)>:");//">:"提示符这里是用来提示输入的值
scanf("%d", &input);//scanf——输入函数,需要手动输入值
if (input == 1)//if……else语句——选择语句(判断语句),"=="判断左值与右值是否相等
printf("好offer\n");
else
printf("卖红薯\n");
return 0;
}
咱们将这行代码运行起来,然后在窗口中输入1,得到结果如下:
接下来我们在窗口输入0,得到结果如下:
接下来我们做个测试,如果我输入的是其他的数值比如说3,那结果又会如何:
这里我们可以看到if……else语句它的运行逻辑是,if中的条件成立,则运行第一个命令,否则就运行第二个命令。
这里我们来解析一下if……else语句;
语句结构:
if(选择/判断的条件)
如果符合条件将执行命令……
else
如果不符合条件则执行命令……
也就是说,if……else能够判断的是只有两种结果的事情,这里我们不妨提出一个问题,如果这里有三个及三个以上的选择我可不可以用if……else……else呢?废话不多说,我们来实际操作一下吧:
代码如下:
#define _CRT_SECURE_NO_WARNINGS 1//用来解决在VS编译器中对于scanf、strcpy、strlen、strcat……这些C语言提供的不安全的库函数报错的问题
#include <stdio.h>
#include<string.h>//这里在使用string相关的库函数如:strlen、strcpy、strcat...等函数时需要引用此头文件。
int main()
{
int a = 0;
int b = 0;
int c = 0;
//比较三个数的大小
printf("请输入三个数");
scanf("%d%d%d", &a, &b, &c);
if (a > b > c)
printf("%d>%d>%d\n", a, b, c);
else(b > a > c)
printf("%d>%d>%d\n", b, a, c);
else(c > a > b)
printf("%d>%d>%d\n", c, a, b);
return 0;
}
然后我们将代码运行一下,看看结果如何:
哇!!!这问题百出啊!!!我们现在来分析一下这些问题,看能不能尝试解决;
这里有提示一个没有匹配if的非法else,是不是代表着每一个else都必须有一个if呢,又或者说一个if只能有一个else,那我们先把第18行的else给注释了再看一下:
现在提示的是在printf的前面缺少";"那是不是我们给他加上就可以了呢?
程序正常运行,我们输入1/2/3这三个数字,看一下打印结果如何:
这里我们发现它的运行结果出现问题了,那如果我们输入的是3/2/1呢?它又会怎么运行:
这里我们可以看到他这里还是运行的b>a>c,那我们再输入1/3/2试一下:
这里继续运行的b>a>c,下面测试一下3/1/2:
结果还是b>a>c,那2/1/3和2/3/1呢?我们继续测试一下:
结果还是b>a>c,这里我有一个猜想,如果我把else括号里的去掉,那输入3/2/1时,它会不会执行if的程序呢?继续测试:
由此我们可以得出结论,在进行3个数的大小比较时,像我这样使用if……else语句是有问题的,具体问题出在哪,目前我还不太清楚,所以我去查阅了相关资料——if……else比较三个数的大小、C语言中if……else语句详解、if……else在C语言中的用法、布尔值
这里我做个总结:
1.在if……else语句中,在计算机执行的过程中会优先判断if括号中的值是真是假,如果是真的,也就是括号中的条件成立,则执行
if的命令,反之则执行else的命令,这里else后面是不加任何条件的。
2.如果在if……else语句中的条件存在多个结果,可以使用if……else if……else的语句来执行对应的命令,结构如下:
if……else if……else语句:
if(判断条件1)
{
执行命令1;
}
else if(判断条件2)
{
执行命令2;
}
……
else if(判断条件n)
{
执行命令n;
}
else
{
执行命令m;
}
3.用if……else语句比较三个数的大小时,不能直接在if条件中写a>b>c,而是写a>b&&a>c这样的格式
下面我们在以这些总结重新来比较a、b、c三个数的大小,代码如下:
#define _CRT_SECURE_NO_WARNINGS 1//用来解决在VS编译器中对于scanf、strcpy、strlen、strcat……这些C语言提供的不安全的库函数报错的问题
#include <stdio.h>
#include<string.h>//这里在使用string相关的库函数如:strlen、strcpy、strcat...等函数时需要引用此头文件。
int main()
{
int a = 0;
int b = 0;
int c = 0;
//比较三个数的大小
printf("请输入三个数");
scanf("%d%d%d", &a, &b, &c);
if (a > b && a > c && b > c)
{
printf("%d>%d>%d\n", a, b, c);
printf("a>b>c");
}
else if (a > b && a > c && c > b)
{
printf("%d>%d>%d\n", a, c, b);
printf("a>c>b");
}
else if (b > a && b > c && a > c)
{
printf("%d>%d>%d\n", b, a, c);
printf("b>a>c");
}
else if (b > a && b > c && c > a)
{
printf("%d>%d>%d\n", b, c, a);
printf("b>c>a");
}
else if (c > a && c > b && a > b)
{
printf("%d>%d>%d\n", c, a, b);
printf("c>a>b");
}
else
{
printf("%d>%d>%d\n", c, b, a);
printf("c>b>a");
}
return 0;
}
然后我们运行一下,看看能不能正常运行:
不错,能正常运行,下面我们输入1/2/3,看一下结果:
正常打印,并且结果正确,下面测试一下3/2/1,运行结果如下:
正常打印,并且结果正确,下面测试1/3/2,运行结果如下:
正常打印,并且结果正确。由此可知,这次咱们的代码是能够比较a/b/c三个数的大小的。
选择语句的知识点,咱们先分享到这里,感谢各位的翻阅,如果这篇内容能够帮助各位更好的去理解并使用选择语句,那这篇的内容也就有了它的意义,后续随着学习的深入,我会继续分享在学习过程中的感受,那咱们下一篇见。