C++出现error C2181: illegal else without matching if 20
#include<stdio.h>#include<time.h>intmain(void){intyear,month,day;intdays=0,i,j,n,m,k,...
#include<stdio.h>
#include<time.h>
int main(void)
{int year,month,day;
int days=0,i,j,n,m,k,o;
int m1[]={31,28,31,30,31,30,31,31,30,31,30,31};
int m2[]={31,29,31,30,31,30,31,31,30,31,30,31};
time_t today;
struct tm *p;
time(&today);
p=localtime(&today); //转换成本地时间的日期
year=p->tm_year+1900;
month=p->tm_mon+1;
day=p->tm_mday;
printf(" %4d-%02d\n",year,month); //打印出年月
if(year>=0) //由于已知公元元年1月1日为星期一,所以以改日为基准计算
for(i=0;i<year;i++)
{ if((i%4==0 && i%100!=0)||i%400==0) //判断是否为闰年
days=days+366;
else days=days+365;
}
if((year%4==0 && year%100!=0)||year%400==0) //判断是否为闰年
for(j=0;j<month-1;j++)
{days=days+m2[j];
m=m2[month]; //算出当月天数
}
else for(j=0;j<month-1;j++)
{days=days+m1[j];
m=m1[month]; //算出当月天数
}
days=days+day-2; //元年1月1日为星期一,days得出与之前的那个星期天相差的天数
n=days%7; //余数n为0代表为星期天,1代表为星期一…..
else printf ("日期错误\n");
if(day>1)
k=(7-(day-n+6)%7)%7; //通过转换算出此月第一天是星期几
else if(day==1)
k=n;
printf(" sun mon tue wen thu fri sat\n");
for(o=0;o<k;o++)
printf(" "); //1号前的星期所对应的天数用空格打掉
for(o=k;o<k+m;o++)
{
printf("%4d",o-k+1); //从1号到这个月的月底按排序打出来
if(o%7==6)
printf("\n"); //换行保持每个星期对其
}
return 0;
} 展开
#include<time.h>
int main(void)
{int year,month,day;
int days=0,i,j,n,m,k,o;
int m1[]={31,28,31,30,31,30,31,31,30,31,30,31};
int m2[]={31,29,31,30,31,30,31,31,30,31,30,31};
time_t today;
struct tm *p;
time(&today);
p=localtime(&today); //转换成本地时间的日期
year=p->tm_year+1900;
month=p->tm_mon+1;
day=p->tm_mday;
printf(" %4d-%02d\n",year,month); //打印出年月
if(year>=0) //由于已知公元元年1月1日为星期一,所以以改日为基准计算
for(i=0;i<year;i++)
{ if((i%4==0 && i%100!=0)||i%400==0) //判断是否为闰年
days=days+366;
else days=days+365;
}
if((year%4==0 && year%100!=0)||year%400==0) //判断是否为闰年
for(j=0;j<month-1;j++)
{days=days+m2[j];
m=m2[month]; //算出当月天数
}
else for(j=0;j<month-1;j++)
{days=days+m1[j];
m=m1[month]; //算出当月天数
}
days=days+day-2; //元年1月1日为星期一,days得出与之前的那个星期天相差的天数
n=days%7; //余数n为0代表为星期天,1代表为星期一…..
else printf ("日期错误\n");
if(day>1)
k=(7-(day-n+6)%7)%7; //通过转换算出此月第一天是星期几
else if(day==1)
k=n;
printf(" sun mon tue wen thu fri sat\n");
for(o=0;o<k;o++)
printf(" "); //1号前的星期所对应的天数用空格打掉
for(o=k;o<k+m;o++)
{
printf("%4d",o-k+1); //从1号到这个月的月底按排序打出来
if(o%7==6)
printf("\n"); //换行保持每个星期对其
}
return 0;
} 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询