解题思路:

开辟一个数组,记录票号出现的情况,然后用两个变量min max记录票据的最小值和最大值

等输入结束以后,从min到max开始遍历数组,如果p[i]==0说明票据i一次也没出现过 如果p[i]>1说明票据i重复出现

参考代码:

#include <stdio.h>

int  p[100001];

int main ()
{
	int i,j;
	int n,max=0,min=999999;
	scanf("%d",&n);
	while(scanf("%d",&n)!=EOF){
		p[n]++;
		if(n>max){
			max=n;
		}
		if(n<min){
			min=n;
		}
	}
	for(i=min;i<max;i++){
		if(p[i]==0){
			printf("%d ",i);
		}
	}
	for(i=min;i<max;i++){
		if(p[i]>1){
			printf("%d ",i);
		}
	}
	return 0;
}


点赞(0)
 

0.0分

5 人评分

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

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

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

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

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

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

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

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

评论列表 共有 4 条评论

指针原来是套娃的 9月前 回复TA
@小贝壳 第一个循环打印断号 第二个循环打印重号,先断号后重号 顺序不能错
小贝壳 9月前 回复TA
为啥把p[i]==0和p[i]>1写到同一个循环 就错误了?
指针原来是套娃的 2年前 回复TA
@偷菜的小孩 这样表示读取到文件末尾的时候结束循环,自己调试的时候要手动ctrl+z结束
偷菜的小孩 2年前 回复TA
这代码while那里对的?