Openjudge-计算概论(A)-第二个重复出现的数
描述:
给定一个正整数数组(元素的值都大于零),输出数组中第二个重复出现的正整数,如果没有,则输出字符串"NOT EXIST"。
输入第一行为整数m,表示有m组数据。
其后每组数据分两行:
第一行为正整数n(3 < n < 500),表示数组的长度;
第二行是n个正整数,正整数间用空格分开。输出有m行输出,每行输出对于数组中第二个重复出现的正整数,如果没有,则输出字符串"NOT EXIST"。
样例输入
5 10 1 3 5 7 9 7 8 5 2 6 10 1 3 5 5 7 9 7 8 2 6 10 1 3 5 5 7 9 4 8 2 6 10 1 3 5 7 2 9 9 8 7 5 10 1 3 5 2 7 9 9 8 7 5
样例输出
7 7 NOT EXIST 7 7
思路:这题用两重循环来寻找第二个重复出现的数,具体实现过程看代码。
代码如下(本代码来自我的老师:http://www.cnblogs.com/huashanqingzhu/p/3464506.html):
1 #include<stdio.h> 2 int main() 3 { 4 int m,n,a[505],i,j,flag; 5 scanf("%d",&m); 6 while(m>0) 7 { 8 scanf("%d",&n); 9 for(i=0;i<n;i++) 10 { 11 scanf("%d",&a[i]); 12 } 13 flag=0; 14 for(i=0;i<n-1;i++) 15 { 16 for(j=i+1;j<n;j++)//从第二位开始找 17 { 18 if(a[j]==a[i])//如果发现相等的话 19 { 20 flag++;//记录器++ 21 break;//跳出 22 } 23 } 24 if(flag==2)//是第二个重复出现的数 25 { 26 printf("%d\n",a[i]);//输出那个数 27 break; 28 } 29 } 30 if(flag!=2) printf("NOT EXIST\n");//否则找不到 31 m--; 32 } 33 return 0; 34 }
我不怕千万人阻挡,只怕自己投降…