求C语言高人帮我修改一个程序,最重要求:1.输入年月日,输出星期几 2.输入年份,输出这一年的日历

#include<stdio.h></stdio.h>
int main()
{
int y,m,i,d,a,j,k,n,t;
printf("请输入您想查询的年份:\n");
scanf("%4d",&y);
printf("请输入您想查询的月份:\n");
scanf("%2d",&m);
if(m<1||m>12) printf("您输入的不正确!\n");
a=(y-1)*365+(y-1)/4-(y-1)/100+(y-1)/400;
if((y%4==0&&y%100!=0)||(y%400==0))
i=1;
else i=0;
switch(m)
{ case 1: d=0; break;
case 2: d=31; break;
case 3: d=59+i; break;
case 4: d=90+i; break;
case 5: d=120+i; break;
case 6: d=151+i; break;
case 7: d=181+i; break;
case 8: d=212+i; break;
case 9: d=243+i; break;
case 10: d=273+i; break;
case 11: d=304+i; break;
case 12: d=334+i; break;
}
printf("%4d年%2d月:\n",y,m);
printf(" 一 二 三 四 五 六 日\n");
if(m==1||m==3||m==5||m==7||m==8||m==10||m==12) n=31;
if(m==4||m==6||m==9||m==11) n=30;
if(m==2) n=(28+i);
t=(a+d)%7;
for(j=1;j<=t;j++)
printf(" ");
for(k=1;k<=n;k++)
{
printf(" %2d",k);
if((k+t)%7==0) printf("\n");
}
printf("\n");
while (1);
return 0;
}
(还有,我想知道最后三行是什么意思,作用是什么),很急,要求明天中午之前给我,我会有追加分数的,谢谢

【数据结构】:
建议用结构体链表,不过全局变量也行,反正不大,没记忆功能无所谓
(1)必须要有 年份变量、月份变量、日期变量、星期变量、闰年标识
(2)必须要有 年份、月份、闰年标志以及日期临时变量、星期临时变量
【算法】:
(1)判断年份输入是否正确y>0&&y<=2011?对的继续,错的重输
(2)判断月份输入是否正确m>0&&m<13?对的继续,空的直接转到输出一年日历,错的重输
(3)判断日起输入是否正确d>0&&d<32?错的重输,对的继续判断
if(m!=2){
if((m==4||m==6||m==9||m==11))&&d>30)printf(错误重输)
}
else{
if(y不是闰年&&d>28) printf(错误重输)
else i=1;//这个i应该是闰年标志flag把
}
(4)计算星期几
(5)循环输出
while(需要输出整年日历&&没有输出完毕){
输出当月日历;
月份++;
最后一天是30?31?28?29?确定;
第一天是星期几确定(以及前面空几格);

【主要函数】:
(1)年月日判断
(2)星期判断
(3)日历循环输出
分开来是因为这样干净看得清楚,全放在一块儿,到时候有很多重复的程序段,调试起来你会崩溃的……

注意:
(1)注意题目要求,输入年份就要输出一年份的日历,就是说你在判断月份的时候是不是还要加个空条件判断?用int 的话最好先全初始化为0,不然不好判断。
(2)后边那个while(1);一点用都没有,这程序是你写的还是程序改错题要你改的?
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-05-03
最后三句printf(“\n”)表示换行,while(1);表示无限空循环,即死循环。
相似回答