鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: wangka

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

[复制链接]
发表于 2021-8-19 20:15:56 | 显示全部楼层
ctrl + c 可以让程序停下来
GIF.gif
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-8-19 20:17:02 | 显示全部楼层
人造人 发表于 2021-8-19 20:15
ctrl + c 可以让程序停下来


知道的,只不过看这东西刷屏有点疯
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-8-19 20:19:43 | 显示全部楼层

没想到字母这回事
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-8-19 20:20:29 | 显示全部楼层
Max472 发表于 2021-8-19 20:19
没想到字母这回事

上一个每周一练也是这个问题
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-8-19 20:31:09 | 显示全部楼层
wangka 发表于 2021-8-19 20:20
上一个每周一练也是这个问题

那要处理字母的话改成char类型?
但是那样年份不就越界了吗
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-8-19 21:58:31 | 显示全部楼层
好的
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-8-19 23:39:18 | 显示全部楼层
本帖最后由 lgh202020 于 2021-8-19 23:44 编辑
  1. def year(y):
  2.                 if y % 100 == 0:
  3.                                 if y % 400 == 0:
  4.                                                 return 1
  5.                                 else:
  6.                                                 return 0
  7.                 else:
  8.                                 if y % 4 == 0:
  9.                                                 return 1
  10.                                 else:
  11.                                                 return 0
  12. def month(m,y):
  13.                     if m > 12 or m < 1:
  14.                         print('数据输入错误')
  15.                 if m == 2:
  16.                                 if y == 1:
  17.                                                 return 29
  18.                                 else:
  19.                                                 return 28
  20.                 elif m != 2:
  21.                                 if m >= 7:
  22.                                                 if m % 2 == 0:
  23.                                                                 return 30
  24.                                                 else:
  25.                                                                 return 31
  26.                                 elif m < 7:
  27.                                                 if m % 2 == 0:
  28.                                                                 return 31
  29.                                                 else:
  30.                                                                 return 30
  31. a = input()
  32. a = a.split('  ')
  33. print(month(int(a[1]),year(int(a[0]))))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

加个rewind(stdin);清除输入缓冲区
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-8-20 10:45:52 | 显示全部楼层
  1. #include <stdio.h>


  2. int main()
  3. {   int year,mon;
  4.     int days[12]={31,28,31,30,31,30,31,31,30,31,30,31};
  5.     int day =0;
  6.    
  7.    
  8.     if(scanf("%d %d",&year,&mon)!=EOF)
  9.     {
  10.         if ((year%4==0)&&(year%100!=0)||(year%400==0))
  11.         {
  12.             if (mon==2)
  13.                 day=days[mon-1]+1;
  14.         }
  15.         day=days[mon-1];
  16.     }
  17.    
  18.     return day;
  19. }
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2021-8-20 15:20:00 | 显示全部楼层
c语言的方法喔

#include <stdio.h>

int main(void)
{
    int day[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    int Leap_Feb = 29;
    int year, month;

    printf("请输入年份和月份:\n");   
    scanf("%d %d", &year, &month);
   
    while ( year<0 || month<1 || month >12 )
    {
        printf("年份或月份输入错误,请重新输入!\n");
        scanf("%d %d", &year, &month);
    }
   
    if ( !year%400 || (!year&4 && !year%100) )
    {
        if ( 2 == month )
            printf("%d\n", Leap_Feb);
        else
            printf("%d\n", day[month - 1]);
    }
    else
        printf("%d\n", day[month - 1]);
   
    return 0;
}

评分

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

查看全部评分

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

使用道具 举报

发表于 2021-8-20 19:28:52 | 显示全部楼层
  1. #include "stdio.h"

  2. int main(){
  3.     int year, month, sum, leap;

  4.     printf("Input Year and Month:  ");
  5.     scanf("%d %d", &year, &month);

  6.    switch(month){
  7.         case 1: sum = 31;break;
  8.         case 2: sum = 28;break;
  9.         case 3: sum = 31;break;
  10.         case 4: sum = 30;break;
  11.         case 5: sum = 31;break;
  12.         case 6: sum = 30;break;
  13.         case 7: sum = 31;break;
  14.         case 8: sum = 31;break;
  15.         case 9: sum = 30;break;
  16.         case 10: sum = 31;break;
  17.         case 11: sum = 30;break;
  18.         case 12: sum = 31;break;
  19.         default:printf("Input Error!\n");break;
  20.     }
  21.    
  22.     // 闰年和平年的判断
  23.     if(year%4==0 && year%100!=0 || year%100==0 && year%400==0){
  24.         leap = 1;
  25.     }else{
  26.         leap = 0;
  27.     }

  28.     if(leap == 1 && month==2){
  29.         sum++;
  30.     }

  31.     printf("Day's: %d\n",sum);

  32.     return 0;
  33. }
复制代码

评分

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

查看全部评分

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

使用道具 举报

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

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

使用道具 举报

 楼主| 发表于 2021-8-20 20:09:52 | 显示全部楼层
青出于蓝 发表于 2021-8-20 18:02
感觉这种乱输入根本没有意义。
题目主要是写核心代码,搞这些异常处理是为何?
没见过哪个题库的题目 ...

这。。。我下次会看看吧
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2021-8-20 20:11:09 | 显示全部楼层

这里是C++。。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-8-24 21:14:26 | 显示全部楼层
明天发答案
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-8-24 22:13:04 | 显示全部楼层
  1. n = input('输入两个空格隔开的正整数year和month:')

  2. n = n.split()

  3. n = [int(n[0]),int(n[1])]

  4. oy = [31,28,31,30,31,30,31,31,30,31,30,31]
  5. ly = [31,29,31,30,31,30,31,31,30,31,30,31]

  6. def check(year,month):
  7.     if year % 4 or year % 400: #不是闰年
  8.         print(oy[month - 1])
  9.     else: #是闰年
  10.         print(ly[month - 1])


  11. check(n[0],n[1])
复制代码

评分

参与人数 1鱼币 +1 收起 理由
人造人 + 1 鱼C有你更精彩^_^

查看全部评分

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

使用道具 举报

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

使用道具 举报

发表于 2021-8-31 21:18:45 | 显示全部楼层

不是啊,我以为什么都可以
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-18 20:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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