C语言学习笔记[21]:分支语句if...else

news2024/9/21 7:59:57

C语言是结构化的程序设计语言

  • 顺序结构
  • 选择结构
  • 循环结构

分支语句对应的就是选择结构,循环语句对应的就是循环结构

分支语句

  • if...else
  • switch

循环语句

  • while
  • for
  • do...while

goto语句

语句

C语言中由分号隔开的就是一条语句,比如:

#include <stdio.h>

int main()
{
    printf("Hello, world!\n");
    3 + 5;
    ;//空语句
    return 0;
}

分支语句

if语句

语法结构

if(表达式)
    语句;
//表达式中的值为真则执行语句,为假则不执行
if(表达式)
    语句1;
else
    语句2;
//表达式中的值为真,则执行语句1,为假则执行语句2

C语言中如何表示真假?

非0 是 真  例如 -1 为真

0 是 假

#include <stdio.h>

int main()
{
    int age = 10;
    if(age >= 18)
        printf("成年");
    else
        printf("未成年");
    return 0;
}

通过age的值判断应该执行哪些语句

if和else后面默认只跟一条语句

#include <stdio.h>

int main()
{
    int age = 20;
    if(age >= 18)
        printf("成年\n");
    else
        printf("未成年\n");
        printf("不能喝酒\n");
    return 0;
}

 

所以如果想让if和else控制多条语句,则要给语句加上大括号

#include <stdio.h>

int main()
{
    int age = 20;
    if(age >= 18)
        printf("成年\n");
    else
    {
        printf("未成年\n");
        printf("不能喝酒\n");
    }
    return 0;
}

if...else语句的多分支情况

为什么明明age的值是60,还打印出青年呢?

因为 18 <= age < 26 这个写法是错误的,程序执行到这会先判断 18 <= age,这是成立的所以18 <= age 被替换成 1,替换后的 1 < 26 也成立,所以整个表达式为 真,最终输出青年

#include <stdio.h>

int main()
{
    int age = 20;
    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 if(age >= 60 && age < 100)
                    printf("老年\n");
                    else
                        printf("老不死\n");
    return 0;
}

悬空else

判断如下代码的结果:

#include <stdio.h>

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

运行结果什么都没打印,这就是else匹配的问题

else是和离他最近的if匹配

而上述代码中的else应该和if(b == 2)匹配,但是if(a == 1)不成立,则无法进入if(b == 2)这里,所以什么都没打印

由此可知,代码的书写风格非常重要

if书写格式的对比

if(condition){
    reutrn x;
}
return y;
if(condition)
{
    return x;
}
else
{
    return y;
}

这两个代码本质是一样的,因为return运行以后,后面的代码就不执行了

但是第二种代码风格更好

#include <stdio.h>

int main()
{
    int num = 1;
    if(num == 5)
    {
        printf("1\n");
    }
    return 0;
}
#include <stdio.h>

int main()
{
    int num = 1;
    if(5 == num)
    {
        printf("1\n");
    }
    return 0;
}

这两个代码本质也是一样的,num == 5和5 == num相比,5 == num可以防止少写一个等号,从而导致if后面的表达式恒为 真

判断一个数是奇数还是偶数

#include <stdio.h>

int main()
{
    //判断一个数是否为奇数
    int num = 0;
    printf("请输入一个数字:");
    scanf("%d", &num);
    if(num % 2 == 1 || num % 2 == -1)
    {
        printf("%d是奇数\n", num);
    }
    else
    {
        printf("%d是偶数\n", num);
    }
    return 0;
}

输出1~100之间的所有奇数

#include <stdio.h>

int main()
{
    //输出1~100之间的奇数
    int i = 0;
    while(i <= 100)
    {
        if(i % 2 == 1)
        {
            printf("%d ", i);
        }
        i++;
    }
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1907334.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

猫咪浮毛多怎么办?一分钟推荐性价比高的养猫空气净化器排名

作为一名猫咖店老板&#xff0c;我发现很多铲屎官来店里咨询&#xff0c;在春夏换季时会频繁打喷嚏、全身过敏红肿。这是因为猫咪在换季时会大量掉毛&#xff0c;家里就像下雪一样&#xff0c;空气中充满了猫毛。这些猫毛上附带的细菌会随浮毛被人吸入&#xff0c;从而引发打喷…

【计算机毕业设计】021基于weixin小程序微信点餐

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

奇安信20240513笔试

题目一 解题思路 n转为字符串&#xff0c;如果位数为偶数&#xff0c;取前一半设为x&#xff0c;后一段为y&#xff0c;从x最低位开始&#xff0c;9&#xff0c;9*10&#xff0c;9*10*10。。。 到最高位&#xff0c;加x&#xff0c;如果x大于或等于y&#xff0c;加1. 位数为奇数…

数据结构——二叉树之c语言实现堆与堆排序

目录 前言&#xff1a; 1.二叉树的概念及结构 1.1 特殊的二叉树 1.2 二叉树的存储结构 1.顺序存储 2.链式存储 2. 二叉树的顺序结构及实现 2.1 堆的概念 ​编辑 2.2 堆的创建 3.堆的实现 3.1 堆的初始化和销毁 初始化&#xff1a; 销毁&#xff1a; 插入&…

React Hooks:上天在提醒你,别再用Class组件了!

React Hooks&#xff1a;上天在提醒你&#xff0c;别再用Class组件了&#xff01; React Hooks 的出现可以说是前端界的一场革命。它不仅让我们告别了繁琐的 Class 组件&#xff0c;还让代码变得更加简洁、易读、易维护。如果你还在固守 Class 组件的阵地&#xff0c;那么这篇…

如何处理 PostgreSQL 中由于表锁定导致的并发访问问题?

文章目录 一、表锁定的类型二、表锁定导致的并发访问问题三、解决方案&#xff08;一&#xff09;使用合适的锁定模式&#xff08;二&#xff09;优化事务处理&#xff08;三&#xff09;避免不必要的锁定&#xff08;四&#xff09;使用索引&#xff08;五&#xff09;监控和分…

Java-链表反转

题目&#xff1a; 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 图示&#xff1a; 输入&#xff1a; head [1,2,3,4,5] 输出&#xff1a; [5,4,3,2,1] 解题思路&#xff1a; 情况一&#xff1a; 只有一个节点或者没有节点 …

小白学C++(第一天)基础入门

温馨提醒&#xff1a;本篇文章&#xff0c;请各位c基础不行的童鞋不要贸然观看 C的第一个程序 第一个关键字namespace namespace 是定义空间的名字的关键字&#xff0c;使用格式格式如下&#xff1a; namespace 空间名 { } 其中{ }内的命名空间的成员&#xff0c;可以定义…

计算机图形学入门26:高级光线传播

1.有偏与无偏 在做光线追踪很多方法都是用蒙特卡洛积分去估计&#xff0c;蒙特卡洛积分有些是无偏的(Unbiased)&#xff0c;所谓无偏估计就是无论使用多少个样品&#xff0c;所估计的期望值都是正确的。那么&#xff0c;所有其他情况都是有偏的(Biased)&#xff0c;就是估计的期…

MySQL存储与优化 一、MySQL架构原理

1.MySQL体系架构 MySQL Server架构自顶向下大致可以分网络连接层、服务层、存储引擎层和系统文件层 (1)网络连接层 客户端连接器&#xff08;Client Connectors&#xff09;&#xff1a;提供与MySQL服务器建立的支持。目前几乎支持所有主流的服务端编程技术&#xff0c;例如常…

《初级C++》(一)

初级C&#xff08;一&#xff09; 1: C参考⽂档2&#xff1a;C创建与实现创建C的第一套程序命名空间的理解空间命名的实现C输⼊&输出缺省参数 1: C参考⽂档 https://legacy.cplusplus.com/reference/ 《非官方》 https://zh.cppreference.com/w/cpp 《官方中文版》 https:/…

前端面试题28(Vue3的Teleport功能在什么场景下特别有用?能给个例子吗?)

Vue 3 的 Teleport 功能在需要将组件的渲染结果放置在 DOM 树中与当前组件位置无关的任意位置时特别有用。这通常涉及到需要将某些UI元素&#xff08;如模态框、弹出菜单、通知、工具提示等&#xff09;从其逻辑上的父级组件中“提取”出来&#xff0c;放置到页面的更高层级或完…

PCIe 入门 Demo(一):基础知识

PCIe 入门 Demo&#xff08;一&#xff09;&#xff1a;基础知识 主要参考 up主 芯片人阿伟 的教程【针对 RISC-V 架构】 视频介绍&#xff1a;https://www.bilibili.com/video/BV1Xm4y1V757 源码仓库&#xff1a;https://github.com/oldawei/show_me_the_code 本文主要补充一些…

前端JS特效第24集:jquery css3实现瀑布流照片墙特效

jquery css3实现瀑布流照片墙特效&#xff0c;先来看看效果&#xff1a; 部分核心的代码如下(全部代码在文章末尾)&#xff1a; <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8" /> <title>jquerycss3实现瀑…

java中==和equals()的区别探究

目录 一、Object对象 二、 三、String类的equals()方法 四、示例 4.1直接定义两个相同的值比较 4.2直接定义两个值不同的字符串进行比较 4.3直接定义一个字符串和new一个字符串进行比较&#xff08;两者值相同&#xff09; 4.4直接定义一个字符串和new一个字符串进行…

文华财经盘立方期货通鳄鱼指标公式均线交易策略源码

文华财经盘立方期货通鳄鱼指标公式均线交易策略源码&#xff1a; 新建主图幅图类型指标都可以&#xff01; VAR1:(HL)/2; 唇:REF(SMA(VAR1,5,1),3),COLORGREEN; 齿:REF(SMA(VAR1,8,1),5),COLORRED; 颚:REF(SMA(VAR1,13,1),8),COLORBLUE;

Vue3 项目中 svg 图标的封装及使用

安装 npm install vite-plugin-svg-icons -D在 vite.config.ts 中配置插件&#xff1a; import { createSvgIconsPlugin} from vite-plugin-svg-icons; import path from path;plugins: [createSvgIconsPlugin({iconDirs: [path.resolve(process.cwd(), src/assets/icons)],s…

解决win10报“无法加载文件……profile.ps1,因为在此系统上禁止运行脚本”的问题

打开命令行报错 解决方法 使用管理员权限打开PowerShell&#xff1a;WinX, 选择“Windows PowerShell&#xff08;管理员&#xff09;” 输入&#xff1a;Set-ExecutionPolicy -ExecutionPolicy RemoteSigned 输入&#xff1a;y确认修改安全策略 &#xff1a;y确认修改安全策略…

CAD、CAE、CAM介绍——定义,概述,历史,相关软件,应用与前景

目录 引出CAD/CAE/CAM计算机辅助设计 Computer-aided design (CAD)1.定义&#xff1a;2.概述3.类别4.科技5.软件&#xff1a; 计算机辅助工程 Computer-Aided Engineer (CAE)1.定义&#xff1a;2.概述3.CAE领域&#xff1a;4.应用与前景 计算机辅助制造 Computer-aided manufac…

Python自动化测试系列[v1.0.0][高效自动化设计]

Python多线程应用于自动化测试 将多线程在测试巧妙地应用&#xff0c;确实会带来很多好处&#xff0c;并且这是充分利用机器资源执行高效率测试很好的方式 # -*- coding: utf-8 -*- import threading from time import ctime import time from selenium import webdriverdef …