nina


私信TA

用户名:williiiiiin

访问量:22918

签 名:

等  级
排  名 592
经  验 4253
参赛次数 1
文章发表 31
年  龄 0
在职情况 在职
学  校
专  业

  自我简介:

解题思路:





注意事项:

注意输入完N,要清楚多于字符。



参考代码:

#include<stdio.h>
#include<string.h>
int main()
{
	int N=0,m,n,i,j=0,k,b[100],sum,len;
	char a[10000];
	scanf("%d",&N);
	gets(a);
	for(i=0;i<N;i++)
	{
		gets(a);
		sum=0;
		len=strlen(a);
		a[len]=' '; //下面循环遇到空格才会将字符数字转换成整形存入数组b,末尾加空格键防止行末直接是换行符
		for(k=0;k<len+1;k++)
		{
			if(a[k]==' ')
			{
				if(sum>0)
				{
					b[j++]=sum;
				}
				sum=0;
			}
			else
			{
				sum=sum*10+(a[k]-'0');
			}
		}
	}
	for(i=1;i<j;i++) //冒泡排序
	{
		for(k=0;k<j-i;k++)
		{
			if(b[k]>b[k+1])
			{
				sum=b[k];
				b[k]=b[k+1];
				b[k+1]=sum;
			}
			else if(b[k]==b[k+1]) n=b[k]; //重号
		}
	}
	for(k=0;k<j-1;k++)
	{
		if(b[k+1]-b[k]==2)
		{
			m=b[k]+1;
			break;
		}
	}
	printf("%d %d\n",m,n);
	return 0;
}


 

0.0分

17 人评分

  评论区

这个if(sum>0),是因为输入可能是负数,但题目说ID 是正整数,所以是用来去除输入的负数吗?
2023-02-25 12:04:23
循环上面的gets(a),可以不用,将scanf(“%d”,&N);改为scanf("%d\n",&N)就行了吧,这样换行符就已经被读走了
2023-02-25 11:37:49
求助,作者第十五行语句 for(k=0;k<len+1;k++),如果把len改为strlen(a)就会报错,为什么啊/(ㄒoㄒ)/~~
2022-02-08 21:40:39
学习了。
2018-12-13 21:02:30
  • «
  • 1
  • »