编程整个大道 2021-02-25 18:43 采纳率: 100%
浏览 135
已采纳

第二届蓝桥杯试题B:特殊日期

输入一个起始日期和终止日期,例如20181101和20181130这样的8位数,求两个日期中间出现过连续3个数字的日期的个数,其中的数必须满足日期的格式,连续数字例如20181112或20181111,上面是我的源代码,我的问题是为什么20181111这个数在程序里没有识别在内?(正确答案是10个,我程序是9个,没算20181111).

 

#include<stdio.h>
int trial(int num)/*判断是否为合法日期*/
{int mon,day,year,t=1;
 year=num/10000;
 mon=num%10000;
 if(mon<1000) return 0;
 day=mon%100;
 mon=mon/100;
 if(day==0||day>=32||mon<=0||mon>=13) return 0;
 switch(mon)
 {case 4:case 6:case 9:case 11:if(day>30)t=0;break;
  case 2:if(year%4==0&&year%100!=0||year%400==0)
		   {if(day>29)t=0;}
		   else if(day>28)t=0;}
 return t;}
int main()
{int a,b;
 int num=0,i,t=1,j;
 scanf("%d%d",&a,&b);/*输入两个8位数日期,例如20181101 20181130*/
 for(i=a;i<=b;i++)
    {for(j=10;j<=1e7;j*=10)
       if(i/j%10==i/(j/10)%10)
	     {t++;if(t==3)break;}/*问题所在,不知道为什么没算20181111在内*/
	   else t=1;
     if(t==3&&trial(i)==1)num++;}/*满足出现3个连续数及属于合法日期的数会被记录*/
 printf("%d\n",num);/*输出符合条件的数的个数*/
return 0;}

 

  • 写回答

1条回答 默认 最新

  • 智者知已应修善业 2021-03-19 11:35
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记