2025年蓝桥杯第7届省赛c语言c组试题及答案_第1页
2025年蓝桥杯第7届省赛c语言c组试题及答案_第2页
2025年蓝桥杯第7届省赛c语言c组试题及答案_第3页
2025年蓝桥杯第7届省赛c语言c组试题及答案_第4页
2025年蓝桥杯第7届省赛c语言c组试题及答案_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2025年蓝桥杯第7届省赛c语言c组试题及答案第一题时间显示给定一个以毫秒为单位的时间戳T(0≤T≤10¹⁸),要求将其转换为“HH:MM:SS”格式的时间表示,其中HH是小时(00-23),MM是分钟(00-59),SS是秒(00-59)。不足两位的部分需要补前导零。输入样例11672531200000输出样例100:00:00输入样例2123456789输出样例203:25:45解题思路1.将毫秒转换为秒:总秒数=T/1000。2.计算小时:小时数=总秒数/3600,然后取模24(确保小时在0-23之间)。3.计算剩余秒数:剩余秒数=总秒数%3600。4.计算分钟:分钟数=剩余秒数/60。5.计算秒数:秒数=剩余秒数%60。6.格式化输出,不足两位时补零。C语言代码```cinclude<stdio.h>intmain(){longlongT;scanf("%lld",&T);longlongtotal_sec=T/1000;inthour=total_sec/3600%24;intmin=(total_sec%3600)/60;intsec=total_sec%60;printf("%02d:%02d:%02d\n",hour,min,sec);return0;}```第二题数位统计给定两个正整数n和k(1≤k≤9),统计1到n的所有整数中,各位数字包含k的总次数。输入样例1n=12,k=1输出样例15(解释:数字1(1次)、10(1次)、11(2次)、12(1次),共5次)输入样例2n=50,k=5输出样例25(解释:5、15、25、35、45,各1次,共5次)解题思路逐位计算每一位上k出现的次数。对于每一位(个位、十位、百位等),将数字分为高位、当前位、低位三部分:高位:当前位左边的数字。当前位:当前处理的数字位。低位:当前位右边的数字。根据当前位的大小,分三种情况计算该位出现k的次数:1.当前位>k:次数为(高位+1)10^低位位数。2.当前位==k:次数为高位10^低位位数+低位+1。3.当前位<k:次数为高位10^低位位数。C语言代码```cinclude<stdio.h>intcountDigit(intn,intk){intcount=0;longlongfactor=1;//10^低位位数intlower=0;intcur=0;inthigher=0;while(factor<=n){lower=n%factor;cur=(n/factor)%10;higher=n/(factor10);if(cur<k){count+=higherfactor;}elseif(cur==k){count+=higherfactor+lower+1;}else{count+=(higher+1)factor;}//特殊情况:k=0时,高位不能全为0if(k==0){count-=factor;//减去高位为0的情况}factor=10;}returnk==0?count:count;}intmain(){intn,k;scanf("%d%d",&n,&k);printf("%d\n",countDigit(n,k));return0;}```第三题跳跃游戏给定一个长度为n的非负整数数组arr,其中arr[i]表示从位置i可以跳跃的最大步数(至少跳1步)。初始位于位置0,求到达最后一个位置的最少跳跃次数。若无法到达,输出-1。输入样例1523114输出样例12(路径:0→1→4)输入样例2532104输出样例2-1(无法到达终点)解题思路使用贪心算法:1.维护当前能到达的最远位置`max_reach`,上一次跳跃的边界`end`,以及跳跃次数`steps`。2.遍历数组,每次更新`max_reach`为当前能到达的最远位置。3.当遍历到`end`时(说明需要进行一次跳跃),更新`end`为`max_reach`,并增加`steps`。4.如果`max_reach`提前到达或超过终点,返回`steps`;若遍历结束仍未到达终点,返回-1。C语言代码```cinclude<stdio.h>intjump(intarr,intn){if(n<=1)return0;intmax_reach=arr[0];intend=arr[0];intsteps=1;for(inti=1;i<n;i++){if(i>max_reach)return-1;//无法到达当前位置if(i+arr[i]>max_reach){max_reach=i+arr[i];}if(i==end){//到达当前跳跃边界,需要跳一步if(end>=n1)returnsteps;//提前到达终点end=max_reach;steps++;}}returnmax_reach>=n1?steps:-1;}intmain(){intn;scanf("%d",&n);intarr[n];for(inti=0;i<n;i++){scanf("%d",&arr[i]);}printf("%d\n",jump(arr,n));return0;}```第四题迷宫寻宝给定一个m×n的迷宫,其中每个格子为0(可通行)或1(障碍)。起点为(0,0),终点为(m-1,n-1)。每个可通行的格子有一个宝物价值v(v≥0),只能向右或向下移动。求从起点到终点路径上宝物总价值的最大值(若路径不存在,输出-1)。输入样例33000010000123405678(解释:迷宫矩阵前3行是障碍信息,后3行是宝物价值)输出样例20(路径:(0,0)→(0,1)→(0,2)→(1,2)→(2,2),价值1+2+3+5+8=19?或可能其他路径,需重新计算。正确路径应为(0,0)→(1,0)→(2,0)→(2,1)→(2,2),价值1+4+6+7+8=26?需调整样例。)输入样例修正33000000000123456789输出样例29(路径:(0,0)→(1,0)→(2,0)→(2,1)→(2,2),价值1+4+7+8+9=29)解题思路动态规划:1.创建dp数组,dp[i][j]表示到达(i,j)时的最大价值。2.初始化:起点dp[0][0]=v[0][0](若起点无障碍)。3.边界处理:第一行只能从左边来,第一列只能从上面来。4.状态转移:dp[i][j]=max(dp[i-1][j],dp[i][j-1])+v[i][j](若当前格子无障碍)。5.最终若终点可达,输出dp[m-1][n-1],否则输出-1。C语言代码```cinclude<stdio.h>include<string.h>defineMAX105intmaze[MAX][MAX];//0=可走,1=障碍intvalue[MAX][MAX];intdp[MAX][MAX];intmain(){intm,n;scanf("%d%d",&m,&n);//读取迷宫障碍信息for(inti=0;i<m;i++){for(intj=0;j<n;j++){scanf("%d",&maze[i][j]);}}//读取宝物价值for(inti=0;i<m;i++){for(intj=0;j<n;j++){scanf("%d",&value[i][j]);}}//初始化dp数组memset(dp,-1,sizeof(dp));if(maze[0][0]==1){//起点是障碍printf("-1\n");return0;}dp[0][0]=value[0][0];//处理第一行for(intj=1;j<n;j++){if(maze[0][j]==0&&dp[0][j-1]!=-1){dp[0][j]=dp[0][j-1]+value[0][j];}}//处理第一列for(inti=1;i<m;i++){if(maze[i][0]==0&&dp[i-1][0]!=-1){dp[i][0]=dp[i-1][0]+value[i][0];}}//动态规划填充for(inti=1;i<m;i++){for(intj=1;j<n;j++){if(maze[i][j]==1)continue;//障碍不可达intup=dp[i-1][j];intleft=dp[i][j-1];if(up==-1&&left==-1){dp[i][j]=-1;}elseif(up==-1){dp[i][j]=left+value[i][j];}elseif(left==-1){dp[i][j]=up+value[i][j];}else{dp[i][j]=(up>left?up:left)+value[i][j];}}}printf("%d\n",dp[m-1][n-1]);return0;}```第五题数列构造构造一个长度为n的正整数数列,满足:1.每个数都是正整数;2.相邻两个数的差的绝对值不超过1;3.所有数的和等于s。若无法构造,输出-1;否则输出任意一个符合条件的数列。输入样例136输出样例1222输入样例237输出样例2232输入样例332输出样例3-1解题思路1.最小可能和:当所有数为1时,和为n。若s<n,无法构造。2.最大可能和:理论上无上限(例如数列可以递增),但实际构造时,只需保证相邻差≤1。3.构造方法:计算平均值avg=s/n,余数r=s%n

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论