题目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; } else { d=1 ; b[i]=d; } } h=b[0 ]; for (int i = 0 ; i < n; i++) { 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]<<" " ; } }
代码可能略有不足,请大佬多多指教