发布网友 发布时间:2022-05-03 08:49
共3个回答
热心网友 时间:2023-10-17 11:52
看要这样不? 下图:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int qq(int x,int t)
{
int i=0,p,s=365,y,j,b,k=1,h=1,u=0;
int a[13];
FILE *fp;
fp=fopen("tai.txt","a+");
i=0;k=1;h=1;u=0;
printf("\t^^^^^^^^^^^^^\t%d年%d月份\t^^^^^^^^^^^^^^^^\n\n",x,t);
fputs("\t^^^^^^^^^^^^^^^^",fp);
fputc(x/1000+48,fp);
fputc(x/100%10+48,fp);
fputc(x/10%10+48,fp);
fputc(x%10+48,fp);
fputs("年",fp);
fputc(t/10+48,fp);
fputc(t%10+48,fp);
fputs("月份^^^^^^^^^^^^^^^^^^^^^^^",fp);
fputs("\n\n",fp);
{for(p=1900;p<=x;p++)
if(p%4==0&&p%100!=0||p%400==0) i++;
if(x%4==0&&x%100!=0||x%400==0) s=i*366+(x-1900-i)*365;
else s=i*366+(x-1900-i)*365+1;
printf("\t日\t一\t二\t三\t四\t五\t六\n");
fputs("\t日\t一\t二\t三\t四\t五\t六\n",fp);
for(i=1;i<=t;i++)
{if(i==2||i==4||i==6||i==8||i==9||i==11) u+=31;
if(i==5||i==7||i==10||i==12) u+=30;
if(i==3){if(x%4==0&&x%100!=0||x%400==0) u+=29;
else u+=28;};
};
for(i=1;i<=12;i++)
{if(i==1||i==3||i==5||i==7||i==8||i==10||i==12) a[i]=31;
if(i==4||i==6||i==9||i==11) a[i]=30;
if(i==2){if(x%4==0&&x%100!=0||x%400==0) a[i]=29;
else a[i]=28;};
};
b=a[t];
y=(s%7+u)%7;
for(i=1;i<=6;i++)
{
for(j=1;j<=7;j++)
{
if(h<=y) {printf("\t");fputc('\t',fp);};
if(h>y) {if(k<=b) {printf("\t%d",k); fputc('\t',fp); if (k>9) fputc(k/10+48,fp),fputc(k%10+48,fp) ; else fputc(k+48,fp) ; };
if(k==b+1) {printf("\n");fputc('\n',fp);};
k++; };
h++;
};
printf("\n");fputs("\n",fp);
};
};
printf("\t***************************************************\n\n");
fputs("\t***************************************************",fp);
fputs("\n\n",fp);
fclose(fp);
return (0);
}
main()
{
int x,t,q,e,i,c,cc,xx,tt;
float p,pp;
FILE *fp;
if((fp=fopen("tai.txt","w"))==NULL)
{printf("error!");
exit(0);
}
fclose(fp);
do{
printf("请输入你要查询的年份和月份,\n");
printf("输入格式为:“年+空格+月+Enter”。(年份 >=1900)");
printf("(若想显示全年,则输“年+空格+0+Enter”)。比如“2012+空格+0+Enter”)\n");
printf("(若想输出XXXX到xxxx年的全年,则输“年+空格+年+Enter”)。比如“2010+空格+2012+Enter”)\n");
printf("(若想显示xxxx年的前或后x年,则输“年+空格+.x+Enter”)。比如2010的前3年,则输入“2010+空格+“-.3”+Enter”)\n");
printf("(若想显示xxxx年的m月前或后x个月,则输“年+空格+m.x+Enter”)。比如2010的5后3个月,则输入“2010+空格+“+5.3”+Enter”)\n");
scanf("%d%f",&x,&p);
pp=p*10;
c=(int)pp;
cc=c%10;
xx=x;
t=abs((int)p);
tt=t;
if(x<1900) {printf("输入不合要求,请重新输入!!");q=1;}
else if(x>=1900&&(t>0&&t<=12)&&cc==0)//输出指定的年月份。
{ qq(x,t);}
else if(x>=1900&&t==0&&cc==0)//输出指定的整年。
{ for(t=1;t<=12;t++)
qq(x,t);}
else if(x>=1900&&t>=1900)//输出xxxx年到xxxx年的整年。
{ for(i=xx;i<=tt;i++,x++)
for(t=1;t<=12;t++)
qq(x,t);}
else if(x>=1900&&p<1.0&&tt==0)//输出xxxx年的前或后x年。
{
if(cc+x<1900&&tt==0)
printf(" 输入的前年份过多。");
else if(cc>0)
{for(i=0;i<=cc;i++,x++)
for(t=1;t<=12;t++)
qq(x,t);}
else {for(i=cc;i<=0;i++,x--)
for(t=1;t<=12;t++)
qq(x,t);}
}
else if(x>=1900&&t<=12&&t>=1&&cc!=0)//输出xxxx年的m月前或后x个月。“呵呵 你自己想象“让前或后x个月问任何数””
{
if(cc>0)
{for(tt=0;tt<=cc;tt++,t++)
{ if(t>12) qq(x+1,t-12);
else qq(x,t);}}
else{for(tt=0;tt>=cc;tt--,t--)
{ if(t<1) qq(x-1,t+12);
else qq(x,t);}}
}
}
while(q==1);
scanf("%d",&e);
if(e)exit(0);
}
这是我的一个朋友写的!
参考一下!
热心网友 时间:2023-10-17 11:52
#include <stdio.h>热心网友 时间:2023-10-17 11:53
#include <stdio.h>热心网友 时间:2023-11-08 12:50
看要这样不? 下图:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int qq(int x,int t)
{
int i=0,p,s=365,y,j,b,k=1,h=1,u=0;
int a[13];
FILE *fp;
fp=fopen("tai.txt","a+");
i=0;k=1;h=1;u=0;
printf("\t^^^^^^^^^^^^^\t%d年%d月份\t^^^^^^^^^^^^^^^^\n\n",x,t);
fputs("\t^^^^^^^^^^^^^^^^",fp);
fputc(x/1000+48,fp);
fputc(x/100%10+48,fp);
fputc(x/10%10+48,fp);
fputc(x%10+48,fp);
fputs("年",fp);
fputc(t/10+48,fp);
fputc(t%10+48,fp);
fputs("月份^^^^^^^^^^^^^^^^^^^^^^^",fp);
fputs("\n\n",fp);
{for(p=1900;p<=x;p++)
if(p%4==0&&p%100!=0||p%400==0) i++;
if(x%4==0&&x%100!=0||x%400==0) s=i*366+(x-1900-i)*365;
else s=i*366+(x-1900-i)*365+1;
printf("\t日\t一\t二\t三\t四\t五\t六\n");
fputs("\t日\t一\t二\t三\t四\t五\t六\n",fp);
for(i=1;i<=t;i++)
{if(i==2||i==4||i==6||i==8||i==9||i==11) u+=31;
if(i==5||i==7||i==10||i==12) u+=30;
if(i==3){if(x%4==0&&x%100!=0||x%400==0) u+=29;
else u+=28;};
};
for(i=1;i<=12;i++)
{if(i==1||i==3||i==5||i==7||i==8||i==10||i==12) a[i]=31;
if(i==4||i==6||i==9||i==11) a[i]=30;
if(i==2){if(x%4==0&&x%100!=0||x%400==0) a[i]=29;
else a[i]=28;};
};
b=a[t];
y=(s%7+u)%7;
for(i=1;i<=6;i++)
{
for(j=1;j<=7;j++)
{
if(h<=y) {printf("\t");fputc('\t',fp);};
if(h>y) {if(k<=b) {printf("\t%d",k); fputc('\t',fp); if (k>9) fputc(k/10+48,fp),fputc(k%10+48,fp) ; else fputc(k+48,fp) ; };
if(k==b+1) {printf("\n");fputc('\n',fp);};
k++; };
h++;
};
printf("\n");fputs("\n",fp);
};
};
printf("\t***************************************************\n\n");
fputs("\t***************************************************",fp);
fputs("\n\n",fp);
fclose(fp);
return (0);
}
main()
{
int x,t,q,e,i,c,cc,xx,tt;
float p,pp;
FILE *fp;
if((fp=fopen("tai.txt","w"))==NULL)
{printf("error!");
exit(0);
}
fclose(fp);
do{
printf("请输入你要查询的年份和月份,\n");
printf("输入格式为:“年+空格+月+Enter”。(年份 >=1900)");
printf("(若想显示全年,则输“年+空格+0+Enter”)。比如“2012+空格+0+Enter”)\n");
printf("(若想输出XXXX到xxxx年的全年,则输“年+空格+年+Enter”)。比如“2010+空格+2012+Enter”)\n");
printf("(若想显示xxxx年的前或后x年,则输“年+空格+.x+Enter”)。比如2010的前3年,则输入“2010+空格+“-.3”+Enter”)\n");
printf("(若想显示xxxx年的m月前或后x个月,则输“年+空格+m.x+Enter”)。比如2010的5后3个月,则输入“2010+空格+“+5.3”+Enter”)\n");
scanf("%d%f",&x,&p);
pp=p*10;
c=(int)pp;
cc=c%10;
xx=x;
t=abs((int)p);
tt=t;
if(x<1900) {printf("输入不合要求,请重新输入!!");q=1;}
else if(x>=1900&&(t>0&&t<=12)&&cc==0)//输出指定的年月份。
{ qq(x,t);}
else if(x>=1900&&t==0&&cc==0)//输出指定的整年。
{ for(t=1;t<=12;t++)
qq(x,t);}
else if(x>=1900&&t>=1900)//输出xxxx年到xxxx年的整年。
{ for(i=xx;i<=tt;i++,x++)
for(t=1;t<=12;t++)
qq(x,t);}
else if(x>=1900&&p<1.0&&tt==0)//输出xxxx年的前或后x年。
{
if(cc+x<1900&&tt==0)
printf(" 输入的前年份过多。");
else if(cc>0)
{for(i=0;i<=cc;i++,x++)
for(t=1;t<=12;t++)
qq(x,t);}
else {for(i=cc;i<=0;i++,x--)
for(t=1;t<=12;t++)
qq(x,t);}
}
else if(x>=1900&&t<=12&&t>=1&&cc!=0)//输出xxxx年的m月前或后x个月。“呵呵 你自己想象“让前或后x个月问任何数””
{
if(cc>0)
{for(tt=0;tt<=cc;tt++,t++)
{ if(t>12) qq(x+1,t-12);
else qq(x,t);}}
else{for(tt=0;tt>=cc;tt--,t--)
{ if(t<1) qq(x-1,t+12);
else qq(x,t);}}
}
}
while(q==1);
scanf("%d",&e);
if(e)exit(0);
}
这是我的一个朋友写的!
参考一下!
热心网友 时间:2023-10-17 11:52
看要这样不? 下图:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int qq(int x,int t)
{
int i=0,p,s=365,y,j,b,k=1,h=1,u=0;
int a[13];
FILE *fp;
fp=fopen("tai.txt","a+");
i=0;k=1;h=1;u=0;
printf("\t^^^^^^^^^^^^^\t%d年%d月份\t^^^^^^^^^^^^^^^^\n\n",x,t);
fputs("\t^^^^^^^^^^^^^^^^",fp);
fputc(x/1000+48,fp);
fputc(x/100%10+48,fp);
fputc(x/10%10+48,fp);
fputc(x%10+48,fp);
fputs("年",fp);
fputc(t/10+48,fp);
fputc(t%10+48,fp);
fputs("月份^^^^^^^^^^^^^^^^^^^^^^^",fp);
fputs("\n\n",fp);
{for(p=1900;p<=x;p++)
if(p%4==0&&p%100!=0||p%400==0) i++;
if(x%4==0&&x%100!=0||x%400==0) s=i*366+(x-1900-i)*365;
else s=i*366+(x-1900-i)*365+1;
printf("\t日\t一\t二\t三\t四\t五\t六\n");
fputs("\t日\t一\t二\t三\t四\t五\t六\n",fp);
for(i=1;i<=t;i++)
{if(i==2||i==4||i==6||i==8||i==9||i==11) u+=31;
if(i==5||i==7||i==10||i==12) u+=30;
if(i==3){if(x%4==0&&x%100!=0||x%400==0) u+=29;
else u+=28;};
};
for(i=1;i<=12;i++)
{if(i==1||i==3||i==5||i==7||i==8||i==10||i==12) a[i]=31;
if(i==4||i==6||i==9||i==11) a[i]=30;
if(i==2){if(x%4==0&&x%100!=0||x%400==0) a[i]=29;
else a[i]=28;};
};
b=a[t];
y=(s%7+u)%7;
for(i=1;i<=6;i++)
{
for(j=1;j<=7;j++)
{
if(h<=y) {printf("\t");fputc('\t',fp);};
if(h>y) {if(k<=b) {printf("\t%d",k); fputc('\t',fp); if (k>9) fputc(k/10+48,fp),fputc(k%10+48,fp) ; else fputc(k+48,fp) ; };
if(k==b+1) {printf("\n");fputc('\n',fp);};
k++; };
h++;
};
printf("\n");fputs("\n",fp);
};
};
printf("\t***************************************************\n\n");
fputs("\t***************************************************",fp);
fputs("\n\n",fp);
fclose(fp);
return (0);
}
main()
{
int x,t,q,e,i,c,cc,xx,tt;
float p,pp;
FILE *fp;
if((fp=fopen("tai.txt","w"))==NULL)
{printf("error!");
exit(0);
}
fclose(fp);
do{
printf("请输入你要查询的年份和月份,\n");
printf("输入格式为:“年+空格+月+Enter”。(年份 >=1900)");
printf("(若想显示全年,则输“年+空格+0+Enter”)。比如“2012+空格+0+Enter”)\n");
printf("(若想输出XXXX到xxxx年的全年,则输“年+空格+年+Enter”)。比如“2010+空格+2012+Enter”)\n");
printf("(若想显示xxxx年的前或后x年,则输“年+空格+.x+Enter”)。比如2010的前3年,则输入“2010+空格+“-.3”+Enter”)\n");
printf("(若想显示xxxx年的m月前或后x个月,则输“年+空格+m.x+Enter”)。比如2010的5后3个月,则输入“2010+空格+“+5.3”+Enter”)\n");
scanf("%d%f",&x,&p);
pp=p*10;
c=(int)pp;
cc=c%10;
xx=x;
t=abs((int)p);
tt=t;
if(x<1900) {printf("输入不合要求,请重新输入!!");q=1;}
else if(x>=1900&&(t>0&&t<=12)&&cc==0)//输出指定的年月份。
{ qq(x,t);}
else if(x>=1900&&t==0&&cc==0)//输出指定的整年。
{ for(t=1;t<=12;t++)
qq(x,t);}
else if(x>=1900&&t>=1900)//输出xxxx年到xxxx年的整年。
{ for(i=xx;i<=tt;i++,x++)
for(t=1;t<=12;t++)
qq(x,t);}
else if(x>=1900&&p<1.0&&tt==0)//输出xxxx年的前或后x年。
{
if(cc+x<1900&&tt==0)
printf(" 输入的前年份过多。");
else if(cc>0)
{for(i=0;i<=cc;i++,x++)
for(t=1;t<=12;t++)
qq(x,t);}
else {for(i=cc;i<=0;i++,x--)
for(t=1;t<=12;t++)
qq(x,t);}
}
else if(x>=1900&&t<=12&&t>=1&&cc!=0)//输出xxxx年的m月前或后x个月。“呵呵 你自己想象“让前或后x个月问任何数””
{
if(cc>0)
{for(tt=0;tt<=cc;tt++,t++)
{ if(t>12) qq(x+1,t-12);
else qq(x,t);}}
else{for(tt=0;tt>=cc;tt--,t--)
{ if(t<1) qq(x-1,t+12);
else qq(x,t);}}
}
}
while(q==1);
scanf("%d",&e);
if(e)exit(0);
}
这是我的一个朋友写的!
参考一下!
热心网友 时间:2023-10-17 11:52
#include <stdio.h>热心网友 时间:2023-10-17 11:53
#include <stdio.h>热心网友 时间:2023-11-08 12:50
#include <stdio.h>热心网友 时间:2023-11-08 12:51
#include <stdio.h>