这道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)
但是我还是找不出来啊,那位大侠高手帮帮忙啊,感激不尽!! 展开
#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)
但是我还是找不出来啊,那位大侠高手帮帮忙啊,感激不尽!! 展开
5个回答
展开全部
在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这个公式用来求出每年中的第一天是星期几,这个公式是怎么推导出来的?
你可以把汉字改写成英文,再运行,或者用更好的编程工具VC++6.0或.NET就不会出现这种对汉字有限制的错误了。
顺便请教一下,你的j=(year+(year-1)/4-(year-1)/100+(year-1)/400)%7这个公式用来求出每年中的第一天是星期几,这个公式是怎么推导出来的?
展开全部
注意所有符号都是半角,尤其是"
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
TC++上编译通过
运行正常
运行正常
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
TC2.0上编译通过
运行正常(除了不能显示汉字)
运行正常(除了不能显示汉字)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我用的是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();
}
改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();
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询