之前写的第一题有误,上个厕所过来赶紧给删了,怕误导大家。题目如下:
题目:输出整数序列中重复的数字
描述:编写一个程序,用户输入任意长度(小于等于10)的整数序列,整数值都大于0,程序输出序列中所有重复的数组并且数组
的顺序和输入保持一致
输入:数字序列,一行数字,长度小于1000;两个数字之间用逗号隔开,所有数字均为整数且大于0.
输出:重复的数字,两个数字之间以空格分隔,数字的顺序和输入一致
样例输入:3,2,2,3,4,5,6
样例输出:3,2
解题步骤:
1.申请一个InputArray和HelpArray,大小均为1000,初始化为0
2.将输入字符串存入InputArray并计算实际大小
3.双重循环遍历输入数组,如果有相同的元素则再判断HelpArray数组里面是否存在这个元素
4.若HelpArray没有则存入,否则继续遍历
5.最后顺序HelpArray中的非零元素,即可
1 #include <iostream> 2 #include <string> 3 using namespace std; 4 5 #define MaxSize 1000 6 7 int main() 8 { 9 int *InputArray=new int[MaxSize]; 10 int *HelpArray=new int[MaxSize]; 11 for(int i=0;i<MaxSize;i++) 12 { 13 InputArray[i]=0; 14 HelpArray[i]=0; 15 } 16 17 18 string s; 19 cin>>s; 20 21 22 int count=0; 23 int sum=0; 24 i=0; 25 int temp; 26 while(true) 27 { 28 if(s[i+1]!=','&&(i+1)!=s.length()) 29 { 30 sum=sum*10+(s[i]-'0')*10; 31 } 32 else 33 { 34 sum=sum+(s[i]-'0'); 35 temp=sum; 36 InputArray[count++]=sum; 37 if(i==s.length()-1) 38 { 39 break; 40 } 41 42 sum=0; 43 i=i+2; 44 continue; 45 } 46 i++; 47 48 } 49 50 51 int RealLen=count; 52 53 for(i=0;i<count;i++) 54 { 55 if(InputArray[i]<=0) 56 { 57 return 0; 58 } 59 } 60 61 62 int countnew=0; 63 for(i=0;i<RealLen;i++) 64 { 65 for(int j=0;j<RealLen;j++) 66 { 67 if(i!=j) 68 { 69 bool flag=true; 70 if(InputArray[i]==InputArray[j]) 71 { 72 for(int k=0;k<MaxSize;k++) 73 { 74 if(InputArray[i]==HelpArray[k]) 75 { 76 flag=false; 77 } 78 } 79 80 81 if(flag) 82 { 83 HelpArray[countnew++]=InputArray[i]; 84 } 85 } 86 } 87 } 88 } 89 90 for(i=0;i<MaxSize;i++) 91 { 92 if(HelpArray[i]==0) 93 { 94 break; 95 } 96 else 97 { 98 cout<<HelpArray[i]<<" "; 99 } 100 } 101 102 cout<<endl; 103 delete[] InputArray; 104 InputArray=NULL; 105 106 delete[] HelpArray; 107 HelpArray=NULL; 108 return 0; 109 }
运行截图: