当前位置: 代码迷 >> C语言 >> 请问错在哪里了?
  详细解决方案

请问错在哪里了?

热度:155   发布时间:2007-04-14 21:25:15.0
请问错在哪里了?
这是个输入年月日求出该天是星期几的小程序.
第一次编译时,提示Y,D,M还没有初始化,我晕,貌似变量都是直接输入的,怎么还要初始化呢.再次编译,没有问题了.可是,当我开始组建时,程序一直都在linking,然后就没有反应了.关还得要在资源管理器才能关掉.
难道这个代码错了吗?如果错了,错在哪里了?


#include <stdio.h>
void main()
{
int Y,M,D;
int W;
printf("请输入年%d***月***%d日***%d\n",Y,M,D);
scanf("%d%d%d",&Y,&M,&D);
if(M==1)
--Y;
M=13;
if(M==2)
--Y;
M=14;
W = (D+2*M+3*(M+1)/5+Y+Y/4-Y/100+Y/400)%7+1;
switch(W)
{
case 1:printf("该日期为星期1");
case 2:printf("该日期为星期2");
case 3:printf("该日期为星期3");
case 4:printf("该日期为星期4");
case 5:printf("该日期为星期5");
case 6:printf("该日期为星期6");
case 7:printf("该日期为星期天");
}
}



搜索更多相关的解决方案: void  资源管理器  include  年月日  

----------------解决方案--------------------------------------------------------

我给你改了一下,程序可以运行了。可惜好像结果不对吧,LZ是不是算法又问题呀?
#include <stdio.h>
int main()
{
int Y,M,D;
int W;
printf("请输入年***月***日***\n")
;
scanf("%d%d%d",&Y,&M,&D);
if(M==1)
--Y;
M=13;
if(M==2)
--Y;
M=14;
W = (D+2*M+3*(M+1)/5+Y+Y/4-Y/100+Y/400)%7+1;
switch(W)
{
case 1:printf("该日期为星期1\n");break;
case 2:printf("该日期为星期2\n");break;
case 3:printf("该日期为星期3\n");break;
case 4:printf("该日期为星期4\n");break;
case 5:printf("该日期为星期5\n");break;
case 6:printf("该日期为星期6\n");break;
case 7:printf("该日期为星期天\n");break;
default:printf("输入错误!\n");
}
return 0;
}


----------------解决方案--------------------------------------------------------
谢谢哦.不过我想不明白,为什么一定要返回0啊.还有,下面这个为什么按你的修改去改了,也没有成功啊


#include <stdio.h>
void main()
{
int Y,M,D;
int W;
printf("请输入年%d***月***%d日***%d\n",Y,M,D);
scanf("%d%d%d",&Y,&M,&D);
if(M=(1||2))
M = M == 1 ? (Y--, 13) : M;
W = (D+2*M+3*(M+1)/5+Y+Y/4-Y/100+Y/400)%7+1;
if(W==7)
printf("该日期为星期天");
else
printf("该日期为星期W\n",W);

}

----------------解决方案--------------------------------------------------------
上面这个代码问题也是第一次编译提示Y,D,M还没有初始化,但第二次编译就没问题了.修改成


#include <stdio.h>
int main()
{
int Y,M,D;
int W;
printf("请输入年%d***月***%d日***%d\n",Y,M,D);
scanf("%d%d%d",&Y,&M,&D);
if(M=(1||2))
M = M == 1 ? (Y--, 13) : M;
W = (D+2*M+3*(M+1)/5+Y+Y/4-Y/100+Y/400)%7+1;
if(W==7)
printf("该日期为星期天");
else
printf("该日期为星期W\n",W);
return 0;

}



----------------解决方案--------------------------------------------------------
因为我的编译器默认的返回类型是整型,而我的主函数应该是无返回类型的。
----------------解决方案--------------------------------------------------------
按你的修改,第一个可以生成,但第二个不能.还是说什么没有初始化.究竟什么原因?我的变量都是输入的啊
----------------解决方案--------------------------------------------------------

你可以输入:
2007 4 14看看呀?
可能输入有误吧。他们之间有空格的。


----------------解决方案--------------------------------------------------------
为什么我输入后回车,刚刚给出答案就程序就关了?
----------------解决方案--------------------------------------------------------
没有呀  怎么可能?我的可以呀?
----------------解决方案--------------------------------------------------------
你看我运行的:
请输入年***月***日***
2007 4 14
该日期为星期4
Press any key to continue
只是结果不对罢了。
----------------解决方案--------------------------------------------------------
  相关解决方案