我是靠谱客的博主 喜悦小懒猪,最近开发中收集的这篇文章主要介绍C语言结构体怎么判断是否输入重复,C语言,使用结构体读入两个在同一年的日期,判断日期是否合法,并计算两个日期之间相差的天数。结构体定义如下:...,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

如下:

typedef struct date

{

int year;

int month;

int day;

};

提示:

1.使用如下函数完成相应功能

int isleapyear(int y); //计算是否为闰年

int islegal(Date x); //计算日期是否合法

int calcday(Date x);//计算日期是当年的第几天,用于计算两个日期之间天数的差值

2.用于一维数组表示一年每月含有的天数

int dayofmonth[12] = {31,28,31,30,31,30,31,31,30,31,30,31};

3.需要考虑闰年的情况

输入:输入为两行,第一行为三个整数,表示第一个日期的年月日;第二行为三个整数,表示第二个日期的年月日。

输入提示信息:"Please input the first date:”

输入格式:"%d %d %d"

输入提示信息:"Please input the second date:”

输入格式:"%d %d %d"

如:

Please input the first date: 2016 2 30

Please input the second date:2016 5 10

Please input the first date: 2016 2 10

Please input the second date:2015 12 9

Please input the first date: 2016 5 1

Please input the second date:2015 6 1

输出:输出一行是一个整数,代表两个日期之间相差的天数。若两个日期不在同一年,或者日期不合法,输出-1。

输出提示信息:"Day between two dates:”

输出格式:"%d"

输出样例:

Day between two dates:-1

Day between two dates:-1

Day between two dates::-1

#include

#include

typedef struct date

{

int year;

int month;

int day;

}Date;

int isleapyear(int y);

int islegal(Date a);

int calcday(Date a);

int main(){

int i=1;

Date a;

Date b;

printf("Please input the first date:");

scanf("%d %d %d",&(a.year),&(a.month),&(a.day));

printf("Please input the second date:");

scanf("%d %d %d",&(b.year),&(b.month),&(b.day));

printf("Day between two dates:");

if(a.year != b.year){

printf("-1");

}else if(islegal(a)==-1 ||islegal(b)==-1){

printf("-1");

}else{

printf("%d",calcday(b)-calcday(a));

}

}

int isleapyear(int y){

int i=0;

if((y%4==0 && y%100!=0) || (y%400==0)){

i=1;

}

return i;

}

int islegal(struct date a){

int dayofmonth[12] = {31,28,31,30,31,30,31,31,30,31,30,31};

if(isleapyear(a.year)==1){

dayofmonth[1]++;

}

if(a.day<=dayofmonth[a.month-1] && a.day>0 && a.month>0 && a.month<13){

return 1;

}else{

return -1;

}

}

int calcday(struct date a){

int i,day=0;

int dayofmonth[12] = {31,28,31,30,31,30,31,31,30,31,30,31};

if(isleapyear(a.year)==1){

dayofmonth[1]++;

}

for(i=0;i<=a.month-2;i++){

day=dayofmonth[i]+day;

}

day=day+a.day;

return day;

}

最后

以上就是喜悦小懒猪为你收集整理的C语言结构体怎么判断是否输入重复,C语言,使用结构体读入两个在同一年的日期,判断日期是否合法,并计算两个日期之间相差的天数。结构体定义如下:...的全部内容,希望文章能够帮你解决C语言结构体怎么判断是否输入重复,C语言,使用结构体读入两个在同一年的日期,判断日期是否合法,并计算两个日期之间相差的天数。结构体定义如下:...所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部