llllmz

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

经典算法问题之打印日期

这也是一道经典的算法题。

其实也是用两个数组。还有判断是否闰年。

两个个循环,外面一个是月份循环,内部一个是每个月的天数循环,然后计数器Count++就行,直到和天数相同就跳出循环,打印就行。

#include <stdio.h>
int judge ( int year ) {
if (year % 400 == 0 || year % 100 != 0 && year % 4 == 0 ) {
return 1 ;
}
return 0 ;
}
int main ( ) {
int year , days ;
int A[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int B[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};
while( scanf("%d %d",&year,&days) != EOF ) {
int i = 1 , tem = 0 ;
int count = 0 ;
if( judge(year) == 1 ) {
for ( ; i <= 12 ; i++ ) {
for( int j = 1 ; j <= B[i] ; j++ ) {
count++;
if( count == days ) {
tem = j ;
break ;
}
}
if( count == days ) {
break ;
}
}
}else{
for ( ; i <= 12 ; i++ ) {
for( int j = 1 ; j <= A[i] ; j++ ) {
count++;
if( count == days ) {
tem = j ;
break ;
}
}
if( count == days ) {
break ;
}
}
}
if( i < 10 ) {
if ( tem < 10 ) {
printf( "%d-0%d-0%d\n",year,i,tem ) ;
}else {
printf( "%d-0%d-%d\n",year,i,tem ) ;
}
}else{
if ( tem < 10 ) {
printf( "%d-%d-0%d\n",year,i,tem ) ;
}else {
printf( "%d-%d-%d\n",year,i,tem ) ;
}
}
}
return 0 ;
}

结果如下:

posted on   神奇的萝卜丝  阅读(6)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示