C语言示例讲解ifelse语句的用法
1、前言
(1)C语言是结构化的程序设计语言。C语言的三种基本程序结构分别是:
- 顺序结构:按照程序顺序执行
- 选择结构:根据判断结果选择分支方向
- 循环结构:指有一个循环体,可以根据判断条件决定循环多少次
(2)分支语句(选择语句)和循环语句
(3)什么是语句?
C语言中由一个分号(;)隔开的就是一条语句。
2、if语句的语法结构
大致分为三种:
if(表达式)
语句;
if(表达式)
语句1;
else
语句2;
//多分支
if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3;
3、关于if else语句的示例
示例一:了解if else结构
#include <stdio.h>
int main()
{
int age = 10;
if (age >= 18)
printf("成年\n");
return 0;
}
运行该程序,将不会有打印结果;如果在此基础上加上
else
printf("未成年\n");
则运行结果为:
未成年
示例二:if或else默认只执行它下面的一句
将示例一中的年龄10改为20,再在else的语句下加上一句,查看运行结果。
#include <stdio.h>
int main()
{
int age = 20;
if (age >= 18)
printf("成年\n");
else
printf("未成年\n");
printf("不能去网吧\n");
return 0;
}
运行结果:
成年
不能去网吧
显然这个结果是不合理的,我们想要的是如果是“未成年”,才要打印“不能去网吧”,但是输入的年龄是20,显示“成年”就可以了,它还是显示了“不能去网吧”。这就证明if/else默认的是只执行它下面的一条语句。在我敲这段代码的时候,实际上这个编译器它已经很智能了,能体现出if/else默认的是只执行它下面的一条语句这个性质的一个表现就是:else下的第二条语句它是自动和else对齐的,为了查看程序是否能只打印“成年”,本次代码特地手动给else下的第二条printf语句之前敲了tab键。
那么怎样才能让程序实现我们想要的功能呢?
将else里面要执行的两条语句给它用大括号括起来,一个“{}”就是一个代码块,就是一个逻辑。
{
语句列表;
}
代码修正如下:
#include <stdio.h>
int main()
{
int age = 20;
if (age >= 18)
{
printf("成年\n");
}
else
{
printf("未成年\n");
printf("不能去网吧\n");
}
return 0;
}
示例三:if else的多分支情况
错误示例:
int main()
{
int age = 60;
if (age < 18)
printf("少年\n");
else if (18 <= age < 26)
printf("青年\n");
return 0;
}
运行该程序以后,会打印“青年”。为什么会出现这样的结果呢?
因此虽然60并不在18到26之间,也会打印“青年”。
正确写法:
int main()
{
int age = 60;
if (age < 18)
printf("少年\n");
else if (age >= 18 && age < 26)
printf("青年\n");
else if (age >= 26 && age < 40)
printf("壮年\n");
else if (age >= 40 && age < 60)
printf("中老年\n");
else
printf("老年\n");
return 0;
}
运行结果为:老年
示例四:悬空else
int main()
{
int a = 0;
int b = 2;
if (a == 1)
if (b == 2)
printf("hi\n");
else
printf("hello\n");
return 0;
}
运行该代码之后,打印窗口无结果。为什么呢?
来看一下如果我不手动删除tab间隔,编译器是怎么识别这段代码的。(我再给它加上{}使得程序的可读性更高一些)
int main()
{
int a = 0;
int b = 2;
if (a == 1)
{
if (b == 2)
{
printf("hi\n");
}
else
{
printf("hello\n");
}
}
return 0;
}
可以看到,else与离他最近的那个if匹配了,因为a的值是0,所以就不会进入第一个if,自然也就不会有打印结果了。所以说代码的分隔很重要,加上{}将代码分隔开可以使得程序的可读性提高。
4、if else 书写形式的对比
代码一以及代码二实际上实现的功能是一样的。下面利用一段代码来解释一下为什么说代码一和代码二实际上是一样的。
int test()
{
if (1)
return 0;
printf("haha\n");
return 1;
}
int main()
{
test();
return 0;
}
运行该程序的时候,发现什么都不会打印。摁下fn+f10调试代码,可以看到执行完test中的return 0就直接跳过了printf(“haha\n”);return 1;这两句。
修改代码如下:
int test()
{
if (0)
return 0;
return 1;
}
int main()
{
test();
return 0;
}
可以看到代码走到if (0)后,再走就走到return 1了。
代码三与代码四也是一样的,为什么把num == 5 写为 5 == num 呢?为了避免出现一下情况
int main()
{
int num = 1;
if (num = 5)
{
printf("hello\n");
}
}
将 == 写成了 =,就变成了将5赋值给num,此时判断条件为真,就不是判断num是否是5了,程序最终会打印hello。但是在代码四里面如果将5 == num 写为 5 = num程序就报错了。
5、例子
输出1-100之间的奇数
int main()
{
int i;
for(i = 0; i < 100; i++)
if (i % 2 == 1)
{
printf("%d\t", i);
}
else
{
printf("");
}
return 0;
}
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99
到此这篇关于C语言示例讲解if else语句的用法的文章就介绍到这了,更多相关C语言if else内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341