c语言再次求错,小爷我改完了17个错误还是运行失败,扛不住了。。。
原题在此: 日历显示试设计一个程序显示2007年日历。用户可连续查看某月日历,直到键入‘N’或‘n’为止。 (2007年第一天为周一)
输出举例:
输出举例:
Enter month in 2007 to display calendar (1-12): 1
****************************************************
SUN MON TUE WED THU FRI SAT
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Would you like to display another month (y/n) ? y
Enter month in 2007 to display calendar (1-12): 13
ERROR- Enter month in range of (1-12)!
Enter month in 2007 to display calendar (1-12): 5
****************************************************
SUN MON TUE WED THU FRI SAT
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Would you like to display another month (y/n) ? N
求解思路:本题需根据用户输入待查月份计算该月前几个月的总天数(如查看4月份日历,需计算前3个月的总天数),根据总天数和该年第一天是星期几,计算待查月份的第一天是星期几,由此控制在输出日历中首先输出几段“空白”,之后将该月中各日期依次输出到日历中(注意若某日期为“星期六”,输出该日期后应换行),直到该月所有日期全都输出为止。输出“是否继续查询信息”,若输入为“y”或“Y”则继续查询,输入为“n”或“N”结束查询,(可用while无限循环和break实现,也可用其他方法)
另外,应判断输入月份是否在“1”到“12”之间(可用while无限循环和break实现,也可用其他方法)
我的程序:
#include<stdio.h> /*1*/
void main() /*2*/
{ /*3*/
int a[12]={31,28,31,30,31,30,31,31,30,31,30,31}; /*12个月份*/
int i,b=0,c,d=0,e=1,f,g; char y,n; /*5*/
loop:printf("Enter month in 2007 to dispiay calendar(1-12):"); /*6*/
scanf("%d",i); /*7*/
while(i>=1&&i<=12) /*8*/
{ /*9*/
if(i=1) b=1; /*b是某一月份前的空格数*/
else if(i>=2) /*11*/
for(c=0;c<=i-2;c++) /*12*/
{d+=a[c]; /*计算前i-1月总天数*/
b=d%7+1;}g=7-b; /*14*/
printf("****************************\n SUN MON TUE WED THU FRI SAT\n");/*15*/
for(;e<=b;e++) /*16*/
printf(" "); /*17*/
for(f=1;f<=a[i-1];f++) /*18*/
{if(f%7==g) printf("%4d\n",f); /*若除7余7-b则换行*/
else printf("%4d",f);} /*20*/
} /*21*/
printf("Error-Enter month in range of(1-12)!"); /*22*/
printf("Woulde you like to display another month(y/n)?"); /*23*/
getchar(); /*24*/
if(y=getchar()) goto loop; /*25*/
else printf("End");
}
嗯,我知道乱了点,方法有点笨
[ 本帖最后由 铁甲依然在 于 2010-4-14 15:42 编辑 ]