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

简介: 本任务要求编写程序,根据用户输入的年月日(以空格或回车分隔),计算并输出该天是该年的第几天,需注意判断闰年。主要内容包括:1. **任务描述**:实现从键盘输入年月日,计算该天是当年的第几天。2. **相关知识**: - `switch` 结构的基本语法及使用注意事项。 - 判断闰年的条件:能被4整除但不能被100整除,或能被400整除的年份为闰年。3. **编程要求**:根据提示补充代码,确保程序正确处理输入并输出结果。4. **测试说示例代码展示了如何使用 `switch` 语句和闰年判断逻辑来完成任务。通过此练习,掌握 `switch` 语句的应用及闰年判断方法。

目录😋

任务描述

相关知识

1、switch 结构基本语法

2、示例代码及解释

3、使用注意事项

4、判断闰年的条件

编程要求

测试说明

通关代码

测试结果


任务描述

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

相关知识

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

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

1、switch 结构基本语法

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

switch (expression) {
    case constant_expression_1:
        // 语句序列1
        break;
    case constant_expression_2:
        // 语句序列2
        break;
    // 可以有更多的case分支
    default:
        // 默认语句序列
        break;
}
image.gif
  • 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;
}
image.gif

在这个示例中:

  • 首先通过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;
}
image.gif

在这个例子中,因为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
image.gif

预期输出:

sum days of 2012  -  5  -  30  : 151
image.gif

测试输入:

2023 9 12
image.gif

预期输出:

sum days of 2023  -  9  -  12  : 255
image.gif

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


通关代码

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

image.gif


测试结果

image.gif

image.gif

目录
相关文章
|
11天前
|
存储 C语言
【C语言程序设计——函数】递归求斐波那契数列的前n项(头歌实践教学平台习题)【合集】
本关任务是编写递归函数求斐波那契数列的前n项。主要内容包括: 1. **递归的概念**:递归是一种函数直接或间接调用自身的编程技巧,通过“俄罗斯套娃”的方式解决问题。 2. **边界条件的确定**:边界条件是递归停止的条件,确保递归不会无限进行。例如,计算阶乘时,当n为0或1时返回1。 3. **循环控制与跳转语句**:介绍`for`、`while`循环及`break`、`continue`语句的使用方法。 编程要求是在右侧编辑器Begin--End之间补充代码,测试输入分别为3和5,预期输出为斐波那契数列的前几项。通关代码已给出,需确保正确实现递归逻辑并处理好边界条件,以避免栈溢出或结果
48 16
|
10天前
|
存储 编译器 C语言
【C语言程序设计——函数】分数数列求和2(头歌实践教学平台习题)【合集】
函数首部:按照 C 语言语法,函数的定义首部表明这是一个自定义函数,函数名为fun,它接收一个整型参数n,用于指定要求阶乘的那个数,并且函数的返回值类型为float(在实际中如果阶乘结果数值较大,用float可能会有精度损失,也可以考虑使用double等更合适的数据类型,这里以float为例)。例如:// 函数体代码将放在这里函数体内部变量定义:在函数体中,首先需要定义一些变量来辅助完成阶乘的计算。比如需要定义一个变量(通常为float或double类型,这里假设用float。
22 3
|
10天前
|
存储 算法 安全
【C语言程序设计——函数】分数数列求和1(头歌实践教学平台习题)【合集】
if 语句是最基础的形式,当条件为真时执行其内部的语句块;switch 语句则适用于针对一个表达式的多个固定值进行判断,根据表达式的值与各个 case 后的常量值匹配情况,执行相应 case 分支下的语句,直到遇到 break 语句跳出 switch 结构,若没有匹配值则执行 default 分支(可选)。例如,在判断一个数是否大于 10 的场景中,条件表达式为 “num> 10”,这里的 “num” 是程序中的变量,通过比较其值与 10 的大小关系来确定条件的真假。常量的值必须是唯一的,且在同一个。
12 2
|
C语言
《C语言及程序设计》实践参考——简单循环的流程图
返回:贺老师课程教学链接  项目要求 简单循环的流程图(提示:m是一个变量,在程序中输入)(1)求1到m的倒数和,即  [参考解答] (2)求1到m的平方和[参考解答] (3)求1到m间所有奇数的和[参考解答] (4)求值:  [参考解答] (5)求m!,即  [参考解答]
1975 0
|
C语言
《C语言及程序设计》实践参考——双分支结构流程图-大值
返回:贺老师课程教学链接  项目要求 【双分支结构流程图-大值】问题:画流程图,输入两个整数a和b,输出其中的大值。提示:采用双分支结构,输入a、b后,将大值赋值给另外一个变量,最后输出结果。 参考解答:
1647 0
|
C语言 知识图谱
《C语言及程序设计》实践参考——流程图综合-体重监测器
返回:贺老师课程教学链接  项目要求 【流程图综合-体重监测器】(1)成年男性的标准体重,标准体重(kg)= 身高(cm)-100,请画流程图,输入身高,输出标准体重。 (2)超标准体重20%为超重,请画流程图,先计算出标准体重,当超重时,请给出提示 (3)体重监测器需要在不超重时也给提示,请画流程图。 (4)若体重低于标准体重20%为超低,将这种情况也做出处理。 (5)除了为男生服务,还要
1427 0
|
C语言
《C语言及程序设计》实践参考——被3或者5整除的数
返回:贺老师课程教学链接  项目要求 【项目:被3或者5整除的数】编程序,输入一个数,判断它能否被3或者被5整除。如至少能被这两个数中的一个整除,则将此数打印出来,否则不打印。[参考解答] 解法1: #include &lt;stdio.h&gt; int main ( ) { int x; scanf("%d", &amp;x); if(x%3==0||x%5==
1295 0
|
C语言
《C语言及程序设计》实践参考——乱玩数字
返回:贺老师课程教学链接  项目要求 【项目2:乱玩数字】编程输入整数a和b,若两数之和大于100,则输出两数和百位以上的数字,否则输出两数之和。[参考解答] #include &lt;stdio.h&gt; int main ( ) { int a, b, c; scanf("%d %d", &amp;a, &amp;b); c = a + b; if (
964 0
|
C语言
《C语言及程序设计》实践参考——我的加班费
返回:贺老师课程教学链接  项目要求 【项目:我的加班费】小贺刚上班,按工作时间小时制领取周工资,工资标准是,每小时rate元RMB。每周工作时间40小时,如果要加班,超出部分按正常工资的1.5倍计(老板还算不错喔!)。这周小贺上班的时间为hour小时,请编程序,输入rate和hour,输出小贺本周的薪水。[参考解答] #include &lt;stdio.h&gt; int main (
1038 0
|
C语言
《C语言及程序设计》实践参考——个人所得税计算器if语句版
返回:贺老师课程教学链接  项目要求 【项目:个人所得税计算器if语句版】编写选择结构程序,输入个人月收入总额,计算出他本月应缴税款和税后收入(计算办法见附:关于个人所得税的有关背景知识)。(1)用if语句的嵌套完成;(2)可以在下面程序的基本框架基础上完成,如需其他变量自行增加 #include &lt;stdio.h&gt; int main ( ) { double dSalary
1908 0

热门文章

最新文章