wangka 发表于 2021-8-18 20:42:45

计算天数 每周一练(3)(3星题目)

本帖最后由 wangka 于 2021-8-19 19:50 编辑

每周一练又来了(本周第二次){:10_256:}
题目描述
输入年份与月份,求该月共有多少天。
输入两个空格隔开的正整数year和month,分别表示年
份和月份输出对应这一年这个月的天数。
例子,分别输入2008 和2
输出29

static/image/hrline/1.gif
不要抄袭/灌水哦!

人造人 发表于 2021-8-18 20:42:46

Max472 发表于 2021-8-19 20:31
那要处理字母的话改成char类型?
但是那样年份不就越界了吗

#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");   
    while(1) {
      if(scanf("%d %d", &year, &month) == 2) break;
      while(getchar() != '\n');
      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);
    }
    else
      printf("%d\n", day);
   
    return 0;
}

青出于蓝 发表于 2021-8-18 20:56:48

n=input("输入:")
n=n.split("")
def a(e,f):
    if e==9 or e==4 or e==6 or e==11:
      print("30")
    elif f:
      print("29")
    elif not f:
      print("28")
    else:
      print("31")
if (int(n)%4==0 and int(n)%100):
    a(int(n),1)
elif int(n)%400:
    a(int(n),1)
else:
    a(int(n),0)

Max472 发表于 2021-8-18 21:24:49

本帖最后由 Max472 于 2021-8-18 21:33 编辑

#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);
    }
    else
      printf("%d\n", day);
   
    return 0;
}

鑫空闪烁 发表于 2021-8-18 22:23:49

你这题目错了吧   2009年不是闰年是平年 2月份只有28天而不是29天

鑫空闪烁 发表于 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");
                }
        }
}


鑫空闪烁 发表于 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");
        }
}

青出于蓝 发表于 2021-8-19 07:50:38

啊.....
抱歉抱歉,眼瞎....
原来要求用c...

柿子饼同学 发表于 2021-8-19 12:20:30

nonleap_year =
leap_year =

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

year = int(year_month)
month = int(year_month)

if year % 400 == 0:
    print(leap_year)
else:
    if year % 4 == 0 and year % 100 != 0:
      print(leap_year)
    else:
      print(nonleap_year)

{:10_257:}

孤独自学丫 发表于 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;
}

wangka 发表于 2021-8-19 19:39:07

鑫空闪烁 发表于 2021-8-18 22:23
你这题目错了吧   2009年不是闰年是平年 2月份只有28天而不是29天

打错了,不好意思,谢指正

wangka 发表于 2021-8-19 19:39:44

青出于蓝 发表于 2021-8-19 07:50
啊.....
抱歉抱歉,眼瞎....
原来要求用c...

没事

wangka 发表于 2021-8-19 19:44:50

Max472 发表于 2021-8-18 21:24


这错太多了(可以改)。1,输入没有间隔。2,输出有误。3,你的重新输入while有没有停止(差点把我电脑炸了{:10_285:})

wangka 发表于 2021-8-19 19:46:16

本帖最后由 wangka 于 2021-8-19 19:49 编辑

鑫空闪烁 发表于 2021-8-18 22:58
#include

void main(){


void main ()改成int main
还有如果输入不符合的东西(如13月,字母等)没有重新输入

wangka 发表于 2021-8-19 19:49:42

柿子饼同学 发表于 2021-8-19 12:20


格式

wangka 发表于 2021-8-19 19:51:38

孤独自学丫 发表于 2021-8-19 17:17
#include

int main(void)


会报错

Max472 发表于 2021-8-19 20:05:20

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

没有啊,我用的 code blocks 20.03

wangka 发表于 2021-8-19 20:08:25

Max472 发表于 2021-8-19 20:05
没有啊,我用的 code blocks 20.03

你随便打几个字母呢?(电脑炸了不要怪我)

Max472 发表于 2021-8-19 20:15:13

wangka 发表于 2021-8-19 20:08
你随便打几个字母呢?(电脑炸了不要怪我)

{:10_282:}

wangka 发表于 2021-8-19 20:15:56

Max472 发表于 2021-8-19 20:15


什么意思
页: [1] 2
查看完整版本: 计算天数 每周一练(3)(3星题目)