|
<p>c语言日历</p>
<p><img src="http://img.baidu.com/img/iknow/icn_point.gif"> 悬赏分:10 -</p>
<p>解决时间:2009-12-9 14:26</p>
<p>要求大致是这样的,以2000年1月1日,输入一个天数比如1000,计算2000年1月1日的1000天后的日期和星期,高手帮忙看下</p>
<p>提问者: 阿飞1414 - 一级</p>
<p>最佳答案</p>
<p>#include <stdio.h></p>
<p>bool fun1( int i )</p>
<p>{</p>
<p>if ( i % 400 == 0 II ( i % 4 == 0 && i % 100 != 0 ) )</p>
<p>return 1;</p>
<p>return 0;</p>
<p>}</p>
<p>void fun2( long* d, int* y, int* m, int* dy )</p>
<p>{</p>
<p>int k = 366;</p>
<p>while( *d >= k )</p>
<p>{</p>
<p>++( *y );</p>
<p>*d -= k;</p>
<p>if( fun1( *y ) )</p>
<p>k = 366;</p>
<p>else k = 365;</p>
<p>}</p>
<p>k = 31;</p>
<p>while( *d >= k)</p>
<p>{</p>
<p>++( *m );</p>
<p>*d -= k;</p>
<p>switch( *m )</p>
<p>{</p>
<p>case 1:</p>
<p>case 3:</p>
<p>case 5:</p>
<p>case 7:</p>
<p>case 8:</p>
<p>case 10:</p>
<p>case 12:k = 31; break;</p>
<p>case 4:</p>
<p>case 6:</p>
<p>case 9:</p>
<p>case 11: k = 30; break;</p>
<p>default: k = 0; break;</p>
<p>}</p>
<p>if( *m == 2 )</p>
<p>{</p>
<p>if( fun1( *y ) )</p>
<p>k = 29;</p>
<p>else k = 28;</p>
<p>}</p>
<p>}</p>
<p>*dy += *d;</p>
<p>}</p>
<p>void main()</p>
<p>{</p>
<p>int year = 2000, moon = 1, day = 1;</p>
<p>long data = 0;</p>
<p>printf( "请输入天数:" );</p>
<p>scanf( "%d",&data );</p>
<p>fun2( &data, &year, &moon, &day );</p>
<p>printf( "%d年%d月%d日", year, moon, day );</p>
<p>}</p>
<p>0</p>
<p>回答者:</p>
<p>jinguigame - 一级 2009-12-6 12:15</p>
<p>我来评论>></p>
|
|