我的编程空间,编程开发者的网络收藏夹
学习永远不晚

C语言示例讲解ifelse语句的用法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

C语言示例讲解ifelse语句的用法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

C#解决多IfElse判断语句和Switch语句问题的方法分享

这篇文章主要为大家介绍C#如何使用设计模式中的策略模式和委托来解决多个IfElse判断语句和Switch语句,这种替换方式在其他语言也一样可以做到,感兴趣的可以了解一下
2022-12-08

C语言单链表的图文示例讲解

单链表是链表的其中一种基本结构。一个最简单的结点结构如图所示,它是构成单链表的基本结点结构。在结点中数据域用来存储数据元素,指针域用于指向下一个具有相同结构的结点。 因为只有一个指针结点,称为单链表
2023-02-14

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录