首页 > 其他分享 >if语句的常见概念

if语句的常见概念

时间:2024-11-01 19:16:44浏览次数:3  
标签:语句 int age 常见 else 概念 printf main

C语言是结构化的程序设计语言
这里的结构指的是顺序结构,选择结构,循环结构
分支结构可以使用if ,switch 实现
循环结构可以使用for,while,do while

1.if语句

if语句的语法形式如下:
1. if(表达式)
2. 语句
表达式为真,则语句执行,表达式为假,则语句不执行
在C语言中,0表示假,非0表示真,也就是表达式的结果如果是0,则语句不执行表达式结果为非0则语句执行

下面举个例子:判断一个数是否是奇数

int main()
{
	int n = 0;
	scanf("%d", &n);
	if (n % 2 == 1)
	{
		printf("%d为奇数\n",n);
	}
	return 0;
}

2.else语句

如果一个数不是奇数,那就是偶数了,这里判断是奇数还是偶数
就需要if…else… 语句了,语法形式如下
> 1.if(表达式)
2. { 语句}
3. else { }

下面还是举判断奇偶数的例子:

int main()
{
	int n = 0;
	scanf("%d", &n);
	if (n % 2 == 1)
	{
		printf("%d为奇数\n",n);
	}
	else
	{
		printf("%d是偶数\n", n);
	}
	return 0;
}

在这里插入图片描述
在这里插入图片描述

2.1分支中包含多条语句

默认在if 和 else语句中默认都只控制一条语句

int main()
{
	int age = 0;
	scanf("%d", &age);
	if (age >= 18)
	printf("成年了\n");
	printf("可以谈恋爱了\n");
    return 0;
}

在这里插入图片描述
在这里插入图片描述
上面的代码,你会发现不管时输入>=18 还是 <18 都会打印可以谈恋爱了
出现上面这两种情况的原因:
是因为 if 默认控制它后面的第一条语句printf(“成年了\n”);
if 中的表达式成立,则执行第一条语句printf(“成年了\n”); 反之不然
但是 printf(“可以谈恋爱了\n”); 是独立存在的,这条语句不受if 语句控制,程序运行就会打印

如果想是if 语句同时控制2条语句,就需要用{ }将代码括起来,else后也可以跟上大括号,如下图代码所示:

int main()
{
	int age = 0;
	scanf("%d", &age);
	if (age >= 18)
	{
		printf("成年了\n");
		printf("可以谈恋爱了\n");
	}
	else 
	{
		printf("未成年\n");
		printf("不可以谈恋爱了\n");
	}
	return 0;
}

在这里插入图片描述
在这里插入图片描述

3.嵌套if

一个 if 语句后可跟一个可选的 else if… else 语句,这可用于测试多种条件。

当使用 if…else if…else 语句时,以下几点需要注意:
一个 if 后可跟零个或一个 else,else 必须在所有else if 之后。
一个 if 后可跟零个或多个 else if,else if 必须在 else 之前。
一旦某个 else if匹配成功,其他的 else if 或 else 将不会被测试。

模版如下代码所示:

if(判断条件1)
{
  
}
else if(判断条件2)
{
   
}
else if(判断条件3)
{
  
}
else 
{
   /* 当上面条件都不为真时执行 */
}

下面举一个 嵌套if 的例子:
输入一个整数,如果正数再判断是奇数还是偶数,并输出
反之则是非正数

int main()
{
	int num = 0;
	scanf("%d", &num);
	if (num > 0)
	{
		if (num % 2 == 0)
		{
			printf("%d是偶数\n",num);
		}
		else
		{
			printf("%d是奇数\n", num);
		}
	}
	else
	{

		printf("%d是非正数\n", num);
	}

	return 0;
}

3.1 if…else if…else 语句

下面举个具体的例子
在这里插入图片描述

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

一旦前面的if 或者某个 else if 匹配成功,其后面的的 else if 或 else 将不会被测试。在这里插入图片描述

3.2 悬空else问题

分析下面这段代码,有什么问题呢
很多初学者上来就判断a=0,不等于1,那就执行else语句,直接打印haha,但结果是什么都不打印

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

在这里插入图片描述
出现上面这种情况的原因,这种悬空else的问题,如果有多个if 和 else
可以记住这样一条规则,else总是与最接近的if 匹配
上述代码的排版,会让我们误以为else 是与第一个if(a==1)匹配的
当if语句不成立时,自然想到就是执行else语句,打印haha.
但实际上else是和第二个if进行匹配的,因为else与第二个if是最接近的,进行匹配,所以后面的if…else语句其实是嵌套到了第一个if语句中的,如果第一个语句就不成立,嵌套的if 和 else 就没机会执行了,所以最终什么都不打印

写成下面这样的方式更加容易理解

int main()
{
	int a = 0;
	int b = 0;
	if (a == 1)  //不成立,则后面不执行
	{
		if (b == 2)
			printf("hehe\n");
		else
			printf("haha\n");
	}
	return 0;
}

在这里插入图片描述

如果需要else与第一个if进行匹配,也可以像下面这样写
if(a==1)不成立,则执行else语句打印haha

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

在这里插入图片描述

标签:语句,int,age,常见,else,概念,printf,main
From: https://blog.csdn.net/2301_79372955/article/details/143377574

相关文章

  • 常见协议端口号
    常见协议的端口号如下:HTTP-80HTTPS-443FTP-21SFTP-22SSH-22Telnet-23SMTP-25POP3-110IMAP-143DNS-53DHCP-67(服务器端)和68(客户端)SNMP-161(UDP)RDP-3389MySQL-3306PostgreSQL-5432Redis-6379MongoDB-27017这些端口号通常与特定的服务或协议相......
  • HTML 基础概念:什么是 HTML ? HTML 的构成 与 HTML 基本文档结构
    文章目录什么是HTML?HTML的构成?什么是HTML元素?HTML元素的组成部分HTML元素的特点HTML基本文档结构如何打开新建的HTML文件代码查看什么是HTML?HTML(超文本标记语言,HyperTextMarkupLanguage)是一种用来告知浏览器如何组织页面的标记语言。它定义了网页......
  • 光伏阵列常见故障仿真模型(Simulink仿真实现)
     ......
  • 100 道 Linux 常见面试题,慢慢读~_linux基础面试题
    1Linux概述1.1什么是LinuxLinux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络......
  • XCP 标定中的几个基本概念
    ECU标定要解决的问题ECU中parameter存在flash中;这些参数的值需要在运行过程中,在实验室条件下或实车环境下通过实验不断的调整优化来获取;这样可能面临几个问题: 基于目前的flash工艺,flash的擦写操作一般都是整块操作的,并且擦除、program都需要时间;而标定时需要在运行过......
  • 常见闪存颗粒ID、制程大合集
    量产工具一站式下载平台:量产部落(club.liangchanba.com)常见闪存颗粒ID、制程大合集(一):H25G9TD18CX576(3DV8)_1    ,AD7E283B00D2,HynixH25BFT9TC1(3DV7)       ,AD7E280B00C2,HynixH25G9TC18CX488(3DV7)       ,AD7E290B00C2,HynixFP29F01......
  • JavaScript语法基础——变量,数据类型,运算符和程序控制语句(小白友好篇,手把手教你学会!)
     一、JavaScript概述JavaScript是一种高级编程语言,常用于网页开发和服务器端应用程序。它是一种动态类型语言,可以在浏览器中直接解释执行,而不需要编译。脚本(Script)是一种与计算机程序相关的指令集或代码块,用于执行特定的任务或操作。脚本通常用于自动化重复性的任务或进行特......
  • Java常见面试题之事务
    博主介绍上海交大毕业,大厂资深Java后端工程师《Java全套学习资料》作者专注于系统架构设计和高并发解决方案和面试辅导阿里云开发社区乘风者计划专家博主@author[vx]vip1024p(备注java)ACID特性A:原子性,Atomictiy,事务是最小的执行单位,不允许分割,事务的原子性确......
  • CATIA许可证常见问题解答
    在使用CATIA软件的过程中,许可证问题常常是用户关心的焦点。为了帮助大家更好地理解和解决这些问题,我们整理了一份CATIA许可证常见问题解答,希望能为您提供便捷的参考。问题一:如何激活CATIA许可证?解答:激活CATIA许可证通常需要访问软件的官方平台或使用特定的许可证管理工具。您需......
  • React面试常见题目(基础-进阶)
    React面试常见题目及详细回答讲解基础题目(20个)什么是React?回答:React是一个用于构建用户界面的JavaScript库,它允许你将UI拆分成可复用的组件。React起源于Facebook的内部项目,用于构建高性能的Web应用界面。React组件有哪些类型?回答:React组件主要有函数组件和类组件两种类......