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.数组的概…...
idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
Prompt Tuning、P-Tuning、Prefix Tuning的区别
一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...
突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...
学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...
Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...
LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》
这段 Python 代码是一个完整的 知识库数据库操作模块,用于对本地知识库系统中的知识库进行增删改查(CRUD)操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 📘 一、整体功能概述 该模块…...
关于easyexcel动态下拉选问题处理
前些日子突然碰到一个问题,说是客户的导入文件模版想支持部分导入内容的下拉选,于是我就找了easyexcel官网寻找解决方案,并没有找到合适的方案,没办法只能自己动手并分享出来,针对Java生成Excel下拉菜单时因选项过多导…...
Qt 事件处理中 return 的深入解析
Qt 事件处理中 return 的深入解析 在 Qt 事件处理中,return 语句的使用是另一个关键概念,它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别:不同层级的事件处理 方…...
nnUNet V2修改网络——暴力替换网络为UNet++
更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...
Linux中《基础IO》详细介绍
目录 理解"文件"狭义理解广义理解文件操作的归类认知系统角度文件类别 回顾C文件接口打开文件写文件读文件稍作修改,实现简单cat命令 输出信息到显示器,你有哪些方法stdin & stdout & stderr打开文件的方式 系统⽂件I/O⼀种传递标志位…...
