| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2939 人关注过本帖
标题:这题该怎么写哇~~~
只看楼主 加入收藏
小晓鸭呀
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2020-4-4
结帖率:40%
收藏
 问题点数:0 回复次数:9 
这题该怎么写哇~~~
请编写函数,按“年/月/日”的格式输入日期。

函数原型
int DateInput(int *year, int *month, int *day);

      
   
说明:参数 year、month和day 分别为指示年、月和日的指针。若用户输入的数据正确,则函数值为 1(真),并数值保存到指针所指变量中,否则为 0(假),不保存数值。

裁判程序
#include <stdio.h>

int IsLeapYear(int year);
int MaxDayMonth(int year, int month);
int IsValidDate(int year, int month, int day);
int DateInput(int *year, int *month, int *day);

int main()
{
    int y, m, d;
    if (DateInput(&y, &m, &d))
    {
        printf("%d %d %d\n", y, m, d);
    }
    else
    {
        puts("Error");
    }
    return 0;
}

......

/* 你提交的代码将被嵌在这里 */

      
   
输入样例1
2008/8/8

      
   
输出样例1
2008 8 8

      
   
输入样例2
2019/2/29

      
   
输出样例2
Error

      
   
输入样例3
abcd

      
   
输出样例3
Error
搜索更多相关主题的帖子: year 数值 输入 int 输出 
2020-05-05 01:18
八画小子
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:37
帖 子:709
专家分:2063
注 册:2010-11-11
收藏
得分:0 
能写多少,就写多少,然后大家再看你的问题。
2020-05-05 01:25
小晓鸭呀
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2020-4-4
收藏
得分:0 
回复 2楼 八画小子
就是我不知道我理解的对不对
我理解的是函数IsLeapYear()是判断年份是否为闰年      函数MaxDayMonth()是判断某个月份最大天数      函数IsValidDate()是判断输入的年月日是否合理   
然后我就写了下面的程序,但是不对
题目只让我们写函数DateInput()    其他函数直接出现在题目里    我不知道咋弄了
可以帮我看看吗   谢谢
int DateInput(int *year, int *month, int *day)
{
    scanf("%d", year);
      getchar();
      scanf("%d", month);
      getchar();
      scanf("%d", day);
    if(IsValidDate(*year, *month, *day))
    {
        return 1;
    }
    else
    {
        return 0;
    }
}
2020-05-05 22:03
thhkb
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:25
专家分:107
注 册:2020-4-11
收藏
得分:0 
估计就是用 与 来判断年月日,

潜水,灌水。
2020-05-05 22:16
小晓鸭呀
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2020-4-4
收藏
得分:0 
回复 4楼 thhkb
具体什么意思哇
我搞不懂。。(哭了)
2020-05-05 23:44
fulltimelink
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:7
帖 子:171
专家分:752
注 册:2020-4-1
收藏
得分:0 
DateInput 需要调用IsValidDate来判断输入的日期是否合法
IsValidDate需要调用MaxDayMonth来判断当前天数(年和月也判断下)是否合法
MaxDayMonth需要调用IsLeapYear来判断当前年份是不是闰年,因为闰年时2月份有29

应该是让你4个函数都自己实现

2020-05-06 11:28
吕孟伟
Rank: 8Rank: 8
等 级:贵宾
威 望:27
帖 子:200
专家分:870
注 册:2018-10-4
收藏
得分:0 
程序代码:
#include<string.h>
#include<stdio.h>
int IsLeapYear(int year);
int IsValidDate(int year, int month, int day);

int MaxDayMonth(int year, int month);

int DateInput(int *year, int *month, int *day);
int main(void)
{
    int y, m, d;
    if (DateInput(&y, &m, &d))
    {
        printf("%d %d %d\n", y, m, d);
    }
    else
    {
        puts("Error");
    }
    return 0;
    return 0;
}
int DateInput(int *year, int *month, int *day)
{
    scanf("%d/%d/%d", year, month, day);
    if(IsValidDate(*year, *month, *day)){
        return 1;
    }else{
        return 0;
    }
    
    
}
int IsLeapYear(int year)
{
    if((year%4 == 0 && year%100 != 0)||(year%400 == 0 && year%3200 != 0)||year%172800 == 0){
        return 1;
    }else{
        return 0;
    }
}
int IsValidDate(int year, int month, int day)
{
    if((year>1) && (month>=1 && month<=12) && (day>=1 && day<=31)){
        if(MaxDayMonth(year, month) == day||IsLeapYear(year)){
            return 1;
        }else if(!IsLeapYear(year)&&day!=29) {
            return 1;
        }else{
            return 0;
        }
    }else{
        return 0;
    }
}
int MaxDayMonth(int year, int month)
{
    if(IsLeapYear(year) && 2 == month){
        return 29;
    }else{
        return 0;
    }
}

输出:
D:\VScode>test6
2019/2/29
Error

D:\VScode>test6
2008/8/8
2008 8 8

D:\VScode>test6
2008/2/29
2008 2 29

D:\VScode>test6
2019/4/2
2019 4 2

D:\VScode>test6
abcd
Error

[此贴子已经被作者于2020-5-6 19:43编辑过]


借用一下侯捷的话:勿在浮沙筑高台。
2020-05-06 13:00
fulltimelink
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:7
帖 子:171
专家分:752
注 册:2020-4-1
收藏
得分:0 
回复 7楼 吕孟伟
代码应该稍微有些问题,
你没处理非闰年的情况,比如2019/4/2  会返回error
还有,DateInput函数里直接scanf到指针变量了,不能满足DateInput return 0 时不赋值的要求
2020-05-06 18:01
吕孟伟
Rank: 8Rank: 8
等 级:贵宾
威 望:27
帖 子:200
专家分:870
注 册:2018-10-4
收藏
得分:0 
回复 8楼 fulltimelink
IsValidDate函数已修改,想请问下,DateInput return 0 时不赋值该怎么处理呢?是要把三个指针赋给空指针吗?

借用一下侯捷的话:勿在浮沙筑高台。
2020-05-06 19:45
fulltimelink
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:7
帖 子:171
专家分:752
注 册:2020-4-1
收藏
得分:0 
回复 9楼 吕孟伟
并不是所有的闰年都是合法的日期,比如2008/2/31
至于不赋值那个,个人感觉应该是在日期合法后再修改指针,不合法不处理
2020-05-06 23:27
快速回复:这题该怎么写哇~~~
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021288 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved