老式五斗柜图片:现有小于999的任意500个整数,如何能筛选出小于999的另外500个整数?

来源:百度文库 编辑:神马品牌网 时间:2024/04/28 18:26:28
现有小于999的任意500个整数,如何能筛选出小于999的另外500个整数?

main()
{
int exists[500];
int otherint[500];
int index=0;
int temp;
bool numexist=false;
//.....初始化exists数组
while (index<500)
{
randomize();
temp=random(999);
//检查exists数组
for (int i=0;i<500;i++)
{
if (temp==exists[i])//标志已经存在
{
numexist=true;
break;
}
}
//检查otherint数组
for (int i=0;i<index;i++)
{
if (temp==otherint[i])//标志已经存在
{
numexist=true;
break;
}
}

if (!numexist) //如果不存在
{
otherint[index++]=temp;
numexist=false;//重新置为假
}
}
}

你是指在程序中么?有很多种做法啦
一种是可以建立一个下标为999的布尔数组,全置为True,然后凡是输入整数的对应布尔值置为False,最后输出全部为True的就是另外500个整数啦。
还可以建立一个字符串,中间以某个符号相隔,比如1*2*3...*999,然后凡是输入的全部替换掉,比如 replace(str,"214",""),留下来的字符串加以整理再输出,也就是余下的整数了
从你题目来看,前一种速度快,占内存小,效率高,但后一种可以扩充到字符运算的

编辑语言不一样,我就不写语句了。编程思想说一下吧。

定义一个下标为0-999的数组,数组中每个数都定义为-2(因为这个题目中涉及到0这个整数,所以不能默认所有数为0,用-2代替),例如为A(),然后开始对现有500个数挨个核对,比如说,当500个数中存在12时,A(12)就为-1。当所有现有的500个数都核对完以后,对数组A()进行循环核对,当A(i)=-1,跳过;A(i)=-2时,把i打印出来就行了。

到底是语言表达能力不行,不知道楼主明白了没?

去掉现有的,剩下的不就还是另外的500个了;
不知道你问这个问题什么意思?