0
点赞
收藏
分享

微信扫一扫

C++编程一级二级三级四级五级题库260题及参考答案第六版

沐之轻语 2022-03-19 阅读 75
c语言c++

C语言一级题库80题

C语言一级考纲说明

1、计算(a+b)/c的值

2、反向输出一个三位数(2020年真题)

3、打印字符

4、输出保留12位小数的浮点数

5、判断能否被3,5,7整除

6、骑车与走路

7、画矩形

8、含k个3的数

9、计算表达式的值

10、判断是否存在重复的数(2019年真题)

11、日期输出

12、与指定数字相同的数的个数

13、输出第二个整数

14、浮点数向零舍入

15、计算(a+b)*c的值

16、苹果和虫子

17、输出绝对值

18、计算邮资

19、求整数的和与均值

20、数1的个数

21、逻辑判断问题

22、ASCII码

23、判断平闰年

24、求最大公约数

25、分糖果游戏

26、自行车和三轮车

27、数据分段问题

28、字符菱形

29、 对齐输出

30、 等差数列末项计算

31、 计算线段长度

32、 计算2的幂

33、奇偶数判断

34、分段函数

35、银行利息

36、财务管理

37、计算多项式的值

38、温度表达转化

39、与圆相关的计算

40、大象喝水

41、判断是否为两位数

42、三角形判断

43、简单计算器

44、最高的分数

45、人口增长问题

46、斐波那契数列

47、球弹跳高度的计算

48、角谷猜想(2021真题)

49、统计满足条件的4位数个数

50、分离整数的各个数位

51、开关灯

52、 地球人口承载力估计

53、 计算分数的浮点数值

54、 晶晶赴约会(2021年真题)

55、求平均年龄

56、最高的分数

57、 奥运奖牌计数

58、 奇数求和

59、整数的个数(2020年真题)

60、救援

61、津津的储蓄计划

62、正常血压

63、 计算星期几

64、 数字反转

65、求阶乘的和

66、质因数分解

67、 计算并联电阻

68、 计算球的体积

69、 行李收费

70、 买笔方案

71、 输出整数(2020年真题)

72、 新冠疫情死亡率(2020年真题)

73、 有一门课不及格的学生(2020年真题)

74、 骑士的金币(2020年真题)

75、 求满足条件的3位数(2020年真题)

76、 数的输入和输出(2021年6月真题)

77、 大写字母的判断(2021年6月真题)

78、 特殊求和(2021年6月真题)

79、 硬币翻转(开关门开关灯(2021年6月真题)

80、 百钱百鸡问题  (搬砖问题)

C语言二级题库61题及参考答案

数组部分

1、与指定数字相同的数的个数(2021真题)

2、陶陶摘苹果

3、计算书费

4、数组逆序重存放

5、校门外的树

6、开关灯

7、查找特定的值

8、最大值和最小值的差(2021真题)

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

11、整数去重

12、铺地毯

13、矩阵交换行

14、计算矩阵边缘元素之和

15、计算鞍点

16、矩阵转置

17、统计数字字符个数

18、找第一个只出现一次的字符(2021真题)

19、石头剪子布

20、合法C标识符

21、密码翻译

22、加密的病历单

23、单词的长度

24、单词翻转

25、判断字符串是否为回文

27、最长单词

函数部分

28、求正整数2和n之间的完全数

29、素数个数

30、绝对素数

31、亲和数

32、回文三位数

33、哥德巴赫猜想

34、甲流病人初筛

35、统计单词数

36、素数对

37、小蓝家的门牌号

38、质数的和与积

39、判断素数个数

40、最大质因子序列

41、二进制分类

42、十六进制转十进制

43、十进制转十六进制

44、简单密码

45、蛇形填充数组

46、图像相似度(2021真题)

47、和为给定数(2021真题)

48、计算两个日期之间的天数 (2021真题)

49、石头剪刀布(2021真题)

50、最长最短单词(2021真题)

51、啤酒厂选址(2021真题)

52、统计误差范围内的数(2020真题)

53、单词倒排(2020真题)

54、细菌的繁殖与扩散(2020真题)

55、大整数加法(2020真题)

56、循环数(2020真题)

57、数字放大 高精度乘法(2021年6月真题)

58、统一文件名(2021年6月真题

59、求矩阵内部元素之和(2021年6月真题)

60、整数奇偶排序(2021年6月真题)

61、计算好数(二进制分类)(2021年6月真题)

C语言三级题库56题及参考答案

C语言三级考纲说明

1、求1+2+3+...

2、倒序数

3、十进制转任意进制

4、字符串逆序

5、阿克曼(Ackmann)函数

6、digit函数

7、Hermite多项式

8、流感传染 

9、苹果消消乐

10、车厢重组 (冒泡排序)

11、求逆序对

12、谁考了第k名

13、奇数单增序列

14、成绩排序

15、奖学金

16、分数线划定

17、整数奇偶排序 

18、合影效果(真题 整数奇偶排序 )

19、明明的随机数(排序 去重)

20、单词排序

21、出现次数超过一半的数

22、统计字符数

23、昆虫繁殖

24、位数问题

25、斐波那契数列

26、Pell数列 

27、上台阶 巧克力吃法问题

28、放苹果  

29、吃糖果

30、踩方格

31、分解因数

32、最大公约数和最小公倍数

33、2的幂次方表示

34、计算鞍点

35、逆波兰表达式

36、求因子和

37、质数的和与积

38、数字方格

39、最简真分数

40、全排列

41、爬楼梯

42、求最大公约数问题

43、Minecraft 

44、因子问题 (真题)

45、铺砖 (真题)

46、汉诺塔问题

47、求最大公约数问题

48、因子分解

49、完美立方

50、猴子吃桃

51、 过河卒 (NOIP2002)

52、 山区建小学

53、 数对

54、 井和绳子

55、 数列

56、 爬楼

C语言四级题库35题

C语言四级考纲说明

1、大盗阿福

2、数字三角形最佳路径问题

3、小球放盒子-动态规划

4、最大子矩阵

2020年12月真题

5、宠物小精灵之收服

6、酒鬼

7、鸣人的影分身

8、重启系统

9、登山-动态规划

10、最大上升子序列

11、判断整除-地推算法

12、计算字符串距离

2020年12月真题

13、开餐馆

14、带通配符的字符串匹配

2020年9月真题

15、怪盗基德的滑翔翼

16、糖果

17、切割回文

2020年6月真题

18、最长上升子序列

19、核电站

20、山区建小学-地推算法

21、公共子序列

22、数字金字塔

23、拦截导弹

24、 挖地雷

25、 友好城市

26、 合唱队形

27、 机器分配

28、 摘花生

29、 最低通行费

30、 合并石子

31、 乘积最大

32、 方格取数

33、 滑雪

34、 数的划分 动态规划

35、 股票买卖

数组部分

1、与指定数字相同的数的个数2021真题

输出一个整数序列中与指定数字相同的数的个数。

输入:输入包含三行:

第一行为N,表示整数序列的长度(N ≤ 100);

第二行为N个整数,整数之间以一个空格分开;

第三行包含一个整数,为指定的数字m。

输出

输出为N个数中与m相同的数的个数。

输入样例

3

2 3 2

2

输出样例

2

##include<iostream>

using namespace std;

int main() {

int i,n,m,count=0;

cin>>n;//共有n个数

int a[n+1];//动态生成数组从 下标为1位置存储

for(i=1; i<=n; i++)

cin>>a[i];//读入n个数

cin>>m;//读取第三行指定数m

for(i=1; i<=n; i++) //对数据逐个进行比较

if(a[i]==m) count++;//若与指定数字相同,计数器+1

cout<<count;

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>

using namespace std;

int main() {

int a[10],h,count=0;

int i;

for(i=0; i<10; i++)

cin>>a[i]; //输入苹果高度

cin>>h;//输入伸直手的高度

h=h+30;//踩上板凳后的高度

for(i=0; i<10; i++) //对每个苹果进行比较

if(a[i]<=h)//如果苹果高度<能够到的高度

count++;//计数器+1

cout<<count;

return 0;

}

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<cstdio>

using namespace std;

int main() {

double price[10]= {28.9,32.7,45.6,78,35,86.2,27.8,43,56,65};

int num[10];

double sum=0;

int i;

for(i=0; i<10; i++) {

cin>>num[i];

sum+=num[i]*price[i];//累加每种书的价格

}

printf("%.1f",sum);//保留1位小数输出

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,i;

cin>>n;

int num[n+1];

for(i=1; i<=n; i++)

cin>>num[i];

for(i=n; i>=1; i--) //倒序输出

cout<<num[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,i,j;

    int s[10001]= {0};

    int a,b,sum=0,ex,new;

    cin>>L>>M;//输入马路长度与区域数目

    for (i=0; i<M; i++)

    {

        cin>>a>>b;//输入起始点与终止点

        for(j=a; j<=b; j++) //令范围内的树移走

            s[j]=1;

    }

     for(i=0; i<=L; i++) //统计马路长度内被移走的树的数目

        if(s[i]==1)

            sum++;

    ex=L+1;

    new=ex-sum;//移走后的树的数目

    cout<<new;

    return 0;

}

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<cstring>

using namespace std;

int main() {

int n,m,i,j;

int flag=1;

cin>>n>>m;

bool a[n+1];

memset(a,0,sizeof(a));//初始化为0将灯关上 固定格式

for(i=1; i<=m; i++) //m个人依次进行操作

for(j=1; j<=n; j++) //对n盏灯进行操作

if(j%i==0)//只对人编号的倍数进行操作

a[j]=!a[j];//对灯进行相反处理

for(i=1; i<=n; i++) { //输出灯是关闭的序号

if(a[i]) {

if(flag)

flag=0;//仅第一次不用先输出逗号

else

cout<<",";

cout<<i;

}

}

return 0;

}

举报

相关推荐

0 条评论