在刚开始学习c++的时候刷了很多基础题,这些基础题比较适合初学C++的码友,所以在学完就立即进行了整理,一是为了让初学C++的码友有所参考,二也是为了复习一下所学过知识。
但因为当时在整理时,时间有点紧促,可能会出现一些小错误,于是利用五一假期对之前的文章进行检查,修改了一些小错误,可能有些错误我还没有发现,欢迎码友们对其指正。

以下12道题除了9,10,11道用到排序算法之外,其他题均为数组的基础练习题。
排序算法之后会在算法专栏进行讲解,博文可能得等一段时间才会更新,大家在学习时,可以先参考其他博主关于排序算法的优秀博文。

1.逆序输出

从键盘输入n个整数(n<100),存放在一个一维数组中,逆序输出能被3整除 的元素,并逆序输出数组下标为3的倍数的元素。
输入格式:第一个整数为个数n,后续为n个整数
输出格式:第一行能被3整除的元素,第二行为下标为3的倍数的元素,各个数值之间用空格分隔。
Sample Input
10 2 7 9 10 5 4 3 6 8 20
Sample Output
6 3 9
20 3 10 2

#include<iostream>
using namespace std;
const int Max = 100;
int main()
{int a[Max], n, i;cin >> n;for (i = 0; i < n; i++)//向数组里存入数据cin >> a[i];for (i = n - 1; i >= 0; i--)//逆序输出符合条件元素if (a[i] % 3 == 0)//判断元素能否被3整除cout << a[i] << " ";cout << endl;for (i = n - 1; i >= 0; i--)//逆序输出符合条件元素if (i % 3 == 0)//判断元素下标是否为3的倍数cout << a[i] << " ";cout << endl;return 0;
}

2.逆序存储

从键盘输入n(n<100)个整数,存放在一个一维数组a中,将它们逆序存放在另一个整型数组b中,并按b数组中下标从小到大的顺序输出下标为3的倍数的数组元素。
输入格式:第一个数为数组中元素个数n,之后为n个元素。
输出格式:下标为3的倍数的元素,各个数值之间用空格分隔。
Sample Input
10 2 7 9 10 5 4 3 6 8 20
Sample Output
20 3 10 2

#include<iostream>
using namespace std;
const int Max = 100;
int main()
{int a[Max], b[Max], n, i;cin >> n;for (i = 0; i < n; i++){cin >> a[i];//向数组里存入数据b[n - 1 - i] = a[i];//将数组a中元素逆序存入数组b中}for (i = 0; i < n; i++)if (i % 3 == 0)//判断元素下标是否为3的倍数cout << b[i] << " ";cout << endl;return 0;
}

3.平均值

从键盘输入任意个整数(以0结束,假设不超过100个),存放在一个一维数组中,计算这组数的平均值(实型)。
Sample Input
15 2 7 9 10 5 4 3 6 8 20 0
Sample Output
8.09091

#include<iostream>
using namespace std;
const int Max = 100;
int main()
{int a[Max], i=0;double s = 0;cin >> a[i];//向数组中存入数据while (a[i])//输入一个数以0结束{s += a[i];//求所有元素的和i++;cin >> a[i];}cout << s / i << endl;return 0;
}

4.最大值

从键盘输入任意个整数(以0结束,个数不超过100),存放在一个一维数组中,输出这组数的最大值。
Sample Input
10 2 7 9 11 5 4 3 6 8 20 0
Sample Output
20

#include<iostream>
using namespace std;
const int Max = 100;
int main()
{int a[Max], n=0,max,i;cin >> a[n];//向数组中存入数据while (a[n])//输入一个数以0结束{n++;cin >> a[n];}max = 0;//假设最大值下标为0for (i = 1; i < n; i++)if (a[i] > a[max])//当有元素比当前最大元素大时,就将此元素下标赋值给maxmax = i;cout << a[max] << endl;//输出max下标下的元素,即最大值return 0;
}

本题使用下标方式来表示数组中元素最大值的方法,这种方法可以解决同类型的问题。(例如:求最大值所在的位置,最小值,最小值所在位置)

5.斐波那契数列

输入一个正整数n(n<100),将斐波那契数列的前n项保存到一维数组中,并输出数组中对3取余为2的元素。
斐波那契数列为:0 1 1 2 3 5 8 13 21 34 55……,起始项为第0项。
(斐波那契数列:从第三项开始,每一项等于前两项的和。)
Sample Input
10
Sample Output
2 5 8

#include<iostream>
using namespace std;
const int Max = 100;
int main()
{int a[Max], n, i;a[0] = 0; //给前三个元素赋值a[1] = a[2] = 1; cin >> n;for (i = 3; i < n; i++)a[i] = a[i - 1] + a[i - 2];//从第三项开始,每一项等于前两项的和for (i = 0; i < n; i++)//遍历数组if (a[i] % 3 == 2)cout << a[i] << " ";//输出符合条件的元素cout << endl;return 0;
}

6.指定位置插入

从键盘输入任意个整数(以0结束,假设个数不超过100个),从0下标开始依次存放在一维数组中,再输入插入位置pos(0<=pos<=n)及被插入的元素x,将x插入到数组的pos下标处pos。输出插入后数组中的所有元素。
Sample Input
8 2 17 9 11 5 4 3 6 21 20 0
8 100
Sample Output
8 2 17 9 11 5 4 3 100 6 21 20

#include<iostream>
using namespace std;
const int Max = 100;
int main()
{int a[Max],n=0,i,pos,x;cin >> a[n];while (a[n])//向数组中输入元素,以0结束{n++;cin >> a[n];}cin >> pos >> x;for (i = n - 1; i >= pos; i--)//从最后一个元素开始,每个元素向后移动一个位置,直到被插入位置的元素向后移动后{a[i + 1] = a[i];}a[pos] = x;//将要插入的元素,放到指定位置n++;//插入元素后数组长度加一for (i = 0; i < n; i++)//遍历数组{cout << a[i] << " ";//输出所有元素}cout << endl;return 0;
}

7.删除

从键盘输入任意个整数(以0结束),假设整数个数为n(n<100),则这些数据存放在一维数组的0~n-1下标中,再输入被删除元素所在下标pos(0<=pos<n),将pos下标的元素从数组中删除,若pos位置不合法,则不删除元素。输出删除后数组中的所有元素。
(本题删除一个元素,就是将要删除位置之后的所有元素向前移动一个位置,数组长度-1,从而达到删除的目的)
Sample Input
10 2 7 9 11 5 4 3 6 8 20 0
8
Sample Output
10 2 7 9 11 5 4 3 8 20

#include<iostream>
using namespace std;
const int Max = 100;
int main()
{int a[Max],n=0,i,pos;cin >> a[n];while (a[n])//向数组中输入元素,以0结束{n++;cin >> a[n];}cin >> pos;for (i =pos; i<n-1; i++)//从要删除的元素开始,每个元素向前移动一个位置,直到最后一个元素{a[i] = a[i+1];}n--;//删除元素后数组长度减一for (i = 0; i < n; i++)//遍历数组{cout << a[i] << " ";//输出所有元素}cout << endl;return 0;
}

8.删除元素

从键盘输入任意个整数(以0结束,并假设个数n不超过100),存放在一维数组的0~n-1下标中,再输入要删除的元素x,将数组中所有的x全部删除。输出删除后数组中的所有元素。
本题删除为x的多个元素,将不等于x的元素存回原数组,然后记录其个数,最后将数组长度更新,从而达到删除的目的)
Sample Input
10 2 7 9 5 11 5 4 3 6 5 8 20 0
5
Sample Output
10 2 7 9 11 4 3 6 8 20

#include<iostream>
using namespace std;
const int Max = 100;
int main()
{int a[Max],n=0,i,x,j=0;cin >> a[n];while (a[n])//向数组中输入元素,以0结束{n++;cin >> a[n];}cin >> x;for (i =0; i<n; i++)//遍历数组,将等于x的元素删除{if (a[i] != x)//将本数组中不等于x的元素存回原数组{a[j] = a[i];j++;}}n=j;//j为删除等于x的元素之后的数组长度for (i = 0; i < n; i++)//遍历数组{cout << a[i] << " ";//输出所有元素}cout << endl;return 0;
}

9.排序

从键盘输入任意个整数(以0结束,假设个数最大不超过100),将这些数存放在一个一维数组中,将它们从小到大排序后输出。

排序算法一般在初学时,会先学习冒泡排序和选择排序这两种容易理解的算法。
本题采用自定义函数的方式提供冒泡排序和选择排序的实现代码。

Sample Input
15 2 7 9 11 5 4 3 6 8 20 0
Sample Output
2 3 4 5 6 7 8 9 11 15 20

#include<iostream>
using namespace std;
const int Max = 100;
//冒泡排序
//函数参数:排序数组,数组长度。
void BubbleSort(int arr[],int n){for (int i = 0; i < n - 1; i++){for (int j = 0; j < n - 1 - i; j++){if (arr[j] > arr[j + 1]){int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] =temp;}}}
}
//选择排序
//函数参数:排序数组,数组长度
void SelectSort(int arr[],int n){for(int j=0;j<n;j++){//寻找[j,n)之间的最小值int min=j;for(int i=j+1;i<n;i++){if(arr[min]>arr[i]){min=i;}}//将[j,n)的最小值,与j位置上元素互换int temp=arr[min];arr[min]=arr[j];arr[j]=temp;}
}
int main()
{int a[Max],n=0;cin >> a[n];while (a[n])//向数组中输入元素,以0结束{n++;cin >> a[n];}//BubbleSort(a,n);SelectSort(a,n);for (int i = 0; i < n; i++)//遍历数组{cout << a[i] << " ";//输出所有元素}cout << endl;return 0;
}

10.中位数

从键盘输入n(n<100)个整数(以0结束),存放在一个一维数组中,输出其中位数。
说明:中位数(Medians)统计学名词,是指将数据按从小到大顺序排列起来,形成一个数列,居于数列中间位置的那个数据。若数列元素个数为奇数,则中位数为最中间的元素;
若数列元素个数为偶数,则中位数为最中间两个元素的平均数。例如:输入2 7 9 11 5 4 3 6 8 20 0则排序后结果为2 3 4 5 6 7 8 9 11 20,则中间两个数的平均值为6.5
Sample Input
2 7 9 11 5 4 3 6 8 20 0
Sample Output
6.5

#include<iostream>
using namespace std;
const int Max = 100;
int main()
{int a[Max],n=0,i,j;cin >> a[n];while (a[n])//向数组中输入元素,以0结束{n++;cin >> a[n];}for (i = 0; i < n - 1; i++)//冒泡排序{for (j = 0; j < n - 1 - i; j++){if (a[j] > a[j + 1]){int temp = a[j];a[j] = a[j + 1];a[j + 1] =temp;}}}if (n % 2 == 1)//若数列元素个数为奇数,则中位数为最中间的元素cout << a[n/2] << endl;else//若数列元素个数为偶数,则中位数为最中间两个元素的平均数{cout << (double)(a[n / 2] + a[n / 2 - 1]) / 2 << endl;//因为平均值有可能不是整数,所以将整形转化为实数型}return 0;
}

11.奇偶排序

从键盘输入n(n<100)个整数(以0结束),存放在一个一维数组中,将它们按奇数在前、偶数在后,同为奇数或偶数的按从小到大的顺序排序,并输出排序后的结果。
(本题是建立在冒泡排序基础之上,对前后元素是否交换增加限制条件)
Sample Input
10 2 7 9 11 5 4 3 6 8 20 0
Sample Output
3 5 7 9 11 2 4 6 8 10 20

#include<iostream>
using namespace std;
const int Max = 100;
int main()
{int a[Max],n=0,i,j;cin >> a[n];while (a[n])//向数组中输入元素,以0结束{n++;cin >> a[n];}for (i = 0; i < n - 1; i++)//冒泡排序{for (j = 0; j < n - 1 - i; j++){  //元素交换的条件有两个://1.当前一个元素为偶数,后一个元素为奇数时;//2.前后两个元素同为奇数或偶数,并且前一个元素比后于一个元素大时if ((a[j]%2<a[j+1]%2)||((a[j]%2==a[j+1]%2)&&(a[j]>a[j+1]))){int temp = a[j];a[j] = a[j + 1];a[j + 1] =temp;}}}for (i = 0; i < n; i++)//遍历数组cout << a[i] << " ";//输出所有元素cout << endl;return 0;
}

12.筛选法求素数

输入m、n(m,n<100),输出[m,n]之间的素数。要求:使用筛选法求素数。
求100以内素数的筛选过程:在一张纸上写上1到100全部整数,然后逐个判断它们是否是素数, 找出所有的非素数,把它挖掉,最后剩下的就是素数。提示:可以将1100这些数存储于数组1100下标,挖掉的数据置为0。
具体做法如下:
<1> 先将1挖掉(因为1不是素数)。
<2> 找到数组中第一个非零值(2),把2的倍数挖掉。
<3> 重复步骤<2>,再把3,。。。的倍数挖掉,直至11时结束(实际上可以挖掉7的倍数后即可结束)。
<4> 数组中非零值即为素数。
Sample Input
5 19
Sample Output
5 7 11 13 17 19

#include<iostream>
using namespace std;
const int Max = 101;
int main()
{int a[Max], i, j,m,n;for (i = 1; i < 101; i++)//可以将1~100这些数存储于数组1~100下标a[i] = i;a[1] = 0;//挖掉的数据置为0for (j = 2; j <= 11;j++)for (i = j + 1; i < 101; i++)//遍历数组将符合条件的置为0if (a[i] % j == 0)a[i] = 0;cin >> m >> n;for (i = m; i <= n; i++)if (a[i] != 0)//数组中非零值即为素数cout << a[i] << " ";cout << endl;return 0;
}

大家好,我是Lucky_追梦仔。一个正在学习编程的小白,希望我的博文,可以帮助到您学习,或者解决您遇到的问题。

C++数组练习题(一)相关推荐

  1. c语言用一维数组求字符串,c语言一维数组练习题.doc

    c语言一维数组练习题 精品文档2016全新精品资料-全新公文范文-全程指导写作 –独家原创 PAGE1 / NUMPAGES1 c语言一维数组练习题 4.1内容概述 本章主要介绍了数值数组和字符数组的 ...

  2. c语言循环与数组训练题,C语言循环数组练习题解读.doc

    循环数组练习题 一.选择题 1.for(i=0;i<10;i++); 结束后, i 的值是: B A9B10C11D12 2.下面程序的循环次数是:D int k=0; while(k<1 ...

  3. Java_数组练习答案_Java数组练习题带答案.doc

    <Java数组练习题带答案.doc>由会员分享,可在线阅读,更多相关<Java数组练习题带答案.doc(11页珍藏版)>请在人人文库网上搜索. 1.一 填空题1) 数组的元素通 ...

  4. c语言 二维数组 文库,c语言二维数组练习题

    c语言二维数组练习题 (3页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 完成下列程序代码完成下列程序代码1. 将二维数组(5 行 5 ...

  5. JavaScript学习(九十)—数组练习题(2)

    JavaScript学习(九十)-数组练习题(2)

  6. JavaScript学习(八十九)—数组练习题

    JavaScript学习(八十九)-数组练习题

  7. 【数组练习题】计算一下牧场中的草丛数量(详细代码)

    [数组练习题]奶牛Bessie计划好好享受柔软的春季新草.新草分布在R行C列的牧场里.它想计算一下牧场中的草丛数量.在牧场地图中,每个草丛要么是单个"#",要么是有公共边的相邻多个 ...

  8. c语言程序设计中国铁道出版社课后题答案,C语言程序设计(中国铁道出版社) 第4章 数组练习题答案003.doc...

    C语言程序设计(中国铁道出版社) 第4章 数组练习题答案003 第4章 数组练习题 一.选择题 在c语言中,引用数组元素时,其数组下标的数据类型允许是( ). A)整型常量 B)整型表达式C)整型常量 ...

  9. java数组循环试题_Java学习关于循环和数组练习题整理

    循环例子: while循环和do-while循环 whlie(条件语句) { 循环体 }//先进行条件语句的判断,再进行循环体 do { 循环体 }whlie (条件语句)//先执行一次循环后再进行条 ...

最新文章

  1. 巨杉数据库完成数千万美元C轮融资,嘉实投资领投
  2. html将变量打印到屏幕_用可视化过程解释代码运行过程和变量作用空间
  3. zblog文件大小超出,上传成功但插入不了
  4. APP功能需求第一版
  5. 1066 Root of AVL Tree (25 分)【难 / 知识点: 平衡树 未完成】
  6. php非,通过非数字和字符的方式实现PHP WebShell
  7. 从Unity3D编译器升级聊起Mono
  8. 人脸识别签到_矿区签到出“新招” 人脸识别考勤上线
  9. 计算机系统结构开设学校,计算机系统结构专业介绍及考研院校排名
  10. 最全中文深度学习入门书:小白易入,课程代码PPT全有 | 复旦邱锡鹏出品
  11. 上海自考计算机应用基础实践,2001年4月份全国高教自考计算机应用基础试题及答案...
  12. 28岁,转行学 IT 靠谱吗?
  13. 奔驰S400商务型升级前排通风座椅系统,夏天必备的功能
  14. Hadoop不是万能,破除七大迷思让你做应用好大数据
  15. Java 环境变量的配置的详细教程(Windows 10)
  16. CorelDRAW中如何安装字体
  17. 【全网最详细yolov6】yoloV6调试记录(含训练自己的数据集及常见报错及解决方法)--持续更新ing
  18. 探索性测试与脚本测试:谁赢了?
  19. ubuntu五笔死机
  20. 【今日第17个世界肾脏日】肾癌/肾病治疗最新研究进展(2022年3月)

热门文章

  1. 王垠:我和Google的故事
  2. 小米pro显示无服务器,【解决】小米WiFi放大器pro连接不稳定/连接后无网络的问题!!!...
  3. 学习机器视觉的数学书本推荐
  4. 原生JS实现Promise(详解)
  5. 蓝牙模块——基础知识介绍
  6. 基于矢量切片的电子地图配图(三)配图准备
  7. HTML5七夕情人节表白网页制作——蓝色梦幻海洋3D相册—— HTML+CSS+JavaScript
  8. 龙族幻想导入数据id_龙族幻想:一键捏脸数据ID 快速捏脸数据ID汇总分享
  9. JQuery Marquee插件(无缝滚动效果)- marquee.js
  10. 利用74LS373对 LED 和数码管分别进行控制,数码管显示所亮 LED 的位置