假定1900年1月1号是星期1 输入一个日期算是星期几
下面是我写的代码 貌似都是错的 在我的基础上面帮我修正下
我c学不好很少用 最近要用到 麻烦大家了
#include <stdio.h>
void main()
{
int c,y,m,m1,m2,d,d2,i,; /*定义 c总和数,y年份,m月份,m1月(31d),m2(30d),d日期,d2闰年的附加天数,i用于显示星期*/
printf("请输入年份,月份,日期:");
scanf("%d%d%d",&y,&m,&d); /*从键盘获取年月日的值*/
d2=(y-1900)/4;
switch (m)
{case 1:
m=0;
case 2:
m=31;
case 3:
m=59;
case 4:
m=90;
case 5:
m=120;
case=6:
m=151;
case=7:
m=181;
case=8:
m=212;
case=9:
m=243;
case=10:
m=273;
case=11:
m=304;
case=12:
m=334 ; /*用switch语句在月份选择时候判断月份*/
}
c=(y-1900)*365+m+d+d2;
i=c%7
printf(“%i”);
}
1楼的修改了 但是还是不行啊 貌似不能打印出来啊 我要的是后面的p的能p的出来相关的星期几什么的 我现在修正后的代码是#include <stdio.h>
void main()
{
int c,y,m,d,r,i; /*定义 c总和数,y年份,m月份,d日期,r闰年的附加天数,i用于显示星期*/
printf("请输入年份,月份,日期:");
scanf("%d%d%d",&y,&m,&d); /*从键盘获取年月日的值*/
r=(y-1900)/4;
switch (m)
{case 1:
m=0;
case 2:
m=31;
case 3:
m=59;
case 4:
m=90;
case 5:
m=120;
case6:
m=151;
case7:
m=181;
case8:
m=212;
case9:
m=243;
case10:
m=273;
case11:
m=304;
case12:
m=334 ; /*用switch语句在月份选择时候判断月份*/
}
c=(y-1900)*365+m+d+r;
i=c%7;
if(i=0)
{
printf("星期天");
}
else
printf("%d",i);
//---------------------------------------------------------------------------
#include <stdio.h>
void main()
{
int c,y,m,m1,m2,d,d2,i; /*注意这里,去掉i后面的逗号*/
printf("请输入年份,月份,日期:");
scanf("%d%d%d",&y,&m,&d);
c=0;
for (i = 1900; i<y; i++) { /*判断闰年,原来的方法有误*/
if (i%4==0&&i%100||i%400==0) c+=366;
else c+=365;
}
if (y%4==0&&y%100||y%400==0) i=1; /*判断是不是闰年,如果是闰年就要在三月之后多加1天*/
else i=0;
switch (m) /*注意这里的整个switch语句,每个case后面不用等号,而要用空格,而且每个case后面的执行语句部分要用break;结束*/
{case 1:
m=0;break;
case 2:
m=31; break;
case 3:
m=59+i;
break;
case 4:
m=90+i; break;
case 5:
m=120+i; break;
case 6:
m=151+i; break;
case 7:
m=181+i; break;
case 8:
m=212+i; break;
case 9:
m=243+i; break;
case 10:
m=273+i; break;
case 11:
m=304+i; break;
case 12:
m=334+i;
}
c+=m+d; /*注意这里*/
i=c%7 ;
printf("%d",i); /*注意这里,周日则输出0*/
}
//---------------------------------------------------------------------------
void main()
{
int c,y,m,d,r,i; /*定义 c总和数,y年份,m月份,d日期,r闰年的附加天数,i用于显示星期*/
printf("请输入年份,月份,日期:");
scanf("%d%d%d",&y,&m,&d); //将这一句改为scanf("%d %d %d",&y,&m,&d),否则会一直等你输入或者必须输入一个数按一次回车
r=(y-1900)/4;
switch (m)
{case 1:
m=0;
case 2:
m=31;
case 3:
m=59;
case 4:
m=90;
case 5:
m=120;
case6: //case 6 注意中间的空格
m=151;
case7:
m=181;
case8:
m=212;
case9:
m=243;
case10:
m=273;
case11:
m=304;
case12:
m=334 ; /*用switch语句在月份选择时候判断月份*/
}
c=(y-1900)*365+m+d+r;
i=c%7;
if(i=0) //判断条件是if(i==0)
{
printf("星期天");
}
else
printf("%d",i);
} //最后少个括号
以上是程序中的语法错误,关于逻辑错误(如果有的话)我想楼主应该会解决吧