重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
因为在循环中,外层循环有i++的操作,而内层循环的if判断中有i--操作,当循环到某个数值时,符合内层循环的条件,那么就会先减1,到外层循环后再加1,这个结果会导致i值不变,i不变就会反复执行这个循环,就变成死循环了。当然就被卡住了。
十多年建站经验, 成都做网站、网站建设客户的见证与正确选择。创新互联建站提供完善的营销型网页建站明细报价表。后期开发更加便捷高效,我们致力于追求更美、更快、更规范。
这段代码会由某个数值触发死循环
因为不清楚set函数需要做哪些操作,因此没有办法直接修改你的代码。需要根据set函数的要求进行修改。
#include iostream
#include stdio.h
#include set
using namespace std;
int main()
{
int n,a,i;
setintm;
while(scanf("%d",n)!=EOF)
{
for(i=0;in;i++)
{
scanf("%d",a);
m.insert(a);
}
setint::iterator it;
printf("%d\n",m.size());
for(it=m.begin();it!=m.end();it++)
{
if(it==m.begin())
printf("%d",*it);
else
printf(" %d",*it);
}
printf("\n");
m.clear();
}
return 0;
}
可以定义两个数组,将原来数组的不重复的数放到新数组中就可以了.(如果需要也可以释放原来数组的内存)#include stdio.h main() { int a[5]={1,1,2,1,2}; int i,j,k=0, b[5]={0}; for(i=0;i=4;i++) for(j=0;j=4;j++) if(a[i]!=b[j]) {b[k]=a[i];k++;} printf("去重后的数组为:"); for(i=0;i=k-1;i++) printf("a[i]=%d",a[i]); }