标题:请问错在哪里了?
只看楼主
白衣吹水
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2007-4-10
 问题点数:0 回复次数:10 
请问错在哪里了?
这是个输入年月日求出该天是星期几的小程序.
第一次编译时,提示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 年月日 
2007-04-14 21:25
pinglideyu
Rank: 3Rank: 3
来 自:武汉工程大学
等 级:论坛游侠
威 望:1
帖 子:735
专家分:140
注 册:2007-1-7
得分:0 

我给你改了一下,程序可以运行了。可惜好像结果不对吧,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;
}


~~我的明天我知道~~
2007-04-14 21:35
白衣吹水
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2007-4-10
得分: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);

}
2007-04-14 22:43
白衣吹水
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2007-4-10
得分:0 
上面这个代码问题也是第一次编译提示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-04-14 22:45
pinglideyu
Rank: 3Rank: 3
来 自:武汉工程大学
等 级:论坛游侠
威 望:1
帖 子:735
专家分:140
注 册:2007-1-7
得分:0 
因为我的编译器默认的返回类型是整型,而我的主函数应该是无返回类型的。

~~我的明天我知道~~
2007-04-14 22:48
白衣吹水
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2007-4-10
得分:0 
按你的修改,第一个可以生成,但第二个不能.还是说什么没有初始化.究竟什么原因?我的变量都是输入的啊
2007-04-14 23:07
pinglideyu
Rank: 3Rank: 3
来 自:武汉工程大学
等 级:论坛游侠
威 望:1
帖 子:735
专家分:140
注 册:2007-1-7
得分:0 

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


~~我的明天我知道~~
2007-04-14 23:25
白衣吹水
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2007-4-10
得分:0 
为什么我输入后回车,刚刚给出答案就程序就关了?
2007-04-14 23:32
pinglideyu
Rank: 3Rank: 3
来 自:武汉工程大学
等 级:论坛游侠
威 望:1
帖 子:735
专家分:140
注 册:2007-1-7
得分:0 
没有呀  怎么可能?我的可以呀?

~~我的明天我知道~~
2007-04-14 23:34
pinglideyu
Rank: 3Rank: 3
来 自:武汉工程大学
等 级:论坛游侠
威 望:1
帖 子:735
专家分:140
注 册:2007-1-7
得分:0 
你看我运行的:
请输入年***月***日***
2007 4 14
该日期为星期4
Press any key to continue
只是结果不对罢了。

~~我的明天我知道~~
2007-04-14 23:37



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-131921-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.089699 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved