题目:日期统计
网上很多都用的C++,对C语言者很不友好,故而出此篇
C语言暴力枚举
思路:
1、先列出所有可能出现的日期
2、使用循环遍历数组,找到满足日期的条件,计数器加一
3、打印日期
验证方法:
可以创建一个稍微小的测试数组来测试
改进原则:
1、列出所有可能出现的日期不用存储
2、固定格式的前四位可以先放入初始化数组
代码实现:
#include <stdio.h>
#include <stdlib.h>
//本题的思路,把每一天可能出现的日期通过循环压缩列举出来,然后遍历查找
int main()
{
// 请在此输入您的代码
int arr[110]={0,5,6,8,6,9,1,6,1,2,4,9,1,9,8,2,3,6,4,7,7,5,9,5,0,3,8,7,5,8,1,5,8,6,1,8,3,0,3,7,9,2,7,0,5,8,8,5,7,0,9,9,1,9,4,4,6,8,6,3,3,8,5,1,6,3,4,6,7,0,7,8,2,7,6,8,9,5,6,5,6,1,4,0,1,0,0,9,4,8,0,9,1,2,8,5,0,2,5,3,3};
int ans=0;//计数器
int day[]={0,31,28,31,30,31,30,31,31,30,31,30,31};//2023年的日期
int i,j,k;
for(i=1;i<=12;i++){
for(j=1;j<=day[i];j++){
int date[]={0,2,0,2,3,i/10,i%10,j/10,j%10};// /10拿到两位数的十位 %10拿到两位数的个位
int index=1;//
for(k=1;k<=100;k++){
if(arr[k]==date[index]){
index++;
if(index>8){
ans++;
break;//不用继续找20230101了
}
}
}
}
}
printf("%d",ans);
return 0;
}
总结:别灰心,做出此题你就击败了50%的对手了
虽说是第一题,也采用的是最简单的暴力枚举,但是实际操作起来还是有些难度,新手期还是得多加油