鱼C论坛

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

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

[复制链接]
发表于 2021-8-19 20:15:56 | 显示全部楼层
ctrl + c 可以让程序停下来
GIF.gif
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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


知道的,只不过看这东西刷屏有点疯
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

没想到字母这回事
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

上一个每周一练也是这个问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

那要处理字母的话改成char类型?
但是那样年份不就越界了吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-19 21:58:31 | 显示全部楼层
好的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-19 23:39:18 | 显示全部楼层
本帖最后由 lgh202020 于 2021-8-19 23:44 编辑
def year(y):
                if y % 100 == 0:
                                if y % 400 == 0:
                                                return 1
                                else:
                                                return 0
                else:
                                if y % 4 == 0:
                                                return 1
                                else:
                                                return 0
def month(m,y):
                    if m > 12 or m < 1:
                        print('数据输入错误')
                if m == 2:
                                if y == 1:
                                                return 29
                                else:
                                                return 28
                elif m != 2:
                                if m >= 7:
                                                if m % 2 == 0:
                                                                return 30
                                                else:
                                                                return 31
                                elif m < 7:
                                                if m % 2 == 0:
                                                                return 31
                                                else:
                                                                return 30
a = input()
a = a.split('  ')
print(month(int(a[1]),year(int(a[0]))))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

加个rewind(stdin);清除输入缓冲区
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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


int main()
{   int year,mon;
    int days[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    int day =0;
    
    
    if(scanf("%d %d",&year,&mon)!=EOF)
    { 
        if ((year%4==0)&&(year%100!=0)||(year%400==0))
        {
            if (mon==2)
                day=days[mon-1]+1;
        }
        day=days[mon-1];
    }
    
    return day;
}

评分

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

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> 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 无条件支持楼主!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

int main(){
    int year, month, sum, leap;

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

   switch(month){
        case 1: sum = 31;break;
        case 2: sum = 28;break;
        case 3: sum = 31;break;
        case 4: sum = 30;break;
        case 5: sum = 31;break;
        case 6: sum = 30;break;
        case 7: sum = 31;break;
        case 8: sum = 31;break;
        case 9: sum = 30;break;
        case 10: sum = 31;break;
        case 11: sum = 30;break;
        case 12: sum = 31;break;
        default:printf("Input Error!\n");break;
    } 
    
    // 闰年和平年的判断
    if(year%4==0 && year%100!=0 || year%100==0 && year%400==0){
        leap = 1;
    }else{
        leap = 0;
    }

    if(leap == 1 && month==2){
        sum++;
    }

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

    return 0;
}

评分

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

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

够严谨!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

这。。。我下次会看看吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-8-20 20:10:32 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

这里是C++。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-8-24 21:14:26 | 显示全部楼层
明天发答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

n = n.split()

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

oy = [31,28,31,30,31,30,31,31,30,31,30,31]
ly = [31,29,31,30,31,30,31,31,30,31,30,31]

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


check(n[0],n[1])

评分

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

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-8-29 20:13:46 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

不是啊,我以为什么都可以
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 17:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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