解题思路:排序,然后比较。

参考代码:

方法1:输入时要按ctrl+Z才能结束。

#include<bits/stdc++.h>
using namespace std;
const int N=1001;
int main()
{
	int a[N],n,i,sum,k=0;
	cin>>n;
	while(cin>>a[k])
	{
		k++;
	}
	sort(a,a+k);
	int mid,nid; //mid表示断号id,nid表示重号id
	for(i=1;i<k;i++)
		if(a[i]!=a[i-1]+1&&a[i]!=a[i-1])
		{
			mid=a[i]-1;
			break;
		}
	for(i=0;i<k;i++)
		if(a[i]==a[i+1])
		{
			nid=a[i]; //找到重号id
			break;
		}
	cout<<mid<<" "<<nid;
	return 0;
}

方法2:完全按照题目要求输入,但是要处理字符串。对于学习字符串的处理,也是很不错的。

#include<bits/stdc++.h>
using namespace std;
const int N=1001;
int main()
{
    int a[N],n,i,sum,k=0;
    char str[500]; 
    scanf("%d",&n); 
    while(getchar()!='\n');  
    while(n--)
    {    	
    	gets(str);
    	sum=0;
    	i=0;
    	while(str[i]!='\0')
    	{    	
    		if(str[i]==' ') i++;
    		else break;
    	}
    	for(;str[i];i++)
    	{
    		if(str[i]!=' ')
				sum=sum*10+str[i]-'0';
			else if(str[i-1]!=' ')
			{
				a[k++]=sum;
				sum=0;
			}
    	}
		if(str[i-1]!=' ' && str[i]=='\0')  a[k++]=sum;    	
    }
    sort(a,a+k);	
    int mid,nid; //mid表示断号id,nid表示重号id
	for(i=1;i<k;i++)
        if(a[i]-a[i-1]==2)
        {
	        mid=a[i-1]+1;
	        break;
        }
    for(i=0;i<k;i++)
		if(a[i]==a[i+1])
		{
			nid=a[i];   //找到重号id
			break;
		}
    cout<<mid<<" "<<nid;
    return 0;
}


点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 1 条评论

UDP广播协议叫吃饭 5年前 回复TA
看,这个是神仙呢。