当前位置: 首页 > news >正文

【第十三届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组】C语言代码

一、九进制转十进制

#include<stdio.h>

int main(int argc,char * argv[])
{
	int n = 2022;
	int dec = 0,base = 1;//dec十进制,base9的幂次 
	while(n > 0)
	{
		int digit = n % 10;//取当前数的最低位
		dec += digit * base;
		base *= 9;//更新9的幂次
		n /= 10;//处理n的下一位 
	}
	printf("dec=%d\n",dec);
	return 0; 
}

二、顺子日期

方法一

算法思想:

将题目中所需的功能封装成一个个小的函数

1.判断顺子

2.获得每个月的天数

3.判断日期中是否存在顺子

优点:代码复用性强,实在想不出办法可以这样

缺:代码比较冗长

#include <stdio.h>
int is_straight_number(int a,int b,int c)
{
	return (b == a + 1) && (c == b + 1);//判断三个数是否为顺子数 
}

int is_straight_date(int year,int month,int days)
{
	//提取出日期中的每一位数字 
  int date = year * 10000 + month * 100 + days;
  int first = (date / 10000000) % 10;
  int second = (date / 1000000) % 10;
  int third = (date / 100000) % 10;
  int fourth = (date / 10000) % 10;
  int fifth = (date / 1000) % 10;
  int sixth = (date / 100) % 10;
  int seventh = (date / 10) % 10;
  int eighth = date % 10;
	//逐个检索是否为顺子 
  if(
    is_straight_number(first,second,third) || 
    is_straight_number(second,third,fourth)||
    is_straight_number(third,fourth,fifth) || 
    is_straight_number(fourth,fifth,sixth)||
    is_straight_number(fifth,sixth,seventh)||
    is_straight_number(sixth,seventh,eighth)
  )
  {
    return 1;
  }
  return 0;
}
int is_leap_year(int year)//判断闰年
{
	return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
}
int get_days_of_month(int year,int month) //获得每个月的天数
{
  if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) 
  {
    return 31;
  }
  if (month == 4 || month == 6 || month == 9 || month == 11) 
  {
    return 30;
  }
  if(2 == month)
  {
  	if(is_leap_year(year))
  	{
  		return 29;
  	}
  }
  return 28;  
}
int main(int argc, char *argv[])
{
  int ans = 0;//计数器 
  int year = 2022;
  int month;
  int day;
  for(month = 1;month <= 12;++month)//遍历月份 
  {
    int days = get_days_of_month(year,month);//获得当月天数 
    printf("days = %d\n",days);
    for(day = 1;day <= days;++day)//遍历天数 
    {
      if(is_straight_date(2022,month,day))//判断顺子日期 
      {
        ans++;
      }
    }
  }
  printf("ans = %d\n",ans);
  return 0;
}

方法二

算法思想:

把日期对应的八个数存到数组里

如{2,0,2,2,1,1,2,1}->2022 年11月 21日

每个月对应的天数也存到数组里

遍历一年中的每一天

#include<stdio.h>
int main()
{
	int a[8] = {2,0,2,2,0,0,0,0};
	int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};//数组存每个月对应的天数 
	int i,j;
	int count = 0;
	for(i = 1;i <= 12;++i)//外循环遍历月份 
	{
		a[4] = i / 10;
		a[5] = i % 10;
		for(j = 1;j <= month[i];++j)内循环遍历天数 
		{
			a[6] = j / 10;
			a[7] = j % 10;
			if((a[4]+1==a[5] && a[5]+1==a[6]) || (a[5]+1==a[6] && a[6]+1==a[7]))
			{
				count++;
			}
		}
	}
	printf("%d\n",count);
	return 0;
}

答案:

相关文章:

  • Windows 系统下多功能免费 PDF 编辑工具详解
  • 二分类与多分类
  • # 基于 OpenCV 的运动目标检测与跟踪
  • C++ 多态:面向对象编程的核心概念(二)
  • RISC-V AIA学习3---APLIC第三部分
  • 基于python的电影数据分析及可视化系统
  • Sentinel[超详细讲解]-3
  • JavaScript 中的原型链与继承
  • 自用大模型学习笔记--transformer(不定期更新,欢迎挑错)
  • VS 2022,配置PCL 1.12.0,C#使用C++/CLI调用
  • Spring Boot 3.4.3 基于 SpringDoc 2 和 Swagger 3 实现项目接口文档管理
  • C++26 编译时反射简介
  • 0101数学_算法-常用符号-常用模板.md
  • stm32week9
  • 【Es】基础入门:开启全文搜索的大门
  • 数据结构每日一题day4(顺序表)★★★★★
  • conda的基础命令
  • VLAN的高级特性
  • 苹果与安卓,鸿蒙下跨设备,应用分享
  • Matlab_Simulink中导入CSV数据与仿真实现方法
  • 网站空间域名每年都得交吗/微信营销推广公司
  • 公司怎么与网站进行活动推广/南京百度快速排名优化
  • 网站建设维护资质/百度上广告怎么搞上去的
  • 杭州制作网站的公司/成都私人网站制作
  • 建设电子商务网站的方法有/seo自然排名优化
  • 杭州建设局官网/谷歌seo 外贸建站