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

2024-05-09 14:12

本文主要是介绍C++基础-编程练习题和答案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 一、查找插入有序数组的位置
  • 二、最高分
  • 三、不与最大数相同的数字之和
  • 四、最大值和最小值的差
  • 五、数字放大
  • 六、多余的数
  • 七、数字接力
  • 八、幸运大抽奖

一、查找插入有序数组的位置

【试题描述】
给你 m 个已经从小到大排好序的整数, 输入一个数 x, 输出 x 插入的位置,保证 x 插入后
的 m+1 数还是有序的。
【输入要求】
第一行一个整数 m, 表示数的个数 ( m <= 100 )
第二行 m 个整数 ( 这些数在 0-999999 范围内 )
第三行为要查找的数 x
【输出要求】
x 的位置
【输入样例】
10
9 19 20 23 56 78 90 180 190 230
35
【输出样例】
5

#include <bits/stdc++.h>
using namespace std;/**给你 m 个已经从小到大排好序的整数, 输入一个数 x, 输出 x 插入的位置,保证 x 插入后的 m+1 数还是有序的。*/
int main() {  int m;  cin >> m; // 输入数的个数  int nums[m];  for (int i = 0; i < m; ++i) {  cin >> nums[i]; // 输入m个整数  }  int x;  cin >> x; // 输入要查找的数x  //插入的位置int p;// 查找并输出x的插入位置  for (int i = 0; i < m; ++i) {  if(nums[i]>=x){p=i+1;break;}}  // 退出循环时,p即为x的插入位置  cout<<p<<endl;return 0;  
}

二、最高分

【试题描述】
全班 n 个同学的成绩需要按学号读入, 请找出班级最高分, 并找出最高分的得主。 (假设
无重复成绩)
【输入要求】
两行, 第一行为一个正整数 n, 第二行为 n 个实数, 每个实数之间用一个空格分隔。
【输出要求】
NO (学号) : (成绩) 保留小数点后一位小数。
【输入样例】
5
92 97.5 93 87 89
【输出样例】
NO2:97.5

#include <bits/stdc++.h>  using namespace std;  
/**全班 n 个同学的成绩需要按学号读入, 请找出班级最高分, 并找出最高分的得主。 (假设无重复成绩)*/
int main() {  int n;  cin >> n; // 读取学生数量  double scores[n];double maxScore = 0; // 初始化最高分0int maxScoreIndex = 0; // 最高分对应的学号索引  for (int i = 0; i < n; ++i) {  cin >> scores[i]; // 读取成绩  }  for (int i = 0; i < n; ++i) {  if (scores[i] > maxScore) {  maxScore = scores[i]; // 更新最高分  maxScoreIndex = i; // 更新最高分对应的学号索引  }  }  // 输出最高分及其学号  cout << "NO" << maxScoreIndex + 1 << ":" << fixed << setprecision(1) << maxScore << endl;  return 0;  
}

三、不与最大数相同的数字之和

【试题描述】
求出一个整数数列中不与最大数相同的数字之和。
【输入要求】
输入分为两行:
第一行为 n, (n ≤ 100)
第二行为 n 个整数。
【输出要求】
输出为 n 个数中不与最大数相同的其余数字之和。
【输入样例】
3
1 2 3
【输出样例】
3

#include <bits/stdc++.h>  
using namespace std;
/**求出一个整数数列中不与最大数相同的数字之和。*/int main() {  int n;  cin >> n; // 输入整数n  //定义n个元素的数组int m[n];  for (int i = 0; i < n; i++) {  cin >> m[i]; // 输入n个整数  }  // 找到数组中的最大数  int max=m[0];for(int i=0;i<n;i++){if(m[i]>max){max=m[i];}}int sum = 0;  // 计算所有不与最大数相同的数字之和  for (int i = 0; i < n; i++) {   if (m[i] != max) {  sum = sum+m[i];  }  }  cout << sum << endl; // 输出结果  return 0;  
}

四、最大值和最小值的差

【试题描述】
输出一个整数序列中最大的数和最小的数的差。
【输入要求】
第一行为 n, 表示整数个数, 整数个数不会大于 10000;
第二行为 n 个整数, 每个整数的绝对值不会大于 10000。
【输出要求】
输出 n 给数中最大值和最小值的差。
【输入样例】
5
2 5 7 4 2
【输出样例】
5

#include <bits/stdc++.h>
using namespace std;
/**最大值和最小值的差*/int main() {  int n;  cin >> n; // 输入整数个数  int numbers[n];  for (int i = 0; i < n; ++i) {  cin >> numbers[i]; // 输入整数序列  }  // 初始化最大值为,最小值int max_num = numbers[0];  int min_num = numbers[0];  // 遍历数组找到最大值和最小值  for(int i=0;i<n;i++){max_num = max(max_num, numbers[i]);  min_num = min(min_num, numbers[i]); }// 计算最大值和最小值的差  int diff = max_num - min_num;  cout << diff << endl; // 输出结果  return 0;  
}

五、数字放大

【试题描述】
给定一些整数以及放大倍数 x, 将每个整数放大 x 倍后输出。
【输入要求】
包含三行:
第一行为 n, 表示整数的个数
第二行为 n 个给定的整数(不超过整形范围)
第三行为整数 x, 表示放大的倍数
【输出要求】
n 个整数, 为原数列放大之后的数列, 两数之间以一个空格分开。
【输入样例】
3
1 5 7
2
【输出样例】
2 10 14

#include<bits/stdc++.h>
using namespace std;
/**给定一些整数以及放大倍数 x, 将每个整数放大 x 倍后输出。*/int main() {  int n;  cin >> n; // 输入整数的个数  int numbers[n];  for (int i = 0; i < n; ++i) {  cin >> numbers[i]; // 输入给定的整数  }  int x;  cin >> x; // 输入放大的倍数  // 放大每个整数并输出  for (int i = 0; i < n; ++i) {  cout << numbers[i] * x  << " ";  }  return 0;  
}

六、多余的数

【试题描述】
小 A 同学在完成一个数学题: 求给定的 n 个整数的和。 小 A 同学在求完之后发现和参考答案
对不上, 检查后发现在求和过程中多计算了一个数, 其他过程没问题。 现给出小 A 计算用的
n+1 个数, 以及正确的参考答案, 请算出小 A 同学多计算的那一个数。
【输入要求】
第一行 n 的值
第二行 n+1 个正整数, 每个数小于等于 1000000
第三行一个整数 x, 表示参考答案
【输出要求】
一个整数, 表示多计算的那一个数。
【输入样例】
10
2 4 6 8 1 3 5 7 9 5 11
54
【输出样例】
7
【提示】
样例中原有的 10 个数为 2 4 6 8 1 3 5 9 5 11, 和为 54, 多余的数为 7。

#include<bits/stdc++.h>
using namespace std;
/**小 A 同学在完成一个数学题: 求给定的 n 个整数的和。 小 A 同学在求完之后发现和参考答案对不上, 检查后发现在求和过程中多计算了一个数, 其他过程没问题。 现给出小 A 计算用的n+1 个数, 以及正确的参考答案, 请算出小 A 同学多计算的那一个数。*/int main() {  int n;  cin >> n; // 输入整数的个数  int m[n + 1]; // 创建大小为n+1的数组来存储n+1个数  for (int i = 0; i < n + 1; ++i) {  cin >> m[i]; // 输入n+1个整数  }  int correct;  cin >> correct; // 输入参考答案  // 计算所有n+1个数的和  int sumOfAll = 0;  for (int i=0;i<n+1;++i) {  sumOfAll += m[i];  }  // 计算多出的那个数  int extraNum = sumOfAll - correct;  cout << extraNum << endl; // 输出多出的那个数  return 0;  
}

七、数字接力

【试题描述】
奶牛们在玩一个数字游戏, 它们从一个整数开始, 比如: 6593。 将这个整数中的各位数
字全部取出, 将他们相乘, 得到一个新的整数, 上面的例子就是 6593=810, 然后继续做
下去, 8
10=0 得到了一个个位数 0。
帮助奶牛完成这个游戏, 读入一个数并计算出有游戏得到一个个位数的过程。
【输入要求】
一个整数 N(10<=n<= 2,000,000,000)。
【输出要求】
在单独的一行中按顺序输出游戏过程中产生的每一个数直到一个个位数结束。 相邻两数
之间要求严格用一个空格隔开, 最后一个数之后不能有空格。
【输入样例】
98886
【输出样例】
98886 27648 2688 768 336 54 20 0

#include<bits/stdc++.h>
using namespace std;
/**奶牛们在玩一个数字游戏,它们从一个整数开始,比如: 6593。将这个整数中的各位数字全部取出,将他们相乘,得到一个新的整数,上面的例子就是 6*5*9*3=810,然后继续做下去,8*1*0*=0 得到了一个个位数 0。帮助奶牛完成这个游戏,读入一个数并计算出有游戏得到一个个位数的过程。*/
int main() {  int n;  cin >> n; // 输入整数  int current = n;  //输出ncout<< n << " ";//当得到一个个位数时停止while  (current >9){int product = 1;  //取出每个位上的数相乘while (current > 0) {  product =product* (current % 10); // 取出最低位数字并相乘  current = current/10;           // 去掉最低位数字  }current=product;// 输出游戏过程中产生的每一个数 cout<< product ;if(product>9){//相邻两数之间要求严格用一个空格隔开。cout << " ";	}}  return 0;  
}

八、幸运大抽奖

【试题描述】
淘淘参加游乐园的幸运大抽奖活动。 活动规则如下: 通过参加 5 项游乐活动, 获得相应积分,
积分和的各位数字之和若为回文数, 则可到领奖处领取奖品一份。 请编程完成判断。
【输入要求】
输入 5 个整数
【输出要求】
Congratulations!或者 Sorry!
【输入样例】
51 26 3 21 8
【输出样例】
Sorry!
【解题提示】
回文数即数字顺着和反着是同一个数。 如 121

#include<bits/stdc++.h>
using namespace std;
/**淘淘参加游乐园的幸运大抽奖活动。 活动规则如下: 通过参加 5 项游乐活动, 获得相应积分,积分和的各位数字之和若为回文数, 则可到领奖处领取奖品一份。 请编程完成判断。输入20 21 10 11 12输出Congratulations!*/int main() {  //定义积分数组int scores[5];  // 读取5个整数  for (int i = 0; i < 5; ++i) {  cin >> scores[i];  }  // 计算5个整数的和  109int total = 0;  for (int i=0;i<5;i++) {  total += scores[i];  }  // 计算和的各位数之和   9+0+1=10int sum = 0;  while (total > 0) {  sum = sum + total % 10;  //取最低位数字total /= 10;  // 去掉最低位数字}  int s = sum; // 将sum的各位数反过来  0+1=1int reversed = 0;  while (s > 0) {  //乘以10+对10取余数 得到回文数字reversed = reversed * 10 + s % 10;  s /= 10;  }   // 判断各位数之和是否是回文数  1 不等于10	if (sum == reversed) {  cout << "Congratulations!" << endl;  } else {  cout << "Sorry!" << endl;  }  return 0;  
}

这篇关于C++基础-编程练习题和答案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/973617

相关文章

c++ 类成员变量默认初始值的实现

《c++类成员变量默认初始值的实现》本文主要介绍了c++类成员变量默认初始值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录C++类成员变量初始化c++类的变量的初始化在C++中,如果使用类成员变量时未给定其初始值,那么它将被

C++中NULL与nullptr的区别小结

《C++中NULL与nullptr的区别小结》本文介绍了C++编程中NULL与nullptr的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编... 目录C++98空值——NULLC++11空值——nullptr区别对比示例 C++98空值——NUL

C++ Log4cpp跨平台日志库的使用小结

《C++Log4cpp跨平台日志库的使用小结》Log4cpp是c++类库,本文详细介绍了C++日志库log4cpp的使用方法,及设置日志输出格式和优先级,具有一定的参考价值,感兴趣的可以了解一下... 目录一、介绍1. log4cpp的日志方式2.设置日志输出的格式3. 设置日志的输出优先级二、Window

从入门到精通C++11 <chrono> 库特性

《从入门到精通C++11<chrono>库特性》chrono库是C++11中一个非常强大和实用的库,它为时间处理提供了丰富的功能和类型安全的接口,通过本文的介绍,我们了解了chrono库的基本概念... 目录一、引言1.1 为什么需要<chrono>库1.2<chrono>库的基本概念二、时间段(Durat

C++20管道运算符的实现示例

《C++20管道运算符的实现示例》本文简要介绍C++20管道运算符的使用与实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录标准库的管道运算符使用自己实现类似的管道运算符我们不打算介绍太多,因为它实际属于c++20最为重要的

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁

c++中的set容器介绍及操作大全

《c++中的set容器介绍及操作大全》:本文主要介绍c++中的set容器介绍及操作大全,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录​​一、核心特性​​️ ​​二、基本操作​​​​1. 初始化与赋值​​​​2. 增删查操作​​​​3. 遍历方

解析C++11 static_assert及与Boost库的关联从入门到精通

《解析C++11static_assert及与Boost库的关联从入门到精通》static_assert是C++中强大的编译时验证工具,它能够在编译阶段拦截不符合预期的类型或值,增强代码的健壮性,通... 目录一、背景知识:传统断言方法的局限性1.1 assert宏1.2 #error指令1.3 第三方解决

C++11委托构造函数和继承构造函数的实现

《C++11委托构造函数和继承构造函数的实现》C++引入了委托构造函数和继承构造函数这两个重要的特性,本文主要介绍了C++11委托构造函数和继承构造函数的实现,具有一定的参考价值,感兴趣的可以了解一下... 目录引言一、委托构造函数1.1 委托构造函数的定义与作用1.2 委托构造函数的语法1.3 委托构造函