扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
#include "stdio.h"
成都创新互联长期为1000多家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为项城企业提供专业的成都网站设计、网站制作、外贸营销网站建设,项城网站改版等技术服务。拥有10年丰富建站经验和众多成功案例,为您定制开发。
#include "string.h"
//日期结构体
struct date
{
int y;//年
char m[4];//月
int d;//日
};
//比较年份
int cmpY(int a, int b)
{
//年份在90-10之间,代表1990年到2010年
if (a 100 a 10)
a +=1900;
else
a += 2000;
if (b 100 b 10)
b +=1900;
else
b += 2000;
if (a b)
return 1;
else if (a == b)
return 0;
else
return -1;
}
//比较月份
int cmpM(char *a, char *b)
{
//定义字符串数组,表示12个月份的英文
char m[12][4] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
int i, j;
for (i = 0; i 12; i++)
if (strcmp(a,m[i]) == 0)
break;
for (j = 0; j 12; j++)
if (strcmp(a,m[j]) == 0)
break;
if (i j)
return 1;
else if (i == j)
return 0;
else
return -1;
}
//综合年,月,日比较
int cmpYMD(struct date a, struct date b)
{
if (cmpY(a.y,b.y) == -1)
return -1;
else if (cmpY(a.y,b.y) == 1)
return 1;
else
{
if (cmpM(a.m,b.m) == -1)
return -1;
else if (cmpM(a.m,b.m) == 1)
return 1;
else
{
if (a.d b.d)
return 1;
else if(a.d == b.d)
return 0;
else
return -1;
}
}
}
void main()
{
//定义结构体数组
struct date dt[3]={
{ 0, "Jan", 11},
{99, "Feb", 22},
{ 8, "Mar", 2}};
struct date dtTemp;
int i, j;
//排序
for (i = 0; i 3-1; i++)
for (j = i+1; j 3; j++)
if (cmpYMD(dt[i],dt[j]) == 1)
{
dtTemp = dt[i];
dt[i] = dt[j];
dt[j] = dtTemp;
}
//输出排序过后的日期
for (i = 0; i 3; i++)
{
printf("%d %s %d\n",dt[i].y,dt[i].m,dt[i].d);
}
}
#include "stdio.h"
#include "string.h"
//日期结构体
struct date
{
char y[3];//年
char m[4];//月
int d;//日
};
//新增加,将字符串表示的年份转成整形表示
int intY(char *a)
{
int k = 0;
k += a[0] - '0';//十位上的数值
k = k*10 + (a[1] - '0');//十位上的数值乘以10再加上个位上的数值
return k;
}
//比较年份(修改后,参数类型变了)
int cmpY(char *y1, char *y2)
{
//新增加两条语句
int a = intY(y1);
int b = intY(y2);
//年份在90-10之间,代表1990年到2010年
if (a 10)
a += 1900;
else
a += 2000;
if (b 10)
b += 1900;
else
b += 2000;
if (a b)
return 1;
else if (a == b)
return 0;
else
return -1;
}
//比较月份
int cmpM(char *a, char *b)
{
//定义字符串数组,表示12个月份的英文
char m[12][4] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
int i, j;
for (i = 0; i b.d)
return 1;
else if(a.d == b.d)
return 0;
else
return -1;
}
}
}
void main()
{
//定义结构体数组
struct date dt[3]={
{"00", "Jan", 11},
{"99", "Feb", 22},
{"08", "Mar", 2}};
struct date dtTemp;
int i, j;
//排序
for (i = 0; i 3-1; i++)
for (j = i+1; j 3; j++)
if (cmpYMD(dt[i],dt[j]) == 1)
{
dtTemp = dt[i];
dt[i] = dt[j];
dt[j] = dtTemp;
}
//输出排序过后的日期
for (i = 0; i 3; i++)
{
//修改输出格式
printf("%s %s %d\n",dt[i].y,dt[i].m,dt[i].d);
}
}
//说明:你的程序存在几个语法错误,1、find(x,y,z)应改成find(int x,int y,int z)函数的定义语法;2、//int find(x,y,z);此处声明多余了,因为函数是在前面定义的,就无需再声明了,而且声明语法不对,应为find(int x,int y,int z);要加分号。3、格式控制符号用错了,应该是没有“,”的scanf("%d%d%d",year,month,date);即在%d%d之间没有逗号;//另外我也编了一个仅供参考,编译成功的,在后面。
//此为我对你的代码的改正,都做了注释说明。
#include
int x,y,z;
int find(int x,int y,int z)//find(x,y,z)应改成find(int x,int y,int z)
{int i,t,s,days=0;
if(x%4==0)t=1;
else t=0;
for(i=1;iy;i++)
{if(i==2)s=2-t;
else s=0;
days=days+30+i%2-s;
}
days=days+z;
return(days);
}
void main()
{//int find(x,y,z);此处声明多余了,因为函数是在前面定义的,就无需再声明了
int year,month,date,day;
scanf("%d%d%d",year,month,date);//格式控制符号用错了,应该是没有“,”的
day=find(year,month,date);
printf("THE DATE IS THE %dth DAYS\n",day);
}
//另外我也编了一个仅供参考,编译成功的
#include
void main()
{
int year,month,day,sum;
scanf("%d%d%d",year,month,day);
int p(int year);
int monday(int m);
int find(int y,int m,int d);
sum=find(year,month,day);
printf("THE DATE IS THE %dth DAYS\n",sum);
}
int p(int year){//判断是否为闰年
int leap;
if((year%4==0year%100!=0)||(year%400==0)) leap=1;
else leap=0;
return leap;
}
int mon_day(int y,int m){//判断月份的日子总数
int num;
switch (m)
{ case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:num=31;break;
case 4:
case 6:
case 9:
case 11:num=30;break;
case 2:{if (y(m=2)) num=29;
else num=28;
}break;
}
return num;
}
int find(int y,int m,int d){//计算日子,用遍历的方法,因为每个月份的天数是不同的,闰年时2月天数也不同
int sum=d;
while (m1){
m=m-1;
sum=sum+mon_day(y,m);}
return sum;
}
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流