是想把这个万年历的每个日期就像贴图一样贴到页面上,但做好后发现每次重新输入查询日期页面布局都不会改变。请问是哪里出了错
#include<iostream>
#include<stdio.h>//c++头文件
#include<graphics.h>//图形库头文件
#include<conio.h>
using namespace std;
int year,month,day;
int runnian[12]={31,29,31,30,31,30,31,31,30,31,30,31};//数组存放每个月有多少天(闰年)
int pingnian[12]={31,28,31,30,31,30,31,31,30,31,30,31};//(平年)
char weekday[7][20]={"一","二","三","四","五","六","日"};//定义字符数组存储七天
int arr[6*7]={0};//定义数组(一维数组,初始化为0)
int map[6][7]={0};//二维数组,初始化为0
IMAGE dateimg[32];//定义图片变量(共32张图)
void loadResource(){//加载图片(用函数)
for(int i=0;i<32;i++){//批量加载的方式
char fileName[20]="";//设定它的名字,给他初始化为空,设定它的长度不会超过20
sprintf(fileName,"%d.bmp",i);//格式化打印函数(%d=数组里的元素像是0.bmp,1.bmp....)
loadimage(&dateimg[i],fileName);//开始批量加载,把32张图加载进去
}
}
int leap(int year){//判断输入的年份是不是闰年
if(year%4==0&&year%100!=0||(year%400==0))//如果year÷4能整除并且÷100不能整除,或者year÷400能整除(知乎找的求闰年方法)
return 1;//返回值是1就是闰年,
else
return 0;//否则就是平年
}
int daysum(int year,int month,int day,int runnian[],int pingnian[]){//计算到现在一共多少天(求和)
int sum=0;
int i=0;
for(i=1900;i<year;i++){//计算去年到1900年一共多少年有多少天(年份的天数)
if(leap(i)==1)
sum+=366;
else
sum+=365;
}
for(i=0;i<month-1;i++){//(month-1:3月对应的数组下标是2)?
if(leap(year)==1)//判断月份的天数
sum+=runnian[i];
else
sum+=pingnian[i];
}
return sum;
}
void initarr(int sum,int year,int month){//初始化一维数组
int countNum=0;
int i=0;//定义下标
int result=sum%7;//总天数除以7取余,余数就是空余天数(空余天数用0表示)
for(i=0;i<result;i++);{
arr[countNum++]=0;
}
if (leap(year)==1){//初始化后面剩下的日期,从1号开始※
for(i=1;i<runnian[month-1];i++){//循环判断月份 i要小于闰年的月份-1
arr[countNum++]=i;
}
}
else{//else是平年(和闰年一样的判断方法)
for(i=1;i<=pingnian[month-1];i++){//可以有31天,但如果只是小于只能到30天
arr[countNum++]=i;
}
}
}
void initmap(){//初始化二维数组※
int count=0;
for(int i=0;i<6;i++){
for(int j=0;j<7;j++){//嵌套循环
map[i][j]=arr[count++];
}
}
}
void printText(){//打印文字的函数
setbkmode(TRANSPARENT);//字体背景设成透明
settextstyle(30,0,"楷体");//设字体的高,宽,要什么字体
settextcolor(BLUE);//文字颜色
//打印标题
outtextxy(150,10,"万年历");//在指定地方打印文字(用坐标)
int x=50,y=100;
for(int i=0;i<7;i++){//用for循环打印一~日的日期
outtextxy(x+i*50,y,weekday[i]);
}
//贴图:贴日期↓
for(int i=0;i<6;i++){
for(int j=0;j<7;j++){
int x=50+j*50;//先定义第一张图是50,然后x和贴了多少列有关(图片像素大小都是50x50)所以要一直+50每一个都加50
int y=200+i*50;//因为标题占了50所以是100
putimage(x,y,&dateimg[map[i][j]]);//把图片贴出来
}
}
}
//一般日历开始日期是1900年(1900年1月1号是周一(b站看到的))
int main(){
loadResource();
printf("输入年,月,日:");
scanf("%d%d%d",&year,&month,&day);//输入三个整数,是year,month,day
int sum=daysum(year,month,day,runnian,pingnian);//定义一个sum,把他初始化为0
initarr(sum,year,month);//?
initgraph(500,500);//初始化图形环境
IMAGE img;//定义图片变量
loadimage(&img,"background.bmp");//加载图
putimage(0,0,&img);//把图片显示出来的代码(左上角是原点)
initmap();
printText();
_getch();//不闪屏的代码,可以让客户输字。包含在conio.h头文件里
closegraph();
return 0;
}