数组有1000个元素,设为数组a[1000],存放1-1000的数值,但是现在有一个数值重复了,指扫描一遍,找出那

数组有1000个元素,设为数组a[1000],存放1-1000的数值,但是现在有一个数值重复了,指扫描一遍,找出那个重复的数... 数组有1000个元素,设为数组a[1000],存放1-1000的数值,但是现在有一个数值重复了,指扫描一遍,找出那个重复的数 展开
 我来答
bdwinstonwy
2012-12-15
知道答主
回答量:36
采纳率:0%
帮助的人:8.2万
展开全部
#include <stdio.h>
int main(int argc, constchar * argv[])
{
//思路是先定义两个数组,给a数组提前给定值,b数组全部初始化为0,一遍扫面过程中将判断b【a【i】】的值是否为1,如果为一就直接输出第i个数值和第i,如果b【i】不等于1,则说明相同的数没有出现过,并且给b【i】赋值为1作为标记
int a[10]={1,3,4,6,7,8,9,3,3,0},b[10]={0};
for (int i=0; i<10; i++)
{
//用户

if (b[a[i]]==1)
{
printf("相同的是%d\n",a[i]);

printf("%d\n",i);

break;
}

b[a[i]]=1;

}
// insert code here...
printf("Hello, World!\n");
return0;
}
这个方法正确,可以将10改成1000,甚至更大,我只是做了一个测试。
zhjiemm
2012-12-01 · TA获得超过2643个赞
知道大有可为答主
回答量:1834
采纳率:75%
帮助的人:715万
展开全部
可以这样来处理,
先设置一个临时数组来存放已存在数的标记。如果对应位置上已被存放过,那就是再存放的时候就是重复的了。

int b[1000]={0,};
int n;
for(int i=0;i<1000;i++)
{
if(b[a[i]-1]++)>0
{
n = a[i];
break;
}
}
更多追问追答
追问
if那是不是写错了
追答
嗯,应该是:
if(b[a[i]-1]++ >0)
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
梦见钞
2012-12-01 · TA获得超过708个赞
知道大有可为答主
回答量:1584
采纳率:50%
帮助的人:1628万
展开全部
#include "stdio.h"
#define MaxSize 1000
int A[MaxSize];
bool B[MaxSize];
void init(){
for (int i = 0;i<MaxSize;++i)
{
A[i]=i+1;
B[i]=false;
}
}
void main()
{
init();
A[200] = 673;
for (int i=0;i<MaxSize;++i)
{
if(B[A[i]-1]) {
printf("重复数据是%d\n",A[i]);
break;
}
else{
B[A[i]-1] = true;
}
}
}
更多追问追答
追问
是不是有的地方写错了?
追答
比如?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式