这道c语言题目错在哪里啊?

这是我编写的万年历程序:#include"stdio.h"intleap0year(intyear){inti=1;if(year%4!=0||year%100==0&&... 这是我编写的万年历程序:
#include "stdio.h"
int leap0year(int year)
{ int i=1;
if(year%4!=0||year%100==0&&year%400!=0)i=0;
return i;}
int firstday0week(int year)
{ int j=0;
j=(year+(year-1)/4-(year-1)/100+(year-1)/400)%7;
return j;}
main()
{ char *month0name[12]={"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"};
int numday0month[]={31,28,31,30,31,30,31,31,30,31,30,31};
int firstday0month[12],workarray[12];
int year,i,n,m;
printf("输入年份:");
scanf("%d",&year);
if(leap0year(year)==1)numday0month[1]=29;
firstday0month[0]=firstday0week(year);
for(i=1;i<12;i++)
firstday0month[i]=(firstday0month[i-1]+numday0month[i-1])%7;
for(i=0;i<12;i++)
workarray[i]=-firstday0month[i];
printf("%34s %d年\n","",year);
for(i=0;i<12;i++)
{printf("\n%41s\n",month0name[i]);
printf("%15s 星期日 星期一 星期二 星期三 星期四 星期五 星期六\n","");
for(m=0;m<6;m++)
{printf("%11s","");
for(n=1;n<=7;n++)
{workarray[i]++;
if(workarray[i]>0&&workarray[i]<=numday0month[i])
printf("%7d",workarray[i]);
else printf("%7s","");}
printf("\n");
}
}
getch();
}
这是在win-TC上的错误提示:
错误 wnl.c 2: 非法字符 '? (0xa1)

但是我还是找不出来啊,那位大侠高手帮帮忙啊,感激不尽!!
展开
 我来答
cwydfq
2008-08-14 · TA获得超过146个赞
知道答主
回答量:79
采纳率:0%
帮助的人:28.7万
展开全部
在VC++上编译运行,完全是正确的,也能得出你想要的结果,你在win-TC上出现这样的错误提示: 错误 wnl.c 2: 非法字符 '? (0xa1) ,原因是win-TC版本过低,还不支持显示汉字的功能,而你的程序中出现多处汉字,因此,就会出现这样的错误提示.
你可以把汉字改写成英文,再运行,或者用更好的编程工具VC++6.0或.NET就不会出现这种对汉字有限制的错误了。
顺便请教一下,你的j=(year+(year-1)/4-(year-1)/100+(year-1)/400)%7这个公式用来求出每年中的第一天是星期几,这个公式是怎么推导出来的?
旁笑槐NH
2008-08-14 · TA获得超过2545个赞
知道大有可为答主
回答量:2686
采纳率:0%
帮助的人:2870万
展开全部
注意所有符号都是半角,尤其是"
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
passgod
2008-08-14 · TA获得超过4890个赞
知道大有可为答主
回答量:4295
采纳率:0%
帮助的人:4227万
展开全部
TC++上编译通过
运行正常
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
songyiwen1
2008-08-14 · 超过11用户采纳过TA的回答
知道答主
回答量:43
采纳率:0%
帮助的人:0
展开全部
TC2.0上编译通过
运行正常(除了不能显示汉字)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友0e2a086cc
2008-08-14
知道答主
回答量:17
采纳率:0%
帮助的人:11万
展开全部
我用的是VC6.0,调试是一个错误一个警告。
改main()为void main()
再添加一个头文件conio.h,下面是修改过的程序

#include "stdio.h"
#include "conio.h"
int leap0year(int year)
{ int i=1;
if(year%4!=0||year%100==0&&year%400!=0)i=0;
return i;}
int firstday0week(int year)
{ int j=0;
j=(year+(year-1)/4-(year-1)/100+(year-1)/400)%7;
return j;}
void main()
{ char *month0name[12]={"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"};
int numday0month[]={31,28,31,30,31,30,31,31,30,31,30,31};
int firstday0month[12],workarray[12];
int year,i,n,m;
printf("输入年份:");
scanf("%d",&year);
if(leap0year(year)==1)numday0month[1]=29;
firstday0month[0]=firstday0week(year);
for(i=1;i<12;i++)
firstday0month[i]=(firstday0month[i-1]+numday0month[i-1])%7;
for(i=0;i<12;i++)
workarray[i]=-firstday0month[i];
printf("%34s %d年\n","",year);
for(i=0;i<12;i++)
{printf("\n%41s\n",month0name[i]);
printf("%15s 星期日 星期一 星期二 星期三 星期四 星期五 星期六\n","");
for(m=0;m<6;m++)
{printf("%11s","");
for(n=1;n<=7;n++)
{workarray[i]++;
if(workarray[i]>0&&workarray[i]<=numday0month[i])
printf("%7d",workarray[i]);
else printf("%7s","");}
printf("\n");
}
}
getch();
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式