这是一个打印日历的代码,
我下面的代码有一处有一个问题(加粗的那一个部分),我在定义变量的时候,为什么交换了顺序以后就变好了,想请问一下这是为什么?
#include <stdio.h>
#include <math.h>
main()
{
int a[11]; //定义每个月数组
int z; //定义判断月初星期几的条件
int year,x=0,y; //定义输入的年份,总天数x,每年天数y
int i,j; //定义数组、循环变量
/*
int i,j; //定义数组、循环变量
int a[11]; //定义每个月数组
int z; //定义判断月初星期几的条件
int year,x=0,y; //定义输入的年份,总天数x,每年天数y
这里有一个bug,虽然不是太明白,但是交换一下位置,它就变好了。
*/
printf("请输入年份\n");
scanf("%d",&year); //获取年份
for(i=1;i<year;i++) //判断瑞年
{
if((i%4==0)&&(i%100!=0)||(i%400==0))
y=366;
else
y=365;
x=x+y;
}
x=x+1; //X表示到本年第一天的总天数
for(i=1;i<=12;i++)
{
printf("\n\n %d月\n\n",i);
printf("日 一 二 三 四 五 六 \n");
if(i==1||i==3||i==5||i==7||i==8||i==10||i==12) //确定每个月份的天数
a[i-1]=31;
else if(i==4||i==6||i==9||i==11)
a[i-1]=30;
else if(year%4==0&&year%100!=0||year%400==0)
a[i-1]=29;
else
a[i-1]=28;
z=x%7; //判断第一天是星期几
for(j=0;j<z;j++) //输出空格
printf(" ");
for(j=1;j<=a[i-1];j++) //输出日历,
{
printf("%2d",j);
if((z+j)%7==0) //判断换行
printf("\n");
else
printf(" ");
}
x=x+a[i-1]; //加到下一个月
}
}
不偏不易
jfhdibrbfjd
NightRaid
相关分类