当前位置:   article > 正文

青少年软件编程C++二级题库(1-10)_#include using namespace std; int main()

#include using namespace std; int main() { int sum=1 for(int i=1;
1 、与指定数字相同的数的个数( 2021 真题)
输出一个整数序列中与指定数字相同的数的个数。
输入:输入包含三行:
第一行为 N,表示整数序列的长度(N ≤ 100);
第二行为 N 个整数,整数之间以一个空格分开;
第三行包含一个整数,为指定的数字 m。
输出
输出为 N 个数中与 m 相同的数的个数。
输入样例
3
2 3 2
2
输出样例
2
  1. #include<iostream>
  2. using namespace std;
  3. int main(){
  4. int N;
  5. cin>>N;
  6. int a[N];
  7. for(int i=0;i<N;i++){
  8. cin>>a[i];
  9. }
  10. int m;
  11. cin>>m;
  12. int t=0;
  13. for(int i=0;i<N;i++){
  14. if(m==a[i])
  15. t++;
  16. }
  17. cout<<t<<endl;
  18. return 0;
  19. }

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
  1. #include <iostream>
  2. #include <iomanip>
  3. using namespace std;
  4. int main()
  5. {
  6. int i, a[10], height, num=0;
  7. for (i=0; i<10; i++) cin >> a[i];
  8. cin >> height;
  9. for (i=0; i<10; i++){
  10. if (a[i]<=height+30) num++;
  11. }
  12. cout << num << endl;
  13. }

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

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
  1. #include<iostream>
  2. using namespace std;
  3. int main()
  4. {
  5. int n;
  6. cin>>n;
  7. int a[n];
  8. for (int i=0; i<n; i++)
  9. cin >> a[i];
  10. for (int i=n-1; i>=0; i--)
  11. cout << a[i] << " ";
  12. return 0;
  13. }

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
  1. #include<iostream>
  2. using namespace std;
  3. int main(){
  4. int L,M;
  5. cin>>L>>M;
  6. int a,b;
  7. int x[L];
  8. for(int i=0;i<=L;i++){
  9. x[i]=0;
  10. }
  11. for(int i=1;i<=M;i++){
  12. cin>>a>>b;
  13. for(int j=a;j<=b;j++){
  14. x[j]=1;
  15. }
  16. }
  17. int count=0;
  18. for(int i=0;i<=L;i++){
  19. if(x[i]==0)
  20. count++;
  21. }
  22. cout<<count<<endl;
  23. }

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
  1. #include<iostream>
  2. #include<algorithm>
  3. using namespace std;
  4. int main(){
  5. int n,m;
  6. cin>>n>>m;
  7. int a[n];
  8. int b[n];
  9. for(int i=1;i<=n;i++){
  10. a[i]=1;
  11. }
  12. for(int i=1;i<=n;i++){
  13. for(int j=1;j<=m;j++){
  14. if(i%j==0){
  15. if(a[i]==1){
  16. a[i]=0;
  17. }else if(a[i]==0){
  18. a[i]=1;
  19. }
  20. }
  21. }
  22. }
  23. int flag=1;
  24. for(int i=1;i<=n;i++){
  25. if(a[i]==0){
  26. if(flag)
  27. flag=0;
  28. else
  29. cout<<",";
  30. cout<<i;
  31. }
  32. }
  33. return 0;
  34. }

7 、查找特定的值
在一个序列(下标从 1 开始)中查找一个给定的值,输出第一次出现的位置。
输入
第一行包含一个正整数 n,表示序列中元素个数。1 ≤n≤ 10000。
第二行包含 n 个整数,依次给出序列的每个元素,相邻两个整数之间用单个空格隔
开。元素的绝对值不超过 10000。
第三行包含一个整数 x,为需要查找的特定值。x 的绝对值不超过 10000。
输出
若序列中存在 x,输出 x 第一次出现的下标;否则输出-1。
输入样例
5
2 3 6 7 3
3
输出样例
2
  1. #include<iostream>
  2. using namespace std;
  3. int main(){
  4. int n,flag=0;
  5. cin>>n;
  6. int a[n];
  7. for(int i=1;i<=n;i++){
  8. cin>>a[i];
  9. }
  10. int m;
  11. cin>>m;
  12. for(int i=1;i<=n;i++){
  13. if(a[i]==m){
  14. flag=1;
  15. cout<<i;
  16. break;
  17. }
  18. }
  19. if(flag==0){
  20. cout<<-1;
  21. }
  22. return 0;
  23. }

8 、最大值和最小值的差( 2021 真题)
输出一个整数序列中最大的数和最小的数的差。
输入
第一行为 M,表示整数个数,整数个数不会大于 10000;
第二行为 M 个整数,以空格隔开,每个整数的绝对值不会大于 10000。
输出
输出 M 个数中最大值和最小值的差。
输入样例
5
2 5 7 4 2
输出样例
5
  1. #include<iostream>
  2. using namespace std;
  3. int main(){
  4. int M;
  5. int max,min;
  6. cin>>M;
  7. int a[M];
  8. for(int i=0;i<M;i++){
  9. cin>>a[i];
  10. }
  11. max=a[0];
  12. min=a[0];
  13. for(int i=1;i<M;i++){
  14. if(max<a[i])
  15. max=a[i];
  16. if(min>a[i])
  17. min=a[i];
  18. }
  19. cout<<max-min;
  20. return 0;
  21. }

9 、不与最大数相同的数字之和
输出一个整数数列中不与最大数相同的数字之和。
输入
输入分为两行:
第一行为 N(N 为接下来数的个数,N ≤ 100);
第二行 N 个整数,数与数之间以一个空格分开,每个整数的范围是-1000,000 到
1000,000。
输出
输出为 N 个数中除去最大数其余数字之和。
输入样例
3
1 2 3
输出样例
3
  1. #include<iostream>
  2. #include<algorithm>
  3. using namespace std;
  4. int main(){
  5. int n;
  6. cin>>n;
  7. long a[n];
  8. long sum=0;
  9. for(int i=0;i<n;i++){
  10. cin>>a[i];
  11. }
  12. sort(a,a+n);
  13. for(int i=0;i<n-1;i++){
  14. sum+=a[i];
  15. }
  16. cout<<sum;
  17. return 0;
  18. }

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
  1. #include<iostream>
  2. #include<algorithm>
  3. #include<iomanip>
  4. #include<cmath>
  5. using namespace std;
  6. int main(){
  7. int n;
  8. float sum=0.0;
  9. cin>>n;
  10. float a[n],b[n-2];
  11. for(int i=0;i<n;i++){
  12. cin>>a[i];
  13. }
  14. sort(a,a+n);
  15. for(int i=1;i<n-1;i++){
  16. sum+=a[i];
  17. }
  18. float avg=sum/(n-2);
  19. for(int i=1;i<n-1;i++){
  20. b[i]=abs(a[i]-avg);
  21. }
  22. sort(b,b+n-2);
  23. cout<<fixed<<setprecision(2)<<avg<<" "<<b[n-2];
  24. return 0;
  25. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/602666
推荐阅读
相关标签
  

闽ICP备14008679号