2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 青少年软件编程C++二级题库(1-10)

青少年软件编程C++二级题库(1-10)

时间:2021-04-19 08:22:16

相关推荐

青少年软件编程C++二级题库(1-10)

1、与指定数字相同的数的个数(真题)输出一个整数序列中与指定数字相同的数的个数。 输入:输入包含三行: 第一行为 N,表示整数序列的长度(N ≤ 100); 第二行为 N 个整数,整数之间以一个空格分开; 第三行包含一个整数,为指定的数字 m。 输出 输出为 N 个数中与 m 相同的数的个数。 输入样例 3 2 3 2 2 输出样例 2

#include<iostream> using namespace std;int main(){int N;cin>>N; int a[N];for(int i=0;i<N;i++){cin>>a[i];}int m;cin>>m;int t=0;for(int i=0;i<N;i++){if(m==a[i])t++;}cout<<t<<endl;return 0;}

2、陶陶摘苹果陶陶家的院子里有一棵苹果树,每到秋天树上就会结出 10 个苹果。苹果成熟的时 候,陶陶就会跑去摘苹果。陶陶有个 30 厘米高的板凳,当她不能直接用手摘到苹果的 时候,就会踩到板凳上再试试。 现在已知 10 个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度, 请帮陶陶算一下她能够摘到的苹果的数目。假设她碰到苹果,苹果就会掉下来。 输入 包括两行数据。第一行包含 10 个 100 到 200 之间(包括 100 和 200)的整数(以厘米 为单位)分别表示 10 个苹果到地面的高度,两个相邻的整数之间用一个空格隔开。第二 行只包括一个 100 到 120 之间(包含 100 和 120)的整数(以厘米为单位),表示陶陶把手 伸直的时候能够达到的最大高度。 输出 包括一行,这一行只包含一个整数,表示陶陶能够摘到的苹果的数目。 输入样例 100 200 150 140 129 134 167 198 200 111 110 输出样例 5

#include <iostream>#include <iomanip>using namespace std;int main(){int i, a[10], height, num=0;for (i=0; i<10; i++) cin >> a[i];cin >> height;for (i=0; i<10; i++){if (a[i]<=height+30) num++;}cout << num << endl;}

3、计算书费下面是一个图书的单价表: 计算概论 28.9 元/本 数据结构与算法 32.7 元/本 数字逻辑 45.6 元/本 C++程序设计教程 78 元/本 人工智能 35 元/本 计算机体系结构 86.2 元/本 编译原理 27.8 元/本 操作系统 43 元/本 计算机网络 56 元/本 JAVA 程序设计 65 元/本 给定每种图书购买的数量,编程计算应付的总费用。 输入:输入一行,包含 10 个整数(大于等于 0,小于等于 100),分别表示购买的《计 算概论》、《数据结构与算法》、《数字逻辑》、《 C++程序设计教程》、《人工智能》、 《计算机体系结构》、《编译原理》、《操作系统》、《计算机网络》、《 JAVA 程序设 计》的数量(以本为单位)。每两个整数用一个空格分开。 输出:输出一行,包含一个浮点数 f,表示应付的总费用。精确到小数点后一位。 输入样例 1 5 8 10 5 1 1 2 3 4 输出样例 2410.2

#include<iostream> #include<iomanip>using namespace std;int main(){int n=10;int a[10];float f;for(int i=0;i<n;i++){cin>>a[i];}f=a[0]*28.9+a[1]*32.7+a[2]*45.6+a[3]*78+a[4]*35+a[5]*86.2+a[6]*27.8+a[7]*43+a[8]*56+a[9]*65;cout<<f<<setprecision(1)<<endl;return 0;}

4、数组逆序重存放将一个数组中的值按逆序重新存放。例如,原来的顺序为 8,6,5,4,1。要求改为 1,4,5,6,8。 输入 输入为两行:第一行数组中元素的个数 n( 1<n<100),第二行是 n 个整数,每两个 整数之间用空格分隔。 输出 输出为一行:输出逆序后数组的整数,每两个整数之间用空格分隔。 输入样例 5 8 6 5 4 1 输出样例 1 4 5 6 8

#include<iostream> using namespace std;int main(){int n;cin>>n;int a[n];for (int i=0; i<n; i++) cin >> a[i];for (int i=n-1; i>=0; i--) cout << a[i] << " ";return 0;}

5、校门外的树某校大门外长度为 L 的马路上有一排树,每两棵相邻的树之间的间隔都是 1 米。我 们可以把马路看成一个数轴,马路的一端在数轴 0 的位置,另一端在 L 的位置;数轴上 的每个整数点,即 0,1,2,……,L,都种有一棵树。 由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点 表示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。 现在要把这些区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将这些树 都移走后,马路上还有多少棵树。 输入 第一行有两个整数 L(1 ≤ L ≤ 10000)和 M(1 ≤ M ≤ 100),L 代表马路的 长度,M 代表区域的数目,L 和 M 之间用一个空格隔开。接下来的 M 行每行包含两个不 同的整数,用一个空格隔开,表示一个区域的起始点和终止点的坐标。 对于 20%的数据,区域之间没有重合的部分;对于其它的数据,区域之间有重合的 情况。 输出 包括一行,这一行只包含一个整数,表示马路上剩余的树的数目。 输入样例 500 3 150 300 100 200 470 471 输出样例 298

#include<iostream> using namespace std;int main(){int L,M;cin>>L>>M;int a,b;int x[L];for(int i=0;i<=L;i++){x[i]=0;}for(int i=1;i<=M;i++){cin>>a>>b;for(int j=a;j<=b;j++){x[j]=1;}}int count=0;for(int i=0;i<=L;i++){if(x[i]==0)count++;}cout<<count<<endl;}

6、开关灯假设有 N 盏灯(N 为不大于 5000 的正整数),从 1 到 N 按顺序依次编号,初始时全部 处于开启状态;有 M 个人(M 为不大于 N 的正整数)也从 1 到 M 依次编号。 第一个人(1 号)将灯全部关闭,第二个人(2 号)将编号为 2 的倍数的灯打开,第三 个人(3 号)将编号为 3 的倍数的灯做相反处理(即将打开的灯关闭,将关闭的灯打开)。 依照编号递增顺序,以后的人都和 3 号一样,将凡是自己编号倍数的灯做相反处理。 请问:当第 M 个人操作之后,哪几盏灯是关闭的,按从小到大输出其编号,其间用 逗号间隔。 输入:输入正整数 N 和 M,以单个空格隔开。 输出:顺次输出关闭的灯的编号,其间用逗号间隔。 输入样例 10 10 输出样例 1,4,9

#include<iostream> #include<algorithm>using namespace std;int main(){int n,m;cin>>n>>m;int a[n];int b[n];for(int i=1;i<=n;i++){a[i]=1;}for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){if(i%j==0){if(a[i]==1){a[i]=0;}else if(a[i]==0){a[i]=1;}}}}int flag=1;for(int i=1;i<=n;i++){if(a[i]==0){if(flag)flag=0; elsecout<<",";cout<<i;}}return 0;}

7、查找特定的值在一个序列(下标从 1 开始)中查找一个给定的值,输出第一次出现的位置。 输入 第一行包含一个正整数 n,表示序列中元素个数。1 ≤n≤ 10000。 第二行包含 n 个整数,依次给出序列的每个元素,相邻两个整数之间用单个空格隔 开。元素的绝对值不超过 10000。 第三行包含一个整数 x,为需要查找的特定值。x 的绝对值不超过 10000。 输出 若序列中存在 x,输出 x 第一次出现的下标;否则输出-1。 输入样例 5 2 3 6 7 3 3 输出样例 2

#include<iostream>using namespace std;int main(){int n,flag=0;cin>>n;int a[n];for(int i=1;i<=n;i++){cin>>a[i];}int m;cin>>m;for(int i=1;i<=n;i++){if(a[i]==m){flag=1;cout<<i;break;}}if(flag==0){cout<<-1;}return 0;}

8、最大值和最小值的差(真题)输出一个整数序列中最大的数和最小的数的差。 输入 第一行为 M,表示整数个数,整数个数不会大于 10000; 第二行为 M 个整数,以空格隔开,每个整数的绝对值不会大于 10000。 输出 输出 M 个数中最大值和最小值的差。 输入样例 5 2 5 7 4 2 输出样例 5

#include<iostream>using namespace std;int main(){int M;int max,min;cin>>M;int a[M];for(int i=0;i<M;i++){cin>>a[i];}max=a[0];min=a[0];for(int i=1;i<M;i++){if(max<a[i])max=a[i];if(min>a[i])min=a[i];}cout<<max-min;return 0;}

9、不与最大数相同的数字之和输出一个整数数列中不与最大数相同的数字之和。 输入 输入分为两行: 第一行为 N(N 为接下来数的个数,N ≤ 100); 第二行 N 个整数,数与数之间以一个空格分开,每个整数的范围是-1000,000 到 1000,000。 输出 输出为 N 个数中除去最大数其余数字之和。 输入样例 3 1 2 3 输出样例 3

#include<iostream> #include<algorithm>using namespace std;int main(){int n;cin>>n;long a[n];long sum=0;for(int i=0;i<n;i++){cin>>a[i];}sort(a,a+n);for(int i=0;i<n-1;i++){sum+=a[i];}cout<<sum;return 0;}

10、白细胞计数(高难度 仅供挑战) 医院采样了某临床病例治疗期间的白细胞数量样本 n 份,用于分析某种新抗生素对 该病例的治疗效果。为了降低分析误差,要先从这 n 份样本中去除一个数值最大的样本 和一个数值最小的样本,然后将剩余 n-2 个有效样本的平均值作为分析指标。同时,为 了观察该抗生素的疗效是否稳定,还要给出该平均值的误差,即所有有效样本(即不包 括已扣除的两个样本)与该平均值之差的绝对值的最大值。 现在请你编写程序,根据提供的 n 个样本值,计算出该病例的平均白细胞数量和对 应的误差。 输入:输入的第一行是一个正整数 n( 2 <n≤ 300),表明共有 n 个样本。 以下共有 n 行,每行为一个浮点数,为对应的白细胞数量,其单位为 10^9/L。数与 数之间以一个空格分开。 输出:输出为两个浮点数,中间以一个空格分开。分别为平均白细胞数量和对应的 误差,单位也是 10^9/L。计算结果需保留到小数点后 2 位。 输入样例 内部资料 请勿外传 翻印必究 第 86 页 共 251 页 5 12.0 13.0 11.0 9.0 10.0 输出样例:11.00 1.00

#include<iostream>#include<algorithm>#include<iomanip>#include<cmath>using namespace std;int main(){int n;float sum=0.0;cin>>n;float a[n],b[n-2];for(int i=0;i<n;i++){cin>>a[i];}sort(a,a+n);for(int i=1;i<n-1;i++){sum+=a[i];}float avg=sum/(n-2);for(int i=1;i<n-1;i++){b[i]=abs(a[i]-avg);}sort(b,b+n-2);cout<<fixed<<setprecision(2)<<avg<<" "<<b[n-2];return 0;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。