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");}
}

在这里插入图片描述

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

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

相关文章

mxxWechatBot微信机器人自定义接口支持配置多个关键词、多个群聊和好友

大家伙&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。 前言 注意&#xff1a; 免责声明&#xff1a;该工具仅供学习使用&#xff0c;禁止使用该工具从事违法活动&#xff0c;否则永久拉黑​封禁账号。本工具我不会绝对保证对你的账号没有影响…

【爱发电】正式入驻爱发电平台

我的爱发电主页地址&#xff1a;https://afdian.net/a/leoatliang 欢迎大家来用爱发电&#xff01;&#xff01;&#xff01;

Android 横竖屏切换之窗体泄露leaked window DecorView XXXActivity

前言 遇到问题 Android 横竖屏切换之窗体泄露leaked window DecorView XXXActivity has leaked window DecorViewe6d2d3c[XXXActivity] that was originally added here 场景 在android 横竖屏切换时androidManifest 对应Activity可以设置 <activityandroid:name".XX…

vue3中vite.config.js文件常用配置

文章目录 配置root&#xff1a;base&#xff1a;publicDir&#xff1a;plugins&#xff1a;optimizeDeps&#xff1a;server&#xff1a;build&#xff1a;resolve&#xff1a; 配置 vite.config.js文件是 Vite 项目的配置文件&#xff0c;通过该文件你可以对 Vite 进行一些配…

draw.io基础操作和代码高效画图进阶

文章目录 一、基础操作1、链接2、等比例变形3、复制4、插入表格 二、在线打开三、插入—功能聚集地1、插入图片2、插入画笔3、插入布局4、导出 四、图码转换——高效画图1、通用图码转换2、流程图生成&#xff1a;使用mermaid语言生成图&#xff1a; 五、图码转换高效画图的典型…

C++八股学习心得.7

1.在 CGI 中使用 Cookies HTTP 协议是一种无状态的协议。但对于一个商业网站&#xff0c;它需要在不同页面间保持会话信息。例如&#xff0c;一个用户在完成多个页面的步骤之后结束注册。但是&#xff0c;如何在所有网页中保持用户的会话信息。 在许多情况下&#xff0c;使用…

locust 快速入门--HttpUser与TaskSet

背景&#xff1a; locust 压测是以模拟一定用户数量完成指定操作实现的压测。 它的基础维度是用户数量&#xff08;HttpUser&#xff09;&#xff0c;压测时指定多少用户数&#xff0c;就会有相应的HttpUser实例。 用户的操作行为定义&#xff0c;是通过一个个task装饰的方法实…

探秘 JAVA 工厂模式:深度详解与实例分析

探秘 JAVA 工厂模式&#xff1a;深度详解与实例分析 前言: 欢迎阅读本篇博客&#xff0c;我们将深入研究 Java 中一种设计模式——工厂模式。工厂模式是一种创建型模式&#xff0c;它提供了创建对象的最佳方式之一&#xff0c;有助于将对象的创建与使用解耦。 1. 工厂模式简…

静态网页设计——旅游景点介绍(HTML+CSS+JavaScript)

前言 声明&#xff1a;该文章只是做技术分享&#xff0c;若侵权请联系我删除。&#xff01;&#xff01; 感谢大佬的视频&#xff1a; https://www.bilibili.com/video/BV1f64y1N7uH/?vd_source5f425e0074a7f92921f53ab87712357b 使用技术&#xff1a;HTMLCSSJS&#xff08;…

2024.1.7力扣每日一题——赎金信

2024.1.7 题目来源我的题解方法一 哈希表方法二 数组 题目来源 力扣每日一题&#xff1b;题序&#xff1a;383 我的题解 方法一 哈希表 使用哈希表记录ransomNote中所需字符的数量&#xff0c;然后遍历magazine并将哈希表中存在的对应的数量减一 时间复杂度&#xff1a;O(nm…

Code Runner使用外部控制台,运行结束后等待用户输入

问题描述 网上让程序运行结束暂停的方法大多数只有两种&#xff1a; 1.末尾加上system(“pause”) 2.start /k cmd 第一种方法每一个程序都需要在最后加上这条命令很烦&#xff1b; 第二章方法cmd窗口在程序运行结束后不会自动关闭&#xff0c;需要用户手动关闭 我想找到一种…

鸡尾酒效应通俗解释,举一个具体的例子。

问题描述&#xff1a;鸡尾酒效应通俗解释&#xff0c;举一个具体的例子。 问题解答&#xff1a; 鸡尾酒效应&#xff08;Cocktail Party Effect&#xff09;是指在嘈杂的环境中&#xff0c;人类大脑能够在众多声音中专注于一些特定声音并加以理解。这种现象显示了人类听觉系统…

PyTorch|构建自己的卷积神经网络--池化操作

在卷积神经网络中&#xff0c;一般在卷积层后&#xff0c;我们往往进行池化操作。实现池化操作很简单&#xff0c;pytorch中早已有相应的实现。 nn.MaxPool2d(kernel_size ,stride ) 这种池化叫做最大池化。 最大池化原理很简单&#xff0c;就是一个filter以一定的stride在原…

NACHI机器人虚拟示教器报I2101异常

前言 机器人示教器报&#xff1a;I2101 异常停止按钮或外部停止信号被输入 无法再示教模式下进行程序的运行&#xff01; 解决方法 结果 最后测试可以正常的运行程序

PHP文件代码加密系统,可批量全开源

代码文件加密系统 在程序运行时&#xff0c;实质上是在执行机器码&#xff0c;而虚拟机语言的基本概念是将程序加密到一定程度&#xff0c;也就是说&#xff0c;经过加密的PHP程序在执行时会被解密成opcode继续执行。 PHP在执行时会生成opcode&#xff0c;然后由Zend虚拟机继…

计算机网络(第8版)名词解释

1.ICMP 网际控制报文 允许主机或路由器报告差错情况和提供有关异常情况的报告 2.RIP路由信息协议 是一种分布式的&#xff0c;基于距离向量的路由选择协议 3.BGP 外部网关协议 是不同自治系统的路由器之间交换路由信息的协议 4.IGMP 网际管理协议 使用多播路由器知道多播…

Spring之单元测试

Spring提供了一个运行器&#xff0c;可以读取配置文件&#xff08;或注解&#xff09;来创建容器。 1 整合Junit5 1.1 引入依赖 <dependencies><!--spring context依赖--><!--当你引入Spring Context依赖之后&#xff0c;表示将Spring的基础依赖引入了-->…

JDBC-数据库连接池(druid)

一、背景 在介绍JDBC基本概念中&#xff0c;似乎Java程序每次与数据库交互都要通过驱动创建一个新的连接对象&#xff08;Connection&#xff09;&#xff0c;再由连接对象创建一个可执行SQL的Statement对象&#xff08;或PreparedStatement对象&#xff09;&#xff0c;操作完…

Postman实现压力测试

从事软件开发对于压力测试并不陌生,常见的一些压测软件有Apache JMeter LoadRunner Gatling Tsung 等,这些都是一些比较专业的测试软件,对于我的工作来说一般情况下用不到这么专业的测试,有时候需要对一些接口进行压力测试又不想再安装新软件,那么可以使用Postman来实现对…

Redis之集群选举原理分析

当slave发现自己的master变为FAIL状态时&#xff0c;便尝试进行Failover&#xff0c;以期成为新的master。由于挂掉的master可能会有多个slave&#xff0c;从而存在多个slave竞争成为master节点的过程&#xff0c; 其过程如下&#xff1a; slave发现自己的master变为FAIL。将自…