19 Star 174 Fork 280

飞行器智能感知与控制 / learn_programming

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
CodePractice.md 12.45 KB
一键复制 编辑 原始数据 按行查看 历史
布树辉 提交于 2022-01-14 16:30 . Update C++ code practice

编程练习题

1. 基础题

1.1 最大值

输入3个数,求最大值

1.2 二次方程的根

编程序,求方程a*x^2+b*x+c=0的根

1.3 是否是三角形

输入3个double类型的值,判断这3个值是否可以表示一个三角形的三条边

2. 控制与循环

2.1 找最大值、最小值和平均数

输入n个数,求其最大值与最小值和平均数。

2.2 3个数排序

从键盘输入3个整数,把输入的数存入多个变量,然后对这些变量进行排序,按照由小到大的顺序打印输出。

2.3 符合条件的数

输出显示自然数1~100之间除5余2或被9整除的数字。

2.4 没有重复数字

统计数字0~9可以组成多少个没有重复数字的3位数。

2.5 鸡兔的个数

已知鸡兔一共30只,脚共有90指,计算鸡兔各有多少只。

2.6 猴子吃桃

猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个

第二天早上又将剩下的桃子吃掉一半,又多吃了一个。

以后每天早上都吃了前一天剩下的一半零一个。

到第10天早上想再吃时,见只剩下一个桃子了。

求第一天共摘了多少。

2.7 打印图案

打印出如下图案(菱形)

   *
  ***
 *****
*******
 *****
  ***
   *

3. 函数

3.1 整数的各位数字求和

求一个整数的各位数之和的函数

3.2 点数统计

掷骰子10000次,统计得到各点数的次数。

3.3 素数

写一函数,判断某个数是否素数,以及求1-1000之内的素数。

3.4 求自然指数e的值

求 e=1 + 1/1! + 1/2! + 1/3! + …

3.5 求圆周率

求PI值,PI/4 = 1 - 1/3 + 1/5 - 1/7 + …

3.6 数字的统计

输入20个数,统计其中正数、负数和零的个数。

3.7 奇数之和、偶数之和

输入若干个整数,计算其中的奇数之和与偶数之和,假设输入0表示结束。

3.8 水仙花数

计算三位数中所有的水仙花数。

水仙花数是指一个 n 位正整数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3+ 3^3 = 153)。

3.9 变量值交换

写一个函数,交换两个整型变量的值

3.10 欧式距离计算

编写计算距离的函数distance,计算两点(x1,y1)和(x2,y2)之间的距离

3.11 矩阵乘积

编一程序,求两个矩阵的乘积。

3.12 体育运动成绩

写一个程序,进行体操评分,依次输入10名评委所评分数,去除一个最高分和一个最低分,再算出平均分作为选手的得分。

3.13 选数字

从52个数里随机选13个数,并将选择的数字打印出来。

3.14 阶乘计算

编写函数,求100!

3.15 汉诺塔

汉诺塔问题源自印度一个古老的传说,印度教的“创造之神”梵天创造世界时做了 3 根金刚石柱,其中的一根柱子上按照从小到大的顺序摞着 64 个黄金圆盘。

hanoi

梵天命令一个叫婆罗门的门徒将所有的圆盘移动到另一个柱子上,移动过程中必须遵守以下规则:

  • 每次只能移动柱子最顶端的一个圆盘;

  • 每个柱子上,小圆盘永远要位于大圆盘之上。

编写程序求解汉诺塔移动圆盘的动作序列,只要打印移动序列即可,可以给柱子编号、圆盘编号。

4. 数组

4.1 数组逆序

写一函数,将一数组中的元素反转(第一个元素放到最后,最后的元素放到最前面)。

4.2 数组的最大元素

写一函数,在一个数组中找出最大元素的位置。

4.3 求鞍点

找出一个二维数组中的鞍点,即该元素在该行上最大,在该列上最小。

4.4 查找某个值

写一函数,在一数组里查找某个值(第一次出现即可)。

4.5 求子数组的最大和

输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。

例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18。

4.6 查找最小的k个元素

输入n个整数,输出其中最小的k个。

例如输入1,2,3,4,5,6,7和8这8个数字,则最小的4个数字为1,2,3和4。

4.7 两数之和

给定一个整数数组和一个目标值,找出数组中和为目标值的两个数的下标。

你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。示例:

示例1:

nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

5. 字符串

5.1 字符串的排列

输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则输出由字符a、b、c所能排列出来的所有字符串abcacbbacbcacabcba

5.2 统计大小写字母的个数

编一程序,输入一行字符串,统计其中的小写英文字母的个数

5.3 大小写转化

编一程序,输入一行字符串,将其中的大写英文字母改为小写,再输出。

5.4 字符串拷贝

写一个字符串拷贝函数

5.5 字符串比较函数

写一个字符串比较函数

5.6 字符串连接函数

写一个字符串连接函数

5.7 字符串长度

写一个求字符串长度函数

5.8 杨辉三角形

打印杨辉三角形(帕斯卡三角形),打印10行。下面是四行的杨辉三角形示例。

    1
   1  1
 1  2  1
1  3  3  1

5.9 九九乘法表

打印一个九九乘法表

5.10 翻转句子中单词的顺序

输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。

例如输入“I am a student.”,则输出“student. a am I”。

5.11 删除字符串中的字符

输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”

示例1:

输入:
They are students.
aeiou

输出
Thy r stdnts.

5.12 字符串最后一个单词的长度

题目描述:计算字符串最后一个单词的长度,单词以空格隔开。

  • 输入描述: 一行字符串,非空,长度小于5000。
  • 输出描述: 整数N,最后一个单词的长度。

示例1:

输入:
hello world

输出:
5

5.13 计算字符个数

写出一个程序,接受一个有字母和数字以及空格组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。

  • 输入描述: 输入一个有字母和数字以及空格组成的字符串,和一个字符。
  • 输出描述:输出输入字符串中含有该字符的个数。

示例1:

输入:
ABCDEF A

输出:
1

5.14 简单密码破解

密码是我们生活中非常重要的东东,接下来渊子要在密码之上再加一套密码,虽然简单但也安全。

假设渊子原来一个BBS上的密码为zvbo9441987,为了方便记忆,他通过一种算法把这个密码变换成YUANzhi1987,这个密码是他的名字和出生年份,怎么忘都忘不了,而且可以明目张胆地放在显眼的地方而不被别人知道真正的密码。

他是这么变换的,大家都知道手机上的字母: 1--1, abc--2, def--3, ghi--4, jkl--5, mno--6, pqrs--7, tuv--8 wxyz--9, 0--0,就这么简单,渊子把密码中出现的小写字母都变成对应的数字,数字和其他的符号都不做变换,

声明:密码中没有空格,而密码中出现的大写字母则变成小写之后往后移一位,如:X,先变成小写,再往后移一位,不就是y了嘛,简单吧。记住,z往后移是a哦。

  • 输入描述:输入包括多个测试数据。输入是一个明文,密码长度不超过100个字符,输入直到文件结尾;
  • 输出描述:输出渊子真正的密文

示例1:

输入:
YUANzhi1987

输出:
zvbo9441987

5.15 括号配对检测

用户输入一行字符串,其中可能包括小括号 (),请检查小括号是否配对正确(本题仅限于小括号)

示例1 :

输入: ((1+2) + 3)
输出:True

示例2 :

输入: 3 + 4 + (4+3+((1+2))
输出:False

6. 指针

6.1 使用指针改变数组的元素顺序

有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数。运行效果如下:

未改变数组为:   1  2  3   4  5  6  7  8  9  10	
改变后的数组为: 8  9  10  1  2  3  4  5  6  7	

6.2 字符串拷贝

编写一个函数,完成字符串拷贝,要求用字符指针实现。在主函数中输入任意字符串,并显示原字符串,调用该函数之后输出拷贝后的字符串。

6.3 求字符串长度

编写一个函数,求一个字符串的长度,要求用字符指针实现。在主函数中输入字符串,调用该函数输出其长度。

6.4 矩阵转置

编写一个函数(参数用指针),将一个3x3矩阵转置。

6.5 找到矩阵的最大值

找出一个2x3的矩阵中的最大值及其行下标和列下标,需要调用子函数来实现。

6.6 字符串统计

编写一个函数,用于统计一个字符串中字母、数字、空格的个数。

6.7 链表反转

给定一组数字,构建链表。然后通过一个链表反转函数,生成一个新的链表,各个元素的顺序是原数据的逆序。

7. 数据结构

7.1 查找链表中倒数第k个结点

输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针。链表结点定义如下:

struct ListNode
{
	int       m_nKey;
	ListNode* m_pNext;
};

7.2 在排序数组中查找和为给定值的两个数字

输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。

例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。

7.3 从上往下遍历二叉树

输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。

例如输入

      8
    /  \
   6    10
    /\    /\
  5  7  9  11

输出:8 6 10 5 7 9 11。

7.4 设计包含min函数的栈

定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以及pop的时间复杂度都是O(1)。

8. 类与模版

8.1 函数模版

编写一个函数模板,分别求一个组数里面数据的最大值,最小值和平均值。

8.2 数据交换函数模版

编写一个函数模板,实现数据交换的操作。

8.3 类模板

编写一个类模板,完成对不同数据类型的数组的排序(小到大)操作。如下是输入的数据

    int array[5]={3,6,2,1,4};
    double array[5]={3.1,1.2,4.5,1.1,0.2};

8.4 类模版的链表

用类模板创建单链表,并实现在链表里增加一个节点和删除一个节点的操作。

8.5 类与继承

编写一个程序,其中有一个汽车类Vehicle,它具有一个需要传递参数的构造函数,类中的数据成员:车轮个数wheels和车重weight为保护属性;小车类Car是它的私有派生类,其中包含载人数passager_load;卡车类Truck是Vehicle的私有派生类,其中包含载人数passager_load和载重量payload。每个类都有相关数据的输出方法。

9. 文件操作

9.1 读取文本文件

编写一个文本分析的程序,从文本文件读取一段英文文章,统计单词出现的次数。

9.2 输出杨辉三角形

编写一个程序计算杨辉三角形,并输出到一个文本文件。

9.3 图书管理系统

编写一个简单的图书管理系统,通过二进制文件记录用户、图书等数据。在程序运行的时候从二进制文件加载数据生成对象,程序退前将对象保存到二进制文件。包含的功能主要有:1)用户名称,id,借阅的图书,归还时间;2)图书名称,图书iD,借阅人,数量;3)通过书名查询借阅人、剩余数量;4)通过人名,查阅借阅的图书

C++
1
https://gitee.com/pi-lab/learn_programming.git
git@gitee.com:pi-lab/learn_programming.git
pi-lab
learn_programming
learn_programming
master

搜索帮助