当前位置: 首页 > news >正文

【C语言程序设计——选择结构程序设计】求输入的日期是该年的第几天(头歌实践教学平台习题)【合集】

目录😋

任务描述

相关知识

1、switch 结构基本语法

2、示例代码及解释

3、使用注意事项

4、判断闰年的条件

编程要求

测试说明

通关代码

测试结果


任务描述

本关任务:编写程序实现:从键盘上输入一个年月日(以空格或回车分隔),要求出该天是该年的第几天(注意判断该年是否是闰年)。

相关知识

为了完成本关任务,你需要掌握:

  1. switch 结构的使用
  2. 判断闰年的条件

1、switch 结构基本语法

在 C语言 中,switch语句的基本形式如下:

switch (expression) {case constant_expression_1:// 语句序列1break;case constant_expression_2:// 语句序列2break;// 可以有更多的case分支default:// 默认语句序列break;
}
  • expression:这是一个整型或枚举类型的表达式。在 C++ 中,switch表达式的类型通常是intchar(本质上也是一种小整数类型)或者枚举类型。例如,int num = 3; switch(num)是合法的,其中num是一个整数变量。
  • constant_expression:每个case后面跟着一个常量表达式。这个常量表达式的值必须是在编译时就能确定的整型或枚举类型的值,并且在同一个switch语句中,不同case后的常量表达式的值必须互不相同。例如,case 1case 'a'(字符a的 ASCII 值是 97,也是一个整数)、case MyEnum::VALUEMyEnum是一个枚举类型)都是合法的。
  • break:当执行到break语句时,程序会跳出switch语句块,继续执行switch语句后面的代码。如果没有break语句,程序会继续执行下一个case分支的代码,这种现象称为 “fall - through”(贯穿),在某些情况下可能是有意为之,但在大多数情况下可能会导致意外的行为。
  • defaultdefault分支是可选的。当expression的值与所有case后的常量表达式的值都不匹配时,就会执行default分支中的代码。

2、示例代码及解释

下面是一个简单的示例,根据用户输入的整数来输出不同的星期几:

#include <stdio.h>
int main() {int day;printf("请输入一个1 - 7之间的整数来表示星期几:");scanf("%d", &day);switch (day) {case 1:printf("星期一\n");break;case 2:printf("星期二\n");break;case 3:printf("星期三\n");break;case 4:printf("星期四\n");break;case 5:printf("星期五\n");break;case 6:printf("星期六\n");break;case 7:printf("星期日\n");break;default:printf("输入错误,请输入1 - 7之间的整数。\n");break;}return 0;
}

在这个示例中:

  • 首先通过scanf函数从用户那里获取一个整数day
  • 然后switch语句根据day的值进行判断。如果day的值为 1,就会执行case 1分支中的代码,输出 “星期一”,然后遇到break语句跳出switch语句块。如果day的值为其他合法的值(2 - 7),就会执行相应case分支中的代码。如果day的值不在 1 - 7 这个范围内,就会执行default分支中的代码,提示用户输入错误。

3、使用注意事项

  • 避免忘记break语句:如果忘记添加break语句,可能会导致程序执行的结果不符合预期。例如:
int num = 2;
switch (num) {case 1:printf("One");case 2:printf("Two");case 3:printf("Three");break;
}

在这个例子中,因为num = 2,程序会先执行case 2分支中的printf("Two");,但是由于没有break语句,程序会继续执行case 3分支中的printf("Three");,最终输出 “TwoThree”。

  • 正确使用数据类型switch表达式和case后的常量表达式都应该是整数类型(包括字符类型)。如果使用其他类型(如浮点数),编译器会报错。例如,double num = 3.0; switch(num)是不合法的。
  • 合理使用default分支default分支可以用于处理意外情况或者未预料到的输入。在一些复杂的程序中,它可以作为一种错误处理或者默认行为的机制。但是在某些情况下,如果已经确定了所有可能的输入情况,也可以不使用default分支。

4、判断闰年的条件

  • 能被4 整除但不能被 100 整除的年是闰年;
  • 能被 400 整除的年也是闰年。

编程要求

根据提示,在右侧编辑器补充代码,根据输入的年份计算并输出程序结果。

测试说明

平台会对你编写的代码进行测试:

测试输入:

2012 5 30

预期输出:

sum days of 2012  -  5  -  30  : 151

 测试输入:

2023 9 12

预期输出:

sum days of 2023  -  9  -  12  : 255

开始你的任务吧,祝你成功!


通关代码

#include<stdio.h>
int  main()
{int year,month,day,days=0 ;//printf("please input year-month-day:" ) ;/*********Begin*********/scanf("%d %d %d", &year, &month, &day);switch(month){case 12:days += 30;case 11:days += 31;case 10:days += 30;case 9:days += 31;case 8:days += 31;case 7:days += 30;case 6:days += 31;case 5:days += 30;case 4:days += 31;case 3:days += 28;if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0){days += 1;}case 2:days += 31;case 1:days += day;break;return 0;}/*********End**********/ printf( "sum days of %d  -  %d  -  %d  : %d" ,year,month,day, days ) ;return(0);
} 

测试结果

在这里插入图片描述

http://www.lryc.cn/news/516822.html

相关文章:

  • Lumos学习王佩丰Excel二十四讲系列完结
  • 前后端规约
  • 【数据可视化】数据可视化看板需求梳理模板(含示例)
  • CArray原理是什么,通过示例来展示如何使用?
  • 更换WordPress主题的基础知识及注意事项
  • springcloud篇3-docker需熟练掌握的知识点
  • 基于单片机的直流稳压电源的设计(论文+源码)
  • uniapp-vue3 实现, 一款带有丝滑动画效果的单选框组件,支持微信小程序、H5等多端
  • 解锁 C 语言字符函数密码,开启高效编程之路
  • LLM之RAG实战(五十一)| 使用python和Cypher解析PDF数据,并加载到Neo4j数据库
  • 力扣-数组-01两数之和
  • Flutter中的网络请求图片存储为缓存,与定制删除本地缓存
  • 保障移动应用安全:多层次安全策略应对新兴威胁
  • 【Linux】函数
  • Maven中管理SNAPSHOT版本含义及作用
  • win10 VS2019上libtorch库配置过程
  • 【计算机网络】课程 实验二 交换机基本配置和VLAN 间路由实现
  • Oracle Dataguard(主库为单节点)配置详解(4):将主库复制到备库并启动同步
  • OpenCL(贰):浅析CL内核程序接口函数
  • Leetcode 3407. Substring Matching Pattern
  • 学英语学压测:02jmeter组件-测试计划和线程组ramp-up参数的作用
  • Vue笔记-001-声明式渲染
  • 26考研资料分享 百度网盘
  • .NET 8 + Ocelot + Consul 实现代理网关、服务发现
  • 使用 Nginx 轻松处理跨域请求(CORS)
  • 【LeetCode Hot100 二分查找】搜索插入位置、搜索二维矩阵、搜索旋转排序数组、寻找两个正序数组的中位数
  • 使用MediaPipe Face Mesh 面部动作检测
  • 【Vue】<script setup>和 <script>区别是什么?在使用时的写法区别?
  • 微服务框架,Http异步编程中,如何保证数据的最终一致性
  • vue3-dom-diff算法