C语言程序设计——程序流程控制方法(一)
C语言关系运算符
- | - | - |
---|---|---|
== | 等于 | a==b |
!= | 不等于 | a!=b |
<、> | 小于和大于 | a>b 、a<b |
<=、>= | 小于等于、大于等于 | a>=b 、a<=b |
! | 非 | !(0)、!(NULL) |
在C99之后,C语言开始支持布尔类型,头文件是stdbool.h。在文中我所演示的所有代码均是C99版。
在C语言上上述关系运算符中,如果上述关系成立,就为真返回值为1,不成立九为假,返回值为0。在写代码的时候需要着重注意一下等于的运算符是两个等号,一个等号叫做赋值,这个在编码时候注意。
逻辑归一化 !!(x)
在C语言中空字符,0,空数组,NULL代表假,布尔值均为0,其它则为真,比如100、-2,{4,5,6}等,它就是真,但是以布尔值来讲是只有0和1的,所以为了在布尔运算上统一我们需要把这些,真真假假的数据归一化。就需要使用!!操作,把当前数据的布尔值调整为0或1
分支结构
if语句
if(表达式){代码段;
}
else if(表达式){代码段;
}
else{代码段;
}
程序输入一个正整数n,代表学生的成绩,根据分数输出分数挡位
n = 0,FOOLISH
0<n<60,FAIL
60<=n<75,MEDIUM
75<=n<=100,GOOD
#include<stdio.h>int main(){int n;while(~scanf("%d", &n)){if(!n){printf("FOOLISH\n");}else if(n < 60){printf("FAIL\n");}else if(n < 75){printf("MEDIUM\n"); }else if(n <= 100){printf("GOOD\n");}}
}
switch语句
switch (a){case 1:代码块1;case 2: 代码块2;case 3: 代码块3;default:代码块4;
}
请使用switch结构完成如下任务,程序读入一个整数n:
如果n = 1,则输出one
如果n = 2,则输出two
如果n = 3,则输出three
否则输入error
可以看到输出结果不是我们预期的目的,在这里需要说明一下,case为条件入口,程序进入case对应的代码段,一次执行后续的代码,知道遇到break,或者switch末尾。所以在本题中,要注意在case后加上break。
#include<stdio.h>int main(){int n;while(~scanf("%d", &n)){switch(n){case 1: printf("one\n");break;case 2: printf("two\n");break;case 3: printf("three\n");break;default: printf("error\n");}}
}
在使用switch语句中,要保证参数n能唯一映射,整型或者字符型的数据。所以在使用时switch的使用场景没有if的使用场景更多。
判断日期的合法性
题目要求:输入一个日期,判断这个日期是否存在
1,3,5,7,8,10,12月有21天
4,6,9,11月有30天
闰年的2月是29天
非整百年,能被4整除的为闰年,在整百年中能被400整除的是闰年。
如果日期合法,输出YES,不合法,则输出NO
思路:首先根据题目来讲我们需要三个变量来接受年月日的输入,然后12个月的日期我们需要一个数组来存储各个月的日期,来减少工作量,然后需要一个判断的合法的函数来接收年月日,判断是否合法,根据返回值,再用printf()输出结果
int main(){int year, month, day;int date[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};while(~scanf("%d %d %d", &year, &month, &day)){ printf("%s\n",judge_date(year, month, day, date)? "YES" : "NO");}
}
主函数完成后,我们来完成judge_date()函数。首先我们要先判断当前年份是否为闰年,这里我们判断闰年也是一个独立的功能,我们再需要另一个函数judge_year()实现,如果是闰年,则返回1,如果不是则返回0。那么在数组中我们只需要把28与judge_year()的返回值相加即可。然后考虑年月日的逻辑,年是可以为任意整数的,因为有公元前和公元后,所以year没有需要注意的地方,月份的后只可以是1~12,日就是要大于0小于数组中各个月份对应的数。
int judge_date(int year, int month, int day, int *date){int temp = 0;temp = judge_year(year);date[2] = date[2]+temp;if(month > 12 || month < 1) return 0;if(day > date[month] || day < 1 ) return 0;return 1;
}
下面按照题目介绍完成judge_year()函数
int judge_year(int year){if ((year % 4 == 0 && year % 100 != 0 ) ||year % 400 == 0) return 1;return 0;
}
在这个函数完成之后就完成了题目要求,但是这里会有一个小bug,因为我们使用的是循环读入,在judge_date()函数中,我们可以看到如果是闰年后,28+1成了29,但是一次循环后,数组中的数据并没用还原,所以我们需要再把二月的数据初始为28。另外我们还可以优化一下的是,我们可以把对月份的判断放在首位,一旦月份不合法直接结束程序,不需要先对数组进行操作。
#include<stdio.h> int judge_year(int year){if ((year % 4 == 0 && year % 100 != 0 ) ||year % 400 == 0) return 1;return 0;
}int judge_date(int year, int month, int day, int *date){if(month > 12 || month < 1) return 0;date[2] = date[2] + judge_year(year);if(day > date[month] || day < 1 ) return 0;date[2] = 28;return 1;
}int main(){int year, month, day;int date[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};while(~scanf("%d %d %d", &year, &month, &day)){ printf("%s\n",judge_date(year, month, day, date)? "YES" : "NO");}
}
相关文章:

C语言程序设计——程序流程控制方法(一)
C语言关系运算符 ---等于ab!不等于a!b<、>小于和大于a>b 、a<b<、>小于等于、大于等于a>b 、a<b!非!(0)、!(NULL) 在C99之后,C语言开始支持布尔类型,头文件是stdbool.h。在文中我所演示的所有代码均是C99版。 在C语言上上述关…...
torch.backends.cudnn.benchmark
torch.backends.cudnn.benchmark 的设置对于使用 PyTorch 进行深度学习训练的性能优化至关重要。具体而言,它与 NVIDIA 的 CuDNN(CUDA Deep Neural Network library)库有关,该库是在 GPU 上加速深度神经网络计算的核心组件。 启用…...

SQL Server从0到1——写shell
xp_cmdshell 查看能否使用xpcmd_shell; select count(*) from master.dbo.sysobjects where xtype x and name xp_cmdshell 直接使用xpcmd_shell执行命令: EXEC master.dbo.xp_cmdshell whoami 发现居然无法使用 查看是否存在xp_cmdshell: EXEC…...
计算圆弧的起始角度、终止角度和矩形信息并使用drawArc绘制圆弧
Qt中常用绘制圆弧的库函数: //函数原型 void QPainter::drawArc(const QRectF &rectangle, int startAngle, int spanAngle)Qt规定1约占16个像素,比如一个完整的圆等于360度,对应的像素角度就是 5760度(16 * 360)…...
C++ Trie树模版 及模版题 || Trie字符串统计
Trie树:用来高效的存储和查找字符串集合的数据结构。 维护一个字符串集合,支持两种操作: I x 向集合中插入一个字符串 x ; Q x 询问一个字符串在集合中出现了多少次。 共有 N 个操作,所有输入的字符串总长度不超过 1…...

Linux基础命令@echo、tail、重定向符
目录 echo概念语法作用演示一演示二 反引号作用 tail概念语法作用不带选项,演示一带选项 -num,演示二带选项 -f , 持续跟踪 重定向符概念作用覆盖重定向,>演示一演示二 追加重定向,>>演示一演示二 总结 echo …...

uniapp:签字版、绘画板 插件l-signature
官方网站:LimeUi - 多端uniapp组件库 使用步骤: 1、首先从插件市场将代码下载到项目 海报画板 - DCloud 插件市场 2、下载后,在项目中的uni_modules目录(uni_modules优点:不需要import引入,还可以快捷更新…...
Python Pillow(PIL)库的用法介绍
Python的Pillow库(PIL)是一个强大的图像处理库,可以用来进行图像的读取、编辑、处理和保存等操作。下面是一些Pillow库的基本用法介绍: 安装Pillow库: 在命令行中输入以下命令即可安装Pillow库: 复制代码 p…...

uniapp 【专题详解 -- 时间】云数据库时间类型设计,时间生成、时间格式化渲染(uni-dateformat 组件的使用)
云数据表的时间类型设计 推荐使用时间戳 timestamp "createTime": {"bsonType": "timestamp","label": "创建时间:" }时间生成 获取当前时间 Date.now() .add({createTime: Date.now() })时间格式化渲染 下载安…...
k8s之flink的几种创建方式
在此之前需要部署一下私人docker仓库,教程搭建 Docker 镜像仓库 注意:每台节点的daemon.json都需要配置"insecure-registries": ["http://主机IP:8080"] 并重启 一、session 模式 Session 模式是指在 Kubernetes 上启动一个共享的…...

应用OpenCV绘制箭头
绘制箭头函数 方法:函数cv2.arrowedLine( ) 语法格式:cv2.arrowedLine(img, pt1, pt2, color[, thickness[, line_type[, shift[, tipLength]]]]) 参数说明: img:要画的直线所在的图像,也称为画布。。 pt1&#x…...
信息学奥赛一本通1032:大象喝水查
1032:大象喝水查 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 104347 通过数: 64726 【题目描述】 一只大象口渴了,要喝20升水才能解渴,但现在只有一个深h厘米,底面半径为r厘米的小圆桶(h和r都是整数)。问大象至少…...
聊聊jvm的direct buffer统计
序 本文主要研究一下jvm的direct buffer统计 spring boot metrics jvm.memory.used {"name": "jvm.memory.used","description": "The amount of used memory","baseUnit": "bytes","measurements"…...

C/C++ 位段
目录 什么是位段? 位段的内存分配 位段的跨平台问题 什么是位段? 位段的声明与结构是类似的,但是有两个不同: 位段的成员必须是 int、unsigned int 或signed int 等整型家族。位段的成员名后边有一个冒号和一个数字 这是一个…...
Peter算法小课堂—树的应用
开篇先给大家讲个东西,叫vector,有老师称之为“向量”,当然与数学中的向量不一样啊,所以我要称之为“长度可变的数组” vector 头文件:#include <vector> 用法:vector<int> d; 尾部增加元素…...

FineBI:简介
1 介绍 FineBI 是帆软软件有限公司推出的一款商业智能(Business Intelligence)产品。 FineBI 是定位于自助大数据分析的 BI 工具,能够帮助企业的业务人员和数据分析师,开展以问题导向的探索式分析。 2 现阶段数据分析弊端 现阶…...
原神单机版【完全无脑搭建】⭐纯单机⭐*稳定版*
版本介绍 版本3.7稳定版【过分追新并不稳,合理才完美】 独家原神,游戏内自带剧情任务,完美仿官,一比一完美复制! 已经拥有完美剧情、任务、副本、卡池、深渊、全物品、和全部功能和皮肤。 送:GM全套工具…...

用通俗易懂的方式讲解:万字长文带你入门大模型
告别2023,迎接2024。大模型技术已成为业界关注焦点,你是否也渴望掌握这一领域却又不知从何学起? 本篇文章将特别针对入门新手,以浅显易懂的方式梳理大模型的发展历程、核心网络结构以及数据微调等关键技术。 如果你在阅读中收获…...
Invalid options in vue.config.js: “plugins“ is not allowed
项目场景: 安装并配置elementPlus报错。 问题描述 "plugins" is not allowed. plugins不被允许。参考官网修改配置文件vue.config.js。 解决方案: const AutoImport require(unplugin-auto-import/webpack) const Components require(un…...
四、C语言中的数组:数组的创建与初始化
其实在之前的学习中我们已经或多或少接触到了数组,有关scanf()的安全用法中我们提到了如何避免数组溢出的问题,详情可以查看二、C语言数据类型与变量(scanf和printf (4)完) 这一章我们将详细学习数组在C语言中的应用 1.数组的概…...

超短脉冲激光自聚焦效应
前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应,这是一种非线性光学现象,主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场,对材料产生非线性响应,可能…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式
今天是关于AI如何在教学中增强学生的学习体验,我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育,这并非炒作,而是已经发生的巨大变革。教育机构和教育者不能忽视它,试图简单地禁止学生使…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲
文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...

三分算法与DeepSeek辅助证明是单峰函数
前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...
NPOI操作EXCEL文件 ——CAD C# 二次开发
缺点:dll.版本容易加载错误。CAD加载插件时,没有加载所有类库。插件运行过程中用到某个类库,会从CAD的安装目录找,找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库,就用插件程序加载进…...

【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)
前言: 双亲委派机制对于面试这块来说非常重要,在实际开发中也是经常遇见需要打破双亲委派的需求,今天我们一起来探索一下什么是双亲委派机制,在此之前我们先介绍一下类的加载器。 目录 编辑 前言: 类加载器 1. …...
【WebSocket】SpringBoot项目中使用WebSocket
1. 导入坐标 如果springboot父工程没有加入websocket的起步依赖,添加它的坐标的时候需要带上版本号。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dep…...
用神经网络读懂你的“心情”:揭秘情绪识别系统背后的AI魔法
用神经网络读懂你的“心情”:揭秘情绪识别系统背后的AI魔法 大家好,我是Echo_Wish。最近刷短视频、看直播,有没有发现,越来越多的应用都开始“懂你”了——它们能感知你的情绪,推荐更合适的内容,甚至帮客服识别用户情绪,提升服务体验。这背后,神经网络在悄悄发力,撑起…...