题目1

【问题描述】

输入一维数组,将数组中相同的数只保留一个,并输出该数组

【输入形式】

输入数组元素个数n和相应的数组元素

【输出形式】

输出该数组,相同的数只保留一个

【样例输入】

input n of array:15
input numbers of array:12 33 22 12 15 18 33 33 22 22 17 16 3 5 6

【样例输出】

12 33 22 15 18 17 16 3 5 6

【样例说明】

输出的每个数组元素用setw(4)设置域宽

【代码】

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include<iostream>
#include<iomanip>
using namespace std;

int main(){
cout<<"input n of array:";
int n,d;
d=0;
cin>>n;
int a[n];
cout<<"input numbers of array:";
for(int i=0; i<n; i++)
{
cin >> a[i];
}
for(int c=0;c<n;c++){
d=0;
//判断是否和前面的数重复
for(int i=0;i<c;i++){
if(a[c]==a[i]){
d=1;
}
else{
}
}
if(d==0)//不重复就输出
{
cout<<setw(4)<<a[c];
}
}
}

题目2

【问题描述】

输入n个数,n<=500000,每个数不超过10000,求最多连续出现了多少个相同的数。

【输入形式】

10
5 5 2 2 2 4 5 6 7 8

【输出形式】

3

【样例输入】

10
5 5 2 2 2 4 5 6 7 8

【样例输出】

3

【代码】

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include<iostream>
#include<iomanip>
using namespace std;

int main(){
int d,h;
int n;
cin>>n;
int a[n];
int b[n];
for(int i=0; i<n; i++)
{
cin >> a[i];
}
d=1;
for(int i=0;i<n;i++){
if(a[i]==a[i+1])
{
d++;
b[i]=d;//将重复的次数导入数组b[n]
}
else{
d=1;
b[i]=d;
}
}
h=b[0];
for (int i = 0; i < n; i++)//从 b[n] 中提取最大的值
{
if (b[i]>h)
{
h = b[i];
}
}
cout<<h<<endl;
}

题目3

【问题描述】

给一个整型数组中的数按从小到大连续编号,要求相同数字编号相同,编号从1开始,输出编号结果时按照原数组元素的顺序输出。

【输入形式】

从控制台输入数据,第一行输入数组元素个数(个数大于等于1,并且小于等于20),第二行输入整型数组元素,各个整数之间以空格分隔。

【输出形式】

在屏幕上输出编号结果,各个编号之间用一个空格分隔。

【样例输入】

7
-3 75 51 90 1118 51 -3

【样例输出】

1 3 2 4 5 2 1

【样例说明】

共输入了7个整数,分别为:-3 75 51 90 1118 51 -3,其编号分别为1 3 2 4 5 2 1,其中有两个-3和51,它们的编号相同。

【评分标准】

该题要求输出正确的编号结果。上传C语言文件名为no.c。

【代码】

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include<iostream>
#include<iomanip>
using namespace std;

int main(){
int n,m,j,k;
cin>>n;
int a[n];
int b[n];
for(int i=0; i<n; i++)
{
cin >> a[i];
}
for (int i = 0; i < n;i++){
m = 9999;
for (j = 0; j < n;j++){
if(m>a[j]&&a[j]!=10000){
m = a[j];
}
}
for (int z = 0; z < n;z++){
if(a[z]==m){
b[z] = k+1;
a[z] = 10000;
}
}
k++;
}
for (int i = 0; i < n; i++)//输出数组
{
cout<<b[i]<<" ";
}

}

题目4

【问题描述】

重新排列一维数组元素的顺序,使得左边的所有元素均为偶数并按由大到小的次序存放,右边的所有元素均为奇数并按由小到大的次序存放。

【输入形式】

请输入十个数据:17 15 10 14 16 17 19 18 13 12

【输出形式】

数组原始数据为:17 15 10 14 16 17 19 18 13 12
输出结果:18 16 14 12 10 13 15 17 17 19

【代码】

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include<iostream>
#include<iomanip>
using namespace std;

int main(){
int n,i,j;
n=10;
int a[n];
cout<<"请输入十个数据:";
for(int i=0; i<n; i++)
{
cin >> a[i];
}
cout<<"数组原始数据为:";
for(int i=0; i<n; i++)
{
cout<<a[i]<<" ";
}
cout<<endl<<"输出结果:";
//从大到小排序
for( i = 0; i < 10; i++)
{
for( j = i+1; j < 10; j++)
{
if(a[i]<a[j]) //如果前一个元素小于后一个元素
{
int u; //临时变量
u = a[i];
a[i] = a[j]; //大的元素到前一个位置
a[j] = u; //小的元素到后一个位置
}
}
}


for( i = 0; i < 10; i++)
{
if(a[i]%2==0){
cout<<a[i]<<" ";
}
}



//从小到大排序
for( i = 0; i < 10; i++)
{
for( j = i+1; j < 10; j++)
{
if(a[i]>a[j]) //如果前一个元素大于后一个元素
{
int p; //临时变量
p = a[i];
a[i] = a[j]; //小的元素到前一个位置
a[j] = p; //大的元素到后一个位置
}
}
}
for( i = 0; i < 10; i++)
{
if(a[i]%2==1){
cout<<a[i]<<" ";
}
}
system("pause");
}

题目5

【问题描述】

从标准输入中输入两行整数(每行不超过20个整数),将第一组中所有出现在第二组中的数字删除(即两整数集相减)。并从小到大排序输出。

【输入形式】

首先输入第一组整数的个数,再输入第一组整数,以空格分隔;然后输入第二组整数的个数,再输入第二组整数,以空格分隔。

【输出形式】

将第一组中所有出现在第二组中的数字删除,按从小到大顺序排序输出,输出整数中间用一个空格隔开。

【样例输入】

8
5 1 4 3 8 7 9 6
4
5 2 8 10

【样例输出】

1 3 4 6 7 9

【样例说明】

第一组整数个数为8,分别为5 1 4 3 8 7 9 6,第二组整数个数为4,分别为5 2 8 10。将第一组中所有出现在第二组中的数字(即数字5和8)删除后结果1 3 4 6 7 9(按从小到大顺序排序)。每个数字中间用一个空格分隔。

【评分标准】

该题要求输出整数表达式的计算结果,共有5个测试点。

【代码】

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include<iostream>
#include<iomanip>
using namespace std;

int main(){
int n,m,k,z,o;
k=o=0;
cin>>n;
int a[n];
int c[n];
for(int i=0; i<n; i++)
{
cin >> a[i];
}
cin>>m;
int b[m];
for(int i=0; i<m; i++)
{
cin >> b[i];
}


for(int i=0; i<n; i++) {
for(int j=0; j<m; j++){
if(a[i]==b[j]){
i++;
c[o]=a[i];
}
else{
c[o]=a[i];
}
}
o++;
}


for(int i=0; i<n; i++) {
for(int j=0; j<m; j++){
if(a[i]==b[j]){

k++;//计算重复的个数

}
}
}

for(int i = 0; i < o; i++)
{
for(int j = i+1; j < o; j++)
{
if(c[i]>c[j]) //如果前一个元素大于后一个元素
{
int p; //临时变量
p = c[i];
c[i] = c[j]; //小的元素到前一个位置
c[j] = p; //大的元素到后一个位置
}
}
}

z=n-k;
for(int i=0; i<z; i++)
{
cout<< c[i]<<" ";
}
}

代码可能略有不足,请大佬多多指教