相信你们看到我这篇文章时,肯定也看过相似的题目,但是我的代码跟他们完全不一样,但是思路可能一样。
建议你们复制粘贴到自己编译器上面看:
#include <stdio.h>
int main()
{
int b,c=0,d=0,e,f=1,h=1;
scanf("%d",&b);
int a[20];
while(c<b){
if(c==0){
scanf("%d",&a[c]);//先赋值第一个数组下标,让第二个和后面的数可以比较可以比较。
c++;
continue;
}
if(c>0){scanf("%d",&e);}
if(e==0&&h==1){ //这个是把第一个0直接赋值给数组,因为我下文 无法记录第一个0。
a[c]=e; //因为0有时候会等于未赋值的数组,导致出错,你们可以试一下。
c++;
h++; //这个h的存在是为了避免第二个0直接赋值;
continue;
}
for(d=1;d<=c;d++){
if(e==a[d-1]){ //这个d-1是为了防止e等于未赋值的数组,也就是对应上文的第二个0。
f=0;break; //PTA题目里面, 如果发生a[-1],是会发生答案错误,但是dev-c++却不会。
} //所以我把原先的d=0.改为了d=1。当然都是一样的。
}
if(f==0){
b--;
f=1; //这个f,要记得重新赋值,用来判断是否重复。
continue;
}
if(f==1){a[c]=e;c++;}
}
for(c=0;c<b;c++){
if(c==b-1){
printf("%d",a[c]);
}else{
printf("%d ",a[c]);
}
}
return 0;
}