首页 > 其他分享 >C语言分支语句之if的一些用法

C语言分支语句之if的一些用法

时间:2024-07-25 21:25:05浏览次数:17  
标签:语句 main C语言 int age else printf 用法

目录

引言

C语言作为一种非常常用的编程语言,具有灵活强大的循环和分支结构。循环结构允许我们重复执行一段代码,而分支结构则允许我们根据条件选择执行不同的代码块。这两个结构在编写程序时非常有用,可以帮助我们实现不同的逻辑和控制流程。在本篇文章中,我们将详细介绍C语言中的分支语句中的if。

C语言结构

C语言是一种结构化控制语言,这里的结构即为顺序机构、选择结构、循环结构。

在C语言中,我们可以使用 ifswitch 实现分支结构,使用 forwhiledo while 实现循环结构。

1. if 语句

1.1 if

if语句的语法形式是这样的

if(表达式)
   语句

表达式成立(为真),则语句执行; 表达式不成立(为假),则语句不执行;

在C语言中,0为真,非0为假;即如果表达式的结果为0,则语句执行;若表达式结果非0,则语句不执行;

例子,输入一个整数,判断是否为奇数:
在这里插入图片描述

#include<stdio.h>
int main()
{
	int num = 5;
	if (num % 2 != 0)
	{
		printf("%d是奇数", num);
	}
	return 0;
}

输出结果
在这里插入图片描述

1.2 else

如果一个数不是奇数,那么这个数就是偶数了,那么我们如何判断这个数是奇数还是偶数呢?

这里就需要 **if…else…**的语句表示形式了,其具体形式如下:

if(表达式)
   语句1
else(表达式)
   语句2

例子,输入一个整数,判断他是否为奇数,若为奇数,怎判断为奇数,反之,则判断为偶数;

#include<stdio.h>
int main()
{
	int num = 0;
	scanf("%d", &num);
	if (num % 2 != 0)
		printf("%d是奇数", num);
	else
		printf("%d是偶数", num);
	return 0;
}

在这里插入图片描述

在这里插入图片描述
练习:输入一个年龄,如果大于等于18,则输出为成年,反之为未成年:

#include<stdio.h>
int main()
{
	int year = 0;
	printf("请输入年龄:");
	scanf("%d", &year);
	if (year >= 18)
		printf("是成年\n");
	else
		printf("是未成年\n");
	return 0;
}

在这里插入图片描述

2. 分支中包含多条语句

默认在 if 和 else 语句中默认只控制一条语句。若想要控制多条语句,则用{}将多条语句括起来。

#include<stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	int c = 0;
	printf("请输入a和b:");
	scanf("%d%d", &a, &b);
	if (a >= b)
	{
		c = a;
		a += b;
		b = c;
		printf("a=%d\nb=%d", a, b);

	}
	else
	{
		c = b;
		b += a;
		a = c;
		printf("a=%d\nb=%d", a, b);
	}
	return 0;
}

输出结果
在这里插入图片描述

3. 多重选择 else if

在现实生活中我们常有多种选择,在程序中我们也可以用 else if来拓展if else 结构来模拟着中情况。

#include<stdio.h>
int main()
{
	int age = 0;
	printf("请输入年龄:");
	scanf("%d", &age);
	if (age < 18)
	{
		printf("未成年\n");
	}
	else if (age <= 44)
	{
		printf("青年\n");
	}
	else if (age <= 59)
	{
		printf("中年\n");
	}
	else if (age <= 89)
	{
		printf("老年\n");
	}
	else
	{
		printf("老寿星\n");
	}
	return 0;
}

输出结果
在这里插入图片描述

4. 嵌套if

实际上,else ifif else的一种变式。即一个新的if语句嵌套 else语句中;

换一句话说,在if else 语句中,else 可以与另一个 if语句连用,形成多重判断;


int main()
{
	int age = 0;
	scanf("%d", &age);
	if (age < 18)
	{
		printf("少年\n");
	}
	else
	{
		if (age <= 44)
		{
			printf("⻘年\n");
		}
		else
		{
			if (age <= 59)
			{
				printf("中⽼年\n");
			}
			else
			{
				if (age <= 89)
					printf("⽼年\n");
				else
					printf("⽼寿星\n");
			}
		}
	}
	return 0;
}

在这里插入图片描述
有了着中嵌套语法,就可以完成更多复杂的逻辑判断;

5. 悬空else / else与if配对问题

如果有有许多 if 和 else,那么 else 只与最近的else配对;

猜一猜下面代码的结果是什么?

#include<stdio.h>
int main()
{
	int a = 0;
	int b = 2;
	if (a == 1)
		if (b == 2)
			printf("hehe\n");
	else
		printf("haha\n");

	return 0;
}

在这里插入图片描述
很多初学者,上来就判断a=0,不等于1,那就执行else字句,打印haha

但是当你运行代码时, 打印结果却是:啥都不输出;

为什么呢?

这就是悬空else问题,如果有多个if和else,可以记住这样一条原则,else总是跟最近的if匹配;

上面的代码的排版,让else和第一个if对齐,让我们以为else是和第一个if匹配的,当第一个if语句不成立的时候,自然想到接下来要执行else语句,打印haha,但实际else是和第二个if匹配,这样后边的if...else语句是嵌套在第一个if语句内的,如果第一个if语句不成立,那被嵌套的if和else就没机会执行了,最终啥都不打印;

上面代码相当于下面代码

int main()
{
	int a = 0;
	int b = 2;
	if (a == 1)
	{
		if (b == 2)
			printf("hehe\n");
		else
			printf("haha\n");
	}

	return 0;
}

改正后代码

int main()
{
	int a = 0;
	int b = 2;
	if (a == 1)
	{
		if (b == 2)
			printf("hehe\n");
	}
	else
	{
		printf("haha\n");
	}

	return 0;
}

在这里插入图片描述
只要适当带上大括号,代码的逻辑就会变得更加清晰,所以大家以后在写代码的时候要注意括号的使用,让代码的可读性更高!

标签:语句,main,C语言,int,age,else,printf,用法
From: https://blog.csdn.net/2401_82489659/article/details/140680907

相关文章

  • sql-DQL基础语句总结
    一·基础查询1.语法SELECT*|{[DISTINCT]column|expression[alias],...}FROMtable;select查询列表from表名;注意:(1)SELECT:标识选择哪些列(2)FROM:标识从哪个表中选择2、特点(1)查询列表可以是:表中的字段、常量值、表达式、函数。(2)查询的结果是一个虚拟的表格。二·......
  • 麻了,麻了,终于知道c语言为啥那么容易从入门到放弃了
    麻了,麻了,这谁看不迷糊。(温馨提示:出题时程序一般不会将每一种情况列出,会选其中一个或多个;请勿以答案相同认为思路相同)见了这种题怎么办?猜?这多少分之一的概率?死记?它变个数字又不同了,那得记多少?放弃?好像只能这样了。(不行,不行)今天,博主来教你们彻底解决这些问题。众所周知整......
  • 【C++】选择结构- 嵌套if语句
    嵌套if语句的语法格式:if(条件1) {        if(条件1满足后判断是否满足此条件){条件2满足后执行的操作}        else{条件2不满足执行的操作}}下面是一个实例#include<iostream>usingnamespacestd;intmain4(){ /* 提示用户输入一个高考分数......
  • 流程控制语句结构
    分支结构:多个分支选择其中一个分支执行分支结构:根据条件选择性的执行某些代码1、条件判断:if...else系列2、选择结构:switch...case系列顺序结构:从上到下,从左到右依次执行跳转语句1.break语句break语句可以用在switch语句中,用于退出switch语句,是程序从switch结构后面的第......
  • JavaSE核心技术——3 流程控制语句结构
    一、顺序结构程序由上向下运行。二、分支结构1.if语句三种格式:2.switch-case注意:1.switch(表达式)中表达式的值必须是下述几种类型之一:byte,short,char,int,枚举(jdk5.0),String(jdk7.0);2.break语句用来在执行完一个case分支后使程序跳出switch语句块;如果没有break,程序会顺......
  • 嵌入式学习第9天——C语言运算符,程序设计结构,输入输出缓冲机制
    2024.7.25第九天笔记关于++混合操作,不同计算结果推理第一种编译结果:inti=5;intsum=(++i)+(++i)=6+7=13第二种编译结果:inti=5;intsum=(++i)+(++i)=6+7=7+7前面的7是因为后面i的变化被影响后,重新赋值=14第一种编译结果:inti=5;in......
  • C语言i++和++i操作
    关于++混合操作,不同计算结果推理第一种编译结果:inti=5;intsum=(++i)+(++i)=6+7=13第二种编译结果:inti=5;intsum=(++i)+(++i)=6+7=7+7前面的7是因为后面i的变化被影响后,重新赋值=14第一种编译结果:inti=5;intsum=(++i)+(i++)=......
  • 学懂C语言(二十五):深入理解 C语言结构体 位域 的概念
            目录一、位域的基本概念二、位域的定义三、位域的内存分配和大小计算示例1:简单位域示例2:跨越多个存储单元注意事项结构体对齐控制总结        C语言中的位域(Bit-Field)是一种特殊的数据结构,允许在结构体中定义占用特定位数的成员,主要用于节......
  • 关于Streamlit中button的扩展用法
    最近团队在制作一个车辆管理系统,本人刚好负责streamlit的页面可视化。这篇Blog就不详细赘述系统的各项功能了,今天主要是想写点东西,加深一下知识的理解和消化,各位看官看个开心~(手动分界线 /doge)--------------------------------------------------------------------------......
  • C语言:字符串函数、内存函数剖析
    字符串函数、内存函数剖析一、字符串函数(一)求字符串长度1、strlen(1)库函数实现(2)自定义实现(二)长度不受限制的字符串函数1、strcpy(1)库函数实现(2)自定义实现2、strcat(1)库函数实现(2)自定义实现3、strcmp(1)库函数实现(2)自定义实现(三)长度受限制的字符串函数介绍1、strncpy2、s......