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

C++基础-编程练习题2

文章目录

  • 前言
  • 一、查找“支撑数”
  • 二、数组元素的查找
  • 三、爬楼梯
  • 四、数字交换
  • 五、找高于平均分的人


前言

C++基础-编程练习题和答案


一、查找“支撑数”

【试题描述】
在已知一组整数中, 有这样一种数非常怪, 它们不在第一个, 也不在最后一个, 而且刚好都
比左边和右边相邻的数大, 你能找到它们吗?
【输入要求】
第一行为整数 m, 表示输入的整数个数。 ( 3≤ m ≤100 ) 第二行为 m 个整数。
【输出要求】
若干个支撑数, 每行一个。
【输入样例】
14
1 3 2 4 1 5 3 9 7 10 8 23 85 43
【输出样例】
3
4
5
9
10
85

#include <bits/stdc++.h>
using namespace std;
/*
在已知一组整数中,有这样一种数非常怪,它们不在第一个,也不在最后一个,而且刚好都比左边和右边相邻的数大,你能找到它们吗?
*/
int main() { //定义变量mint m;  cin >> m; // 输入整数的个数  if (m < 3 || m > 100) {  cout << "输入的整数个数不符合要求!" << endl;  return 1;  }  //定义m个元素的数组int nums[m];  for (int i = 0; i < m; ++i) {  cin >> nums[i]; // 输入整数  }  // 遍历整数数组,跳过第一个和最后一个元素for (int i = 1; i < m - 1; ++i) {   if (nums[i] > nums[i - 1] && nums[i] > nums[i + 1]) {  // 如果当前数比左右两边的数都大,则是支撑数  cout << nums[i]<<endl;  }  }  return 0;  
}

二、数组元素的查找

【试题描述】
给你 m 个整数, 查找其中有无值为 x 的数, 输出 x 一共有几个.
【输入要求】
第一行一个整数 m: 数的个数 ( 0 ≤ m ≤ 100 )
第二行 m 个整数(空格隔开) ( 这些数在 0-999999 范围内 )
第三行为要查找的数 x
【输出要求】
一个整数, 表示 x 的个数。
【输入样例】
7
10 21 3 3 5 3 7
3
【输出样例】
3

代码如下:

#include <bits/stdc++.h>using namespace std;  
/*** 给你 m 个整数, 查找其中有无值为 x 的数, 输出 x 一共有几个.* @return */
int main() {  int m;  cin >> m; // 读取整数个数  // 创建一个大小为m的整数数组int nums[m];for (int i = 0; i < m; ++i) {  cin >> nums[i]; // 读取每个整数  }  int x;  cin >> x; // 读取要查找的数x  int count = 0; // 初始化计数器  // 遍历整数数组 for(int i=0;i<m;i++){		if (nums[i] == x) { // 如果找到与x相等的数  ++count; // 计数器加1  }  }  cout << count << endl; // 输出x的个数  return 0;  
}

三、爬楼梯

【试题描述】
有一段楼梯有 n 级台阶,规定每一步只能跨一级或两级,要登上第 m 级台阶有几种不同的走法?
(n<=1000, m<n)
【输入要求】
一行, 两个正整数 n 和 m。
【输出要求】
一个整数
【输入样例】
10 4
【输出样例】
5

#include <bits/stdc++.h>using namespace std;  
/*
有一段楼梯有 n 级台阶,规定每一步只能跨一级或两级,要登上第 m 级台阶有几种不同的走法?
*/int main() {  int n, m;  cin >> n >> m;  // 这里n是楼梯的总级数,但根据题目要求,我们只需要计算到达第m级台阶的方法数  if (m <= 2) {  return m;  }  //定义m级台阶走法数组int dp[m];//一级台阶1种走法dp[0] = 1;  //二级台阶2种走法dp[1] = 2;  //第i级台阶走法=第i-1级台阶走法+第i-2级台阶走法for (int i = 2; i < m; ++i) {  dp[i] = dp[i - 1] + dp[i - 2];  }  //第 m 级台阶的走法数cout << dp[m - 1] << endl;  return 0;  
}

四、数字交换

【试题描述】
有一组数(设有 N 个) 。 有 M 组操作,每组操作交换给定的两个数.编一程序输出经过 M 次
交换后的数组。
【输入要求】
第一行, 两个数 N, M(不超过 20 个)
第二行 N 个数, 由空格分开
从第三行开始连续有 M 行, 每行 2 个数字(即 M 组数) 。
以其中一行数字举例: 比如 3 5 表示第三个数和第五个数交换。
【输出要求】
交换后的一行数(中间用空格隔开)
【输入样例】
16 2
3 6 11 45 23 70 67 34 26 89 90 15 56 50 20 10
3 5
13 15
【输出样例】
3 6 23 45 11 70 67 34 26 89 90 15 20 50 56 10

#include <bits/stdc++.h>using namespace std;  
/**有一组数(设有 N 个),有 M 组操作,每组操作交换给定的两个数.编一程序输出经过 M 次交换后的数组。*/
int main() {  int n, m;  cin >> n >> m; // 读取数组长度和操作次数  //定义数组int nums[n];  for (int i = 0; i < n; i++) {  cin >> nums[i]; // 读取初始数组  }  // 执行交换操作  for (int i = 1; i <= m; ++i) {  int index1, index2;  cin >> index1 >> index2; // 读取需要交换的两个数的索引  index1=index1-1;// 注意:C++中的数组索引是从0开始的,所以要将输入的索引减1  // tmp用于交换的中间变量 交换两个数  int tmp=nums[index1];nums[index1]=nums[index2 - 1];nums[index2 - 1]=tmp;}  // 输出交换后的数组  for (int i = 0; i < n; ++i) {  cout << nums[i] << " ";  }  return 0;  
}

五、找高于平均分的人

【试题描述】
全班 n 个同学的成绩需要按学号读入, 请找出所有高于班级的平均同学。
【输入要求】
两行, 第一行为一个正整数 n, 第二行为 n 个实数, 每个实数之间用一个空格分隔。
【输出要求】
一行, 输出高于班平均的同学的学号, 场宽为 10。
【输入样例】
5
92 97.5 93 87 89
输出样例
1 2 3

#include <bits/stdc++.h>using namespace std;  
/**全班 n 个同学的成绩需要按学号读入, 请找出所有高于班级的平均同学。*/
int main() {  int n;  cin >> n; // 读取学生数量  double scores[n];//循环读取n个学生数量for (int i = 0; i < n; ++i) {  cin >> scores[i]; // 读取第i个学生成绩  }  double sum = 0.0;  for (int i = 0; i < n; ++i) {  // 计算成绩总和  sum += scores[i]; }  // 计算平均成绩  double average = sum / n; //cout<<"平均分"<<average<<endl;for (int i = 0; i < n; ++i) {  if (scores[i] > average) {  // 输出高于平均分的同学学号,学号是从1开始的cout << setw(10) << (i + 1) << " ";   }  }  cout << endl; // 输出结束后换行  return 0;  
}
http://www.lryc.cn/news/342517.html

相关文章:

  • Linux下GraspNet复现流程
  • Linux——MySQL5.7编译安装、RPM安装、yum安装
  • LSTM递归预测(matlab)
  • 计算机网络 备查
  • 查看软件包依赖关系
  • C++ 中 strcmp(a,b) 函数的用法
  • Servlet(一些实战小示例)
  • 【JVM】垃圾回收机制(Garbage Collection)
  • C++中的priority_queue模拟实现
  • 【Kafka】1.Kafka核心概念、应用场景、常见问题及异常
  • LTE的EARFCN和band之间的对应关系
  • 解决问题:Docker证书到期(Error grabbing logs: rpc error: code = Unknown)导致无法查看日志
  • 【C语言】预处理器
  • QtConcurrent::run操作界面ui的注意事项(2)
  • 黑马程序员HarmonyOS4+NEXT星河版入门到企业级实战教程笔记
  • 嵌入式全栈开发学习笔记---C语言笔试复习大全13(编程题9~16)
  • https网站安全证书的作用与免费申请办法
  • 自动化测试再升级,大模型与软件测试相结合
  • centos7 基础命令
  • 【设计模式】之单例模式
  • 3d模型实体显示有隐藏黑线?---模大狮模型网
  • 共享购:全新消费模式的探索与实践
  • Java集合 总结篇(全)
  • Dubbo分层架构深度解析
  • LocalDate 数据库不兼容问题,因为LocalDate 是 long 类型的
  • RVM(相关向量机)、CNN_RVM(卷积神经网络结合相关向量机)、RVM-Adaboost(相关向量机结合Adaboost)
  • Java--方法的使用
  • linux - 主次设备号自动申请
  • 我写了一套几乎无敌的参数校验组件!基于 SpEL 的参数校验组件「SpEL Validator」
  • 输入序列太长 gan CGAN