鱼C论坛

 找回密码
 立即注册
查看: 5539|回复: 38

[已解决]计算天数 每周一练(3)(3星题目)

[复制链接]
发表于 2021-8-18 20:42:45 | 显示全部楼层 |阅读模式
5鱼币
本帖最后由 wangka 于 2021-8-19 19:50 编辑

每周一练又来了(本周第二次)
题目描述

输入年份与月份,求该月共有多少天。
输入两个空格隔开的正整数year和month,分别表示年
份和月份输出对应这一年这个月的天数。

例子,分别输入2008 和2
输出29



                               
登录/注册后可看大图

不要抄袭/灌水哦!
最佳答案
2021-8-18 20:42:46
Max472 发表于 2021-8-19 20:31
那要处理字母的话改成char类型?
但是那样年份不就越界了吗
  1. #include <stdio.h>

  2. int main(void)
  3. {
  4.     int day[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
  5.     int Leap_Feb = 29;
  6.     int year, month;

  7.     printf("请输入年份和月份:\n");   
  8.     while(1) {
  9.         if(scanf("%d %d", &year, &month) == 2) break;
  10.         while(getchar() != '\n');
  11.         printf("年份或月份输入错误,请重新输入!\n");
  12.     }
  13.     /*
  14.     scanf("%d %d", &year, &month);
  15.    
  16.     while ( year<0 || month<1 || month >12 )
  17.     {
  18.         printf("年份或月份输入错误,请重新输入!\n");
  19.         scanf("%d %d", &year, &month);
  20.     }
  21.     */
  22.    
  23.     if ( !year%400 || (!year&4 && !year%100) )
  24.     {
  25.         if ( 2 == month )
  26.             printf("%d\n", Leap_Feb);
  27.         else
  28.             printf("%d\n", day[month - 1]);
  29.     }
  30.     else
  31.         printf("%d\n", day[month - 1]);
  32.    
  33.     return 0;
  34. }
复制代码

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-8-18 20:42:46 | 显示全部楼层    本楼为最佳答案   
Max472 发表于 2021-8-19 20:31
那要处理字母的话改成char类型?
但是那样年份不就越界了吗
  1. #include <stdio.h>

  2. int main(void)
  3. {
  4.     int day[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
  5.     int Leap_Feb = 29;
  6.     int year, month;

  7.     printf("请输入年份和月份:\n");   
  8.     while(1) {
  9.         if(scanf("%d %d", &year, &month) == 2) break;
  10.         while(getchar() != '\n');
  11.         printf("年份或月份输入错误,请重新输入!\n");
  12.     }
  13.     /*
  14.     scanf("%d %d", &year, &month);
  15.    
  16.     while ( year<0 || month<1 || month >12 )
  17.     {
  18.         printf("年份或月份输入错误,请重新输入!\n");
  19.         scanf("%d %d", &year, &month);
  20.     }
  21.     */
  22.    
  23.     if ( !year%400 || (!year&4 && !year%100) )
  24.     {
  25.         if ( 2 == month )
  26.             printf("%d\n", Leap_Feb);
  27.         else
  28.             printf("%d\n", day[month - 1]);
  29.     }
  30.     else
  31.         printf("%d\n", day[month - 1]);
  32.    
  33.     return 0;
  34. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-8-18 20:56:48 | 显示全部楼层
  1. n=input("输入:")
  2. n=n.split("  ")
  3. def a(e,f):
  4.     if e==9 or e==4 or e==6 or e==11:
  5.         print("30")
  6.     elif f:
  7.         print("29")
  8.     elif not f:
  9.         print("28")
  10.     else:
  11.         print("31")
  12. if (int(n[0])%4==0 and int(n[0])%100):
  13.     a(int(n[1]),1)
  14. elif int(n[0])%400:
  15.     a(int(n[1]),1)
  16. else:
  17.     a(int(n[1]),0)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-8-18 21:24:49 | 显示全部楼层
本帖最后由 Max472 于 2021-8-18 21:33 编辑
  1. #include <stdio.h>

  2. int main(void)
  3. {
  4.     int day[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
  5.     int Leap_Feb = 29;
  6.     int year, month;

  7.     printf("请输入年份和月份:\n");   
  8.     scanf("%d %d", &year, &month);
  9.    
  10.     while ( year<0 || month<1 || month >12 )
  11.     {
  12.         printf("年份或月份输入错误,请重新输入!\n");
  13.         scanf("%d %d", &year, &month);
  14.     }
  15.    
  16.     if ( !year%400 || (!year&4 && !year%100) )
  17.     {
  18.         if ( 2 == month )
  19.             printf("%d\n", Leap_Feb);
  20.         else
  21.             printf("%d\n", day[month - 1]);
  22.     }
  23.     else
  24.         printf("%d\n", day[month - 1]);
  25.    
  26.     return 0;
  27. }
复制代码

评分

参与人数 1鱼币 +5 收起 理由
人造人 + 5 我对不起你,^_^

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-8-18 22:23:49 | 显示全部楼层
你这题目错了吧   2009年不是闰年是平年 2月份只有28天而不是29天

评分

参与人数 1鱼币 +1 收起 理由
wangka + 1 感谢楼主无私奉献!

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-8-18 22:58:51 | 显示全部楼层
#include <stdio.h>

void main(){
        int y,m;
        printf("请输入要查询的年份和月份:");
        scanf("%d %d",&y,&m);
       
        if(y%4==0){
                if(m==2){
                        printf("29");
                }else if(m == 1||m ==3||m ==5||m ==7||m ==8||m ==10||m ==12){
                        printf("31");
                }else{
                        printf("30");
                }
        }else{
                if(m == 1||m ==3||m ==5||m ==7||m ==8||m ==10||m ==12){
                        printf("31");
                }else if(m == 2){
                        printf("28");        
                }else{
                        printf("30");
                }
        }
}


小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-8-18 23:26:32 | 显示全部楼层
#include <stdio.h>

void main(){
        int y,m;
        printf("请输入要查询的年份和月份:");
        scanf("%d %d",&y,&m);
       
        //2009 2 28
        //2009 3 31
        //2009 4 30
        //2016 2 29
        //2016 3 31
        //2016 4 30
        if(m==2){
                if(y%4==0){
                        printf("29");
                }else{
                        printf("28");
                }
        }else if(m == 1||m ==3||m ==5||m ==7||m ==8||m ==10||m ==12){
                printf("31");
        }else{
                printf("30");
        }
}

评分

参与人数 1鱼币 +1 收起 理由
wangka + 1 无条件支持楼主!

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-8-19 07:50:38 | 显示全部楼层
啊.....
抱歉抱歉,眼瞎....
原来要求用c...
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-8-19 12:20:30 | 显示全部楼层
  1. nonleap_year = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
  2. leap_year = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

  3. i = input('年份和月:')
  4. year_month = i.split()

  5. year = int(year_month[0])
  6. month = int(year_month[1])

  7. if year % 400 == 0:
  8.     print(leap_year[month-1])
  9. else:
  10.     if year % 4 == 0 and year % 100 != 0:
  11.         print(leap_year[month-1])
  12.     else:
  13.         print(nonleap_year[month-1])

复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-8-19 17:17:15 | 显示全部楼层
#include<stdio.h>

int main(void)
{
        int year, month;

        printf("请输入年份和月份中间用两个空格隔开 :");
        scanf_s("%d  %d", &year, &month);
        switch (month)
        {
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:printf("该月份有31天\n"); break;
        case 2:
        {
                if (!(year % 400) || (year % 4 == 0 && year % 100 != 0))
                        printf("该月份有29天\n");
                else printf("该月份有28天\n");
                break;
        }
        case 4:
        case 6:
        case 9:
        case 11:
                printf("该月份有30天!\n");
                break;
        default: printf("请正确输入!\n");
        }
        return 0;
}
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-8-19 19:39:07 | 显示全部楼层
鑫空闪烁 发表于 2021-8-18 22:23
你这题目错了吧   2009年不是闰年是平年 2月份只有28天而不是29天

打错了,不好意思,谢指正
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-8-19 19:39:44 | 显示全部楼层
青出于蓝 发表于 2021-8-19 07:50
啊.....
抱歉抱歉,眼瞎....
原来要求用c...

没事
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-8-19 19:44:50 | 显示全部楼层

这错太多了(可以改)。1,输入没有间隔。2,输出有误。3,你的重新输入while有没有停止(差点把我电脑炸了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-8-19 19:46:16 | 显示全部楼层
本帖最后由 wangka 于 2021-8-19 19:49 编辑


void main ()改成int main
还有如果输入不符合的东西(如13月,字母等)没有重新输入
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-8-19 19:49:42 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-8-19 19:51:38 | 显示全部楼层

会报错
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-8-19 20:05:20 | 显示全部楼层
wangka 发表于 2021-8-19 19:44
这错太多了(可以改)。1,输入没有间隔。2,输出有误。3,你的重新输入while有没有停止(差点把我电脑炸 ...

没有啊,我用的 code blocks 20.03
PB6QZUE1%_MBFPP9X`{K[8W.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-8-19 20:08:25 | 显示全部楼层
Max472 发表于 2021-8-19 20:05
没有啊,我用的 code blocks 20.03

你随便打几个字母呢?(电脑炸了不要怪我)
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-8-19 20:15:13 | 显示全部楼层
wangka 发表于 2021-8-19 20:08
你随便打几个字母呢?(电脑炸了不要怪我)

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-8-19 20:15:56 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-16 09:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表