2025年全国青少年信息素养大赛C++算法创意实践挑战赛(初中组-复赛)真题(含答案)_第1页
2025年全国青少年信息素养大赛C++算法创意实践挑战赛(初中组-复赛)真题(含答案)_第2页
2025年全国青少年信息素养大赛C++算法创意实践挑战赛(初中组-复赛)真题(含答案)_第3页
2025年全国青少年信息素养大赛C++算法创意实践挑战赛(初中组-复赛)真题(含答案)_第4页
2025年全国青少年信息素养大赛C++算法创意实践挑战赛(初中组-复赛)真题(含答案)_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

2025年全国青少年信息素养大赛C++算法创意实践挑战赛(初中组_复赛)真题(含答案)一、单选题。1.以下说法正确的?()。doublet=1.3456*1000。intb=t;if(t-b<0.4)cout<<"yes"<<endl;elsecout<<"no"<<endl;A.b的最终值为1346B.程序会输出yesC.若把第3行的0.4改成0.7,程序会输出yes。D.把浮点数赋值给整型变量会导致编译错误标准答案:C。2.题a与b都是int型变量,哪个选项不能表示“a与b的值均为0”()。A.a==0&&b==0B.!a&&!bC.!(a||b)D.a*b==0标准答案:D。3.以下代码输出的是?()。intsum=0;for(inti=1;i<=10;i++){if(i%2==1)sum+=i;}cout<<sum;A.25B.55C.35D.115标准答案:A。4.输入1和2,程序会输?()。#include<iostream>usingnamespacestd;inta[10];intmain(){cin>>a[1]>>a[8];intl=2,r=7;while(l<r){a[l]=a[l-1]+a[r+1];a[r]=a[r+1]-a[l-1];l++;r--;}cout<<a[l]+a[r]<<endl;return0;}A.-6B.2C.-4D.3标准答案:C。5.输入一个非空的字符串,关于程序的输出以下哪个说法是正确的?()。strings;cin>>s;intcnt=0;boolflag=1;for(inti=0;i<s.size();i++){if(s[i]>='a'&&s[i]<='z'){cnt++;flag=0;}elseif(s[i]>='A'&&s[i]<='Z'){cnt--;flag=0;}}if(cnt>0||flag)cout<<"yes"<<endl;elsecout<<"no"<<endl:A.只要输入的字符串不包含小写字母,程序一定输出no。B.输入AaBb,程序会输出yes。C.输入1234567,程序会输出no。D.只要输入的字符串不包含大写字母,程序一定输出yes。标准答案:D。二、编程题。6.游乐园门票问题。题目描述:学校组织全年级同学去游乐园春游。游乐园门票分为学生票和成人票,学生票a元一张,成人票b元一张。共有x名同学参加春游,用于买票的经费为y元,请计算为x名同学买票后,剩下的钱最多能为多少位教师买票。输入描述:四个整数a,b,x,y,分别代表学生票价格、成人票价格、同学人数、经费,保证经费足够购买x张学生票。输出描述:一个整数,剩下的钱最多能为多少位教师买票!样例1:输入:20401002201输出:5提示:样例说明:买100张学生票花费20*100=2000元,剩余201元最多购买201/40=5张。数据范围:1<=a,b,x<=100,a*x<=y<=100000。参考程序:#include<iostream>usingnamespacestd;intmain(){inta,b,x,y;cin>>a>>b>>x>>y;//输入4个数字。intremaining=y-a*x;//买完学生票剩下的钱。intteachers=remaining/b;//剩下的钱能买多少张成人票。cout<<teachers<<endl;return0;}7.过山车“峰”的个数问题。过山车非常刺激,乐乐同学却因为晕车体质无法和同学们一起玩。为了打发等待的时间,他在纸上大致记录了过山车轨道的图形,并估算了n个关键点的高度。如果一个点高于所有相邻的点,则称这个点为“峰”。乐乐觉得,坐过山车最刺激的时刻就是经过“峰”的时候。请写一个程序,计算过山车“峰”的个数。输入描述:第一行:一个正整数n。第二行:n个正整数a1,a2,an,ai表示第i个点的高度。输出描述:一个整数,表示“峰”的个数。样例1:输入:6766391输出:2提示:样例说明:共6个点,第1个点比相邻的第2个点高,第5个点比相邻的第4个点、第6个点高,是“峰”,其余点都不是“峰”。数据范围:1<=n<=100000。对于任意1<=i<=n,保证1<=ai<=1000000。参考程序:#include<iostream>#include<vector>usingnamespacestd;intmain(){intn;cin>>n;vector<int>a(n);for(inti=0;i<n;++i){cin>>a[i];}intcnt=0;//只有1个点的特殊情况。if(n==1){cout<<1<<endl;return0;}//判断第一个点。if(a[0]>a[1])cnt++;//判断中间的点。for(inti=1;i<n-1;i++){if(a[i]>a[i-1]&&a[i]>a[i+1]){cnt++;}}//判断最后一个点。if(a[n-1]>a[n-2])cnt++;cout<<cnt<<endl;return0;}8.游乐园座位分组问题。同学们想看游乐园的水上表演。观众席座位分成k排,每排有m个座位。同学人数为n,为了好安排座位,老师希望将n名同学分成不超过k组,每组人数相同且不超过m人。请写一个程序,帮助老师判断能不能达成满足条件的分组,能则输出"yes",否则输出"no"。本题有多组数据。输入描述:第一行:一个正整数T,代表有T组数据。第2~T+1行:每行三个用空格隔开的正整数n、k、m,表示同学人数、座位排数与每排座位数。输出描述:T行,每行一个字符串"yes"或"no"。样例1:输入:22051037420输出:yesno提示:样例说明:第1组数据:20名同学分为4组,每组5人(分法不止一种)。第2组数据:没有符合条件的分法。数据范围:1<=T<=1000。1<=n,m<=10000。1<=k<=100。参考程序:#include<iostream>usingnamespacestd;//判断是否可以分组。boolcanGroup(intn,intk,intm){//枚举所有可能的组数g(1~k)。for(intg=1;g<=k&&g<=n;++g){//能平均分且每组人数不超过m。if(n%g==0&&n/g<=m){returntrue;}}returnfalse;}intmain(){intT;cin>>T;//多组数据。while(T--){intn,k,m;cin>>n>>k>>m;if(canGroup(n,k,m))cout<<"yes"<<endl;elsecout<<"no"<<endl;}return0;}9.游乐园抽奖问题。题目描述:在游乐园纪念品商店消费到一定数额可抽奖。店员在0~9范围内随机选择两个数字a和b(a<=b),所有不小于a且不大于b的数字作为“彩蛋数字”。抽奖者在奖券上写一个10位的正整数,若10个数位上“彩蛋数字”不少于6个就算中奖。店员收集了n张奖券,编号为1~n,要求编写程序依次输出所有中奖奖券的编号,最后输出中奖奖券的张数。输入描述:第1行:三个用空格隔开的正整数n、a、b,表示奖券张数、店员选择的两个数字。第2~n+1行:编号为1~n的奖券上的数,每行一个数,保证都是10位的正整数,无前导0。输出描述:若干行,从小到大输出中奖奖券的编号,每行一个编号。最后一行输出中奖奖券的张数。样例1:输入:4021234567890987654321022222222221010109823输出:342提示:样例说明:彩蛋数字是0~2,4张奖券包含的彩蛋数字个数依次为3、3、10、7,编号为3、4的奖券中奖,中奖奖券张数为2。数据范围:1<=n<=100000,0<=a<=b<=9。参考程序:#include<iostream>#include<vector>#include<string>usingnamespacestd;intmain(){intn,a,b;cin>>n>>a>>b;vector<string>tickets(n);vector<int>winners;//读取n张奖券。for(inti=0;i<n;++i){cin>>tickets[i];}//逐个判断是否中奖。for(inti=0;i<n;++i){intcnt=0;for(charch:tickets[i]){intd=ch-'0';if(d>=a&&d<=b){cnt++;}}if(cnt>=6){winners.push_back(i+1);//编号从1开始。}}//输出中奖编号。for(intx:winners){cout<<x<<'\n';}//输出中奖数量。cout<<winners.size()<<'\n';return0;}10.数对组合问题。定义G(a,b)为两个正整数a和b先后连接起来组成新的正整数。例如:当a为202、b为4时,G(a,b)=G(202,4)=2024。现在给定两个整数n和m,请问有多少数对(a,b)满足G(a,b)=(a+1)*(b+1)-1,其中1<=a<=n,1<=b<=m,并且a和b均为正整数。输入描述:输入一行,两个正整数n和m。输出描述:输出一行,包括一个整数,表示符合题目要求的结果。样例1:输入:112输出:1样例2:输入:561000输出:168提示:对于100%的数据:1<=n,m<=2*109。参考程序:#include<iostream>usingnamespacestd;typedeflonglongll;llcountValidPairs(lln,

温馨提示

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

评论

0/150

提交评论