C语言 日期(年月日 ) 排序日期是一个struct格式为 00 Jan 11 // 00年一月 11日99 Feb 22// 99年二月 22日08 Mar 02// 03年三月2日要求按照从小到大排序,年份在90-10之间,代表1990年到2010年.排序当然是年

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/15 01:25:10
C语言 日期(年月日 ) 排序日期是一个struct格式为 00 Jan 11 // 00年一月 11日99 Feb 22// 99年二月 22日08 Mar 02// 03年三月2日要求按照从小到大排序,年份在90-10之间,代表1990年到2010年.排序当然是年

C语言 日期(年月日 ) 排序日期是一个struct格式为 00 Jan 11 // 00年一月 11日99 Feb 22// 99年二月 22日08 Mar 02// 03年三月2日要求按照从小到大排序,年份在90-10之间,代表1990年到2010年.排序当然是年
C语言 日期(年月日 ) 排序
日期是一个struct
格式为 00 Jan 11 // 00年一月 11日
99 Feb 22// 99年二月 22日
08 Mar 02// 03年三月2日
要求按照从小到大排序,年份在90-10之间,代表1990年到2010年.
排序当然是年月日的顺序排,先排年,再排月,再排日.

C语言 日期(年月日 ) 排序日期是一个struct格式为 00 Jan 11 // 00年一月 11日99 Feb 22// 99年二月 22日08 Mar 02// 03年三月2日要求按照从小到大排序,年份在90-10之间,代表1990年到2010年.排序当然是年
#include "stdio.h"
#include "string.h"
//日期结构体
struct date
{
\x09int y;//年
\x09char m[4];//月
\x09int d;//日
};
//比较年份
int cmpY(int a, int b)
{
\x09//年份在90-10之间,代表1990年到2010年
\x09if (a < 100 && a > 10)
\x09\x09a +=1900;
\x09else
\x09\x09a += 2000;
\x09if (b < 100 && b > 10)
\x09\x09b +=1900;
\x09else
\x09\x09b += 2000;
\x09if (a > b)
\x09\x09return 1;
\x09else if (a == b)
\x09\x09return 0;
\x09else
\x09\x09return -1;
}
//比较月份
int cmpM(char *a, char *b)
{
\x09//定义字符串数组,表示12个月份的英文
\x09char m[12][4] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
\x09int i, j;
\x09for (i = 0; i < 12; i++)
\x09\x09if (strcmp(a,m[i]) == 0)
\x09\x09\x09break;
\x09for (j = 0; j < 12; j++)
\x09\x09if (strcmp(a,m[j]) == 0)
\x09\x09\x09break;
\x09
\x09if (i < j)
\x09\x09return 1;
\x09else if (i == j)
\x09\x09return 0;
\x09else
\x09\x09return -1;
}
//综合年,月,日比较
int cmpYMD(struct date a, struct date b)
{
\x09if (cmpY(a.y,b.y) == -1)
\x09\x09return -1;
\x09else if (cmpY(a.y,b.y) == 1)
\x09\x09return 1;
\x09else
\x09{
\x09\x09if (cmpM(a.m,b.m) == -1)
\x09\x09\x09return -1;
\x09\x09else if (cmpM(a.m,b.m) == 1)
\x09\x09\x09return 1;
\x09\x09else
\x09\x09{
\x09\x09\x09if (a.d > b.d)
\x09\x09\x09\x09return 1;
\x09\x09\x09else if(a.d == b.d)
\x09\x09\x09\x09return 0;
\x09\x09\x09else
\x09\x09\x09\x09return -1;
\x09\x09}
\x09}
}
void main()
{
\x09//定义结构体数组
\x09struct date dt[3]={
\x09\x09{ 0, "Jan", 11},
\x09\x09{99, "Feb", 22},
\x09\x09{ 8, "Mar", 2}};
\x09struct date dtTemp;
\x09int i, j;
\x09//排序
\x09for (i = 0; i < 3-1; i++)
\x09\x09for (j = i+1; j < 3; j++)
\x09\x09\x09if (cmpYMD(dt[i],dt[j]) == 1)
\x09\x09\x09{
\x09\x09\x09\x09dtTemp = dt[i];
\x09\x09\x09\x09dt[i] = dt[j];
\x09\x09\x09\x09dt[j] = dtTemp;
\x09\x09\x09}
\x09
\x09//输出排序过后的日期
\x09for (i = 0; i < 3; i++)
\x09{
\x09\x09printf("%d %s %d\n",dt[i].y,&dt[i].m,dt[i].d);
\x09}
}

C语言 日期(年月日 ) 排序日期是一个struct格式为 00 Jan 11 // 00年一月 11日99 Feb 22// 99年二月 22日08 Mar 02// 03年三月2日要求按照从小到大排序,年份在90-10之间,代表1990年到2010年.排序当然是年 C语言问题,定义一个表示日期的结构体变量(包括年月日),写一个函数,返回值为某天是当年的第几天 c语言年月日计算再次给出任意一个年月日(年>1900),现在我们不能只是直接计算,要先判断给出的日期是否合法,对于非法的日期要给出错误提示信息,合法的日期要再计算是星期几.输入:年 赵州桥建立日期赵州桥是什么时候建的?(具体到年月日)这是一个BT的问题我知道. 定义一个日期类Date,Date类有年月日三个数据,并对日期进行设置,用年-月-日的格式输出日期,还要判断是 英语的日期表达顺序是年月日还是日月年? 已知公元1年1月1日是星期一,计算输入的年月日是星期几?(用C语言编写)思路:计算出输入的年月日和公元1年1月1日距离多少天.计算公元1年到输入日期的上一年年底有多少天.再计算输入的 “始于”英语怎么说比如在日期前 日期是年月日的 4.设int year,month,day分别表示一个日期中的年月日,试编程求 德语日期写法是日月年还是年月日?不是!是日月年还是月日年! 【民国日期换算】公元1993年8月13日是民国多少年月日阿? 大一 C语言程序设计.(简单点的,刚学)输入三个正整数,分别代表一个日期的年、月、日,计算并在屏幕上显示输入日期后一天的年、月、日.例如:输入:2007 2 28输出:2007 3 11)检查年月日的 英式英语中日期的正确写法和读法(年月日) C语言编程 任意输入两个日期,计算两个日期之间的天数 vb 给定年月日(1900年以后的日期),求这一天是星期几.不可使用标准函数. 公元1年1月1日是星期一 用C语言编修已知1980年1月1日是星期二,输入任意一个日期计算出该天是星期几 求C语言高手帮我完成一下大学编程作业该程序功能是输入一个日期(含年、月、日),输出该日期是该年度中的第几天.(注意区分是否闰年,闰年的二月份是29天,否则是28天).说明:闰年必须 C语言计算两日期之间的天数