C++数组指针题(含答案)

别妄想泡我
897次浏览
2021年01月26日 19:40
最佳经验
本文由作者推荐

-

2021年1月26日发(作者:代销女装)
数组指针
01
:逆序输出

从键盘输入
n
个整数(
n<100
),存放在一个一维数组中,逆序输出能被
3
整除的元素,并逆序 输出数组下标为
3
的倍数的元素。

输入格式:第一个整数为个数
n
,后续为
n
个整数

输出格式:
第一行能被
3
整除的元素,
第二行为下标为
3
的倍数的元素,

个数值之间用空格分隔。

输入:
10
2
7
9
10
5
4
3
6
8
20
输出:

6
3
9
20
3
10
2
#include

using
namespace
std;
const
int
MAX=100;
int
main()
{
int
a[MAX],n,i;
..
































..
cin>>n;
for(i=0;icin>>a[i];
for(i=n-1;i>=0;i--)
if(a[i]%3==0)
cout<
cout<for(i=n-1;i>=0;i--)
if(i%3==0)
cout<
cout<return
0;
}
数组指针
02
:逆序存储

..
































..
从键盘输入
n

n<100
) 个整数,存放在一个一维数组
a
中,将它们逆序存
放在另一个整型数组
b中,并按
b
数组中下标从小到大的顺序输出下标为
3

倍数的数 组元素。

输入格式:第一个数为数组中元素个数
n
,之后为
n个元素。

输出格式:下标为
3
的倍数的元素,各个数值之间用空格分隔。

输入:
10
2
7
9
10
5
4
3
6
8
20
输出:
20
3
10
2
#include

using
namespace
std;
const
int
MAX=100;
int
main()
{
int
a[MAX],b[MAX],n,i;
cin>>n;
for(i=0;i{
..
































..
cin>>a[i];
b[n-1-i]=a[i];
}
for(i=0;iif(i%3==0)
cout<
cout<return
0;
}
数组指针
03
:平均值

从键盘输入任 意个整数(以
0
结束,假设不超过
100
个),存放在一个一
维数组 中,计算这组数的平均值(实型)。

输入:
15
2
7
9
10
5
4
3
6
8
20
0
输出:
8.09091
#include

using
namespace
std;
..
































..
const
int
MAX=100;
int
main()
{
int
a[MAX],n=0;
double
s=0;
cin>>a[n];
while(a[n])
{
s+=a[n];
n++;
cin>>a[n];
}
cout<return
0;
}
..






























..


数组指针
04
:最大值

从键盘输入任意个整数(以
0结束,个数不超过
100
),存放在一个一维数
组中,输出这组数的最大值。
输入:
10
2
7
9
11
5
4
3
6
8
20
0
输出:
20
#include
using
namespace
std;
const
int
MAX=100;
int
main()
{
int
a[MAX],i,n=0,max;
cin>>a[n];
while(a[n])
{
n++;
cin>>a[n];
..
































..
}
max=a[0];
for(i=1;i{
if(a[i]>max)
max=a[i];
}
cout<return
0;
}
数组指针
05
:最小值的位置

从键盘输入任意个整数(以
0
结束,个数不超过
100
),存放在一个一维数
组中,数据从数组的
0
下标开始存储,输出这组数的最小值所在数组下标。

输入:
10
2
7
9
11
5
4
3
6
8
20
0
输出:
1
#include
..
































..
using
namespace
std;
const
int
MAX=100;
int
main()
{
int
a[MAX],i,n=0,min=0;
cin>>a[n];
while(a[n])
{
n++;
cin>>a[n];
}
for(i=1;i{
if(a[i]min=i;
..
































..
}
cout<return
0;
}
数组指针
06
:排序

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

输入:
15
2
7
9
11
5
4
3
6
8
20
0
输出:
2
3
4
5
6
7
8
9
11
15
20
#include
using
namespace
std;
const
int
MAX=100;
int
main()
{
int
a[MAX],i,j,n=0,mini,temp;
cin>>a[n];
..
































..
while(a[n])
{
n++;
cin>>a[n];
}
for(i=0;i{
mini=i;
for
(j=i+1;jif
(a[j]mini=j;
if
(mini!=i)
{
temp=a[i];
a[i]=a[mini];
a[mini]=temp;
..
































..
}
}
for(i=0;i{
cout<
}
cout<return
0;
}
数组指针
07
:中位数

从键盘输入
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
输入:
2
7
9
11
5
4
3
6
8
20
0
输出:
6.5
#include
using
namespace
std;
const
int
MAX=100;
int
main()
{
int
a[MAX],i,j,n=0,mini,temp;
cin>>a[n];
while(a[n])
{
n++;
cin>>a[n];
..
































..
}
for(i=0;i{
mini=i;
for
(j=i+1;jif
(a[j]mini=j;
if
(mini!=i)
{
temp=a[i];
a[i]=a[mini];
a[mini]=temp;
}
}
if(n%2==1)
cout<..
































..
else
cout<<(a[n/2]+a[n/2-1])/2.0<cout<return
0;
}










..




















..

















数组指针
08
:排序

从键盘输入
n(n<100)
个整数(以
0
结束),存放在一个一维数组中,将它
们按奇数在前、
偶数在 后,
同为奇数或偶数的按从小到大的顺序排序,
并输出排
序后的结果。

其中:排序过程用函数实现。

输入:
10
2
7
9
11
5
4
3
6
8
20
0
输出:
3
5
7
9
11
2
4
6
8
10
20
#include
using
namespace
std;
void
sort(int
s[],int
n)
{
..
































..
int
i,j,t;
for(i=0;ifor(j=i+1;j if(((s[i]%2)<(s[j]%2))||(((s[i]%2)==(s[j]%2))&&(s[ i]>s[j])))
{
t=s[i];
s[i]=s[j];
s[j]=t;
}
}
int
main()
{
int
s[100],n=0,i;
cin>>s[n];
while(s[n])
..
































..
{
n++;
cin>>s[n];
}
sort(s,n);
for(i=0;i{
cout<';
}
return
0;
}
数组指针
09
:斐波那契数列

输入一个正整数
n

n<100


将斐波那契数列的前
n
项保存到一维数组 中,
并输出斐波那契数列中对
3
取余为
2
的数。

斐波那契数列为
1
1
2
3
5
8
13
21
34
55……

输入:
10
..
































..
输出:
2
5
8
#include
using
namespace
std;
const
int
MAX=100;
int
main()
{
int
a[MAX],n,i;
cin>>n;
a[0]=a[1]=1;
for(i=2;ia[i]=a[i-1]+a[i-2];
for(i=0;i{
if(a[i]%3==2)
cout<
..






























..


}
cout<return
0;
}
数组指针
10
:素数

输入
m

n

m

n<100
),输出
[m,n]
之间的素数。要求 :使用塞选法求
素数。

用塞选法求
100
以内的素数过程:在一张 纸上写上
1

100
全部整数,然
后逐个判断它们是否是素数,
找出一个非素数,就把它挖掉,最后剩下的就是素数。

具体做法如下:

<1>
先将
1
挖掉
(
因为
1
不是素数
)


<2>

2去除它后面的各个数(
2
除外),把能被
2
整除的数挖掉,即把
2
的倍数挖掉。

<3>

3
去除它后面的各数(
3
除外),把
3
的倍数挖掉。

<4>
分别用
4
、5…各数作为除数去除这些数以后的各数。这个过程一直进
行到在除数后面的数已全被挖掉 为止。

..
































..
最后剩下的都是素数。

输入:
5
19
输出:
5
7
11
13
17
19
#include
using
namespace
std;
int
main()
{
int
m,n,a[101],i,j;
for(i=1;i<101;i++)
a[i]=i;
cin>>m>>n;
for(i=2;i<101;i++)
{
for(j=i+1;j<101;j++)
if(a[j]%i==0)
..
































..
a[j]=0;
}
for(i=m;i<=n;i++)
{
if(a[i]!=0)
cout<
}
return
0;
}
数组指针
11
:数据插入

从键盘输入
n

n<100
)个整数(以
0
结束),存放在一个一维数组中,在
输入一个插 入位置
pos

0<=pos<=n
)及被插入的数值
x
, 将
x
插入到下标为
p
os
的位置。输出插入后数组中的所有元素。< br>
输入:

10
2
7
9
11
5
4
3
6
8
20
0
8
100
..
































..

-


-


-


-


-


-


-


-