| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2720 人关注过本帖
标题:[原创]初学c语言,做的第一个小程序(40分钟完成)
只看楼主 加入收藏
klnhrs
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-6-28
收藏
 问题点数:0 回复次数:21 
[原创]初学c语言,做的第一个小程序(40分钟完成)
输入任意年月日,判断这一天是那年的第几天.
以下是我的源代码:


main()
{
int y,m,d,s=0,i=0,j=0;
clrscr();
printf("Please input the YEAR MONTH DAY:\n");
scanf("%d %d %d",&y,&m,&d);
if(y%4==0&&y%100!=0||y%400==0) i=1;
if((d<1||d>31)||(d>28&&i!=1)||(d>29&&i==1))
{
printf("Input Error!!!");
goto loop;
}
switch (m)
{
case 1: s=0+d;break;
case 2: s=31+d;break;
case 3: s=31+d+i+28;break;
case 4: s=31+i+28+31+d;break;
case 5: s=31+i+28+31+30+d;break;
case 6: s=31+i+28+31+30+31+d;break;
case 7: s=31+i+28+31+30+31+30+d;break;
case 8: s=31+i+28+31+30+31+30+31+d;break;
case 9: s=31+i+28+31+30+31+30+31+31+d;break;
case 10: s=31+i+28+31+30+31+30+31+31+30+d;break;
case 11: s=31+i+28+31+30+31+30+31+31+30+31+d;break;
case 12: s=31+i+28+31+30+31+30+31+31+30+31+30+d;break;
default: printf("Input Error!!!"); goto loop;
}
j=((s+10)%10);
switch (j)
{
case 1: printf("DATE %d.%d.%d is the %dst day of year %d.",y,m,d,s,y);break;
case 2: printf("DATE %d.%d.%d is the %dnd day of year %d.",y,m,d,s,y);break;
case 3: printf("DATE %d.%d.%d is the %drd day of year %d.",y,m,d,s,y);break;
default: printf("DATE %d.%d.%d is the %dth day of year %d.",y,m,d,s,y);
}
loop: getch();
}

小弟是c的初学者, 这是我做的第一个有点用的程序, 各位大侠帮忙看看,指点一下,还有那些需要改进的地方.
搜索更多相关主题的帖子: c语言 初学 
2007-06-28 20:32
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
第一次写就不说你什么了.
等你以后自己再回过头来看你写的东西吧.

倚天照海花无数,流水高山心自知。
2007-06-28 20:34
klnhrs
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-6-28
收藏
得分:0 
前辈们帮忙看一下噢~
我是很认真学习的~~~~~
可别打消我的积极性~~
2007-06-28 21:10
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
case 1: s=0+d;break;
case 2: s=31+d;break;
case 3: s=31+d+i+28;break;
case 4: s=31+i+28+31+d;break;
case 5: s=31+i+28+31+30+d;break;
case 6: s=31+i+28+31+30+31+d;break;
case 7: s=31+i+28+31+30+31+30+d;break;
case 8: s=31+i+28+31+30+31+30+31+d;break;
case 9: s=31+i+28+31+30+31+30+31+31+d;break;
case 10: s=31+i+28+31+30+31+30+31+31+30+d;break;
case 11: s=31+i+28+31+30+31+30+31+31+30+31+d;break;
case 12: s=31+i+28+31+30+31+30+31+31+30+31+30+d;break;

case 1: printf("DATE %d.%d.%d is the %dst day of year %d.",y,m,d,s,y);break;
case 2: printf("DATE %d.%d.%d is the %dnd day of year %d.",y,m,d,s,y);break;
case 3: printf("DATE %d.%d.%d is the %drd day of year %d.",y,m,d,s,y);break;
default: printf("DATE %d.%d.%d is the %dth day of year %d.",y,m,d,s,y);

goto loop;

有待改进.

倚天照海花无数,流水高山心自知。
2007-06-28 21:24
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
收藏
得分:0 
如果是第一个程序那说明你的悟性是很不错的

至于这个程序我的建议:
1. 写什么程序都不要用goto语句
2. 31+i+28+31+30+31+30+31+31+30+31+30+d;这种情况你可以写在注释里 在程序中你最好自己计算好了再写在程序里
不要什么东西都让计算机帮你算 在这个程序中看不出效率上的问题 但是最好养成一个好习惯
3. 写程序的时候多培养书写规范问题
2007-06-28 21:27
allen303alle
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2007-6-27
收藏
得分:0 
呵呵,支持一下~~~~~~

未贏其財,先贏其勢;獅子搏兔,君臨天下 ...................遇強即屈,借花敬佛。
2007-06-28 22:42
tony_lsj
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-6-16
收藏
得分:0 
将每月的天数用个一维数组初始化一下,会不会好点。

一个不是很懂C,数据结构与算法的人!但很喜欢讨论.希望能成为好友.qq109612789
2007-06-28 22:50
terisevend
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2007-6-2
收藏
得分:0 
对于程序的整洁度,我的建议是:
把case 1...12的的数据用数组初始化一下。
至于求天数,大可以根据月份和数组下标的关系来确定。这样可以省去大量的case。
对于条件判定中,建议在(d>28&&i!=1)||(d>29&&i==1)中,加入m==2,因为只有在2月份的时候,其天数的最大值才为28||29。
还有就是,如5楼的 cdmalcl 所言, 最好不要用goto语句,因为其影响了源代码的阅读。。。
纯属个人意见。。。多多见量。。。

[此贴子已经被作者于2007-6-28 23:26:28编辑过]


2007-06-28 23:25
herbert_1987
Rank: 5Rank: 5
等 级:贵宾
威 望:15
帖 子:1314
专家分:0
注 册:2007-5-13
收藏
得分:0 
呵呵, 有意思!

人生重要的不是所站的位置,而是所朝的方向
2007-06-28 23:32
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
收藏
得分:0 
以下是引用tony_lsj在2007-6-28 22:50:15的发言:
将每月的天数用个一维数组初始化一下,会不会好点。

每个月的天数是有规律的(除了2月而已)
可以用一个数学函数概况出来
但是长度只有12 所以用函数可能不如用记录的方法运算效率高

2007-06-28 23:41
快速回复:[原创]初学c语言,做的第一个小程序(40分钟完成)
数据加载中...
 
   



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

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