我觉得稍微麻烦一点的就是允许数组内有重复,我想了两个办法,一种是排序好再挨个比较。另外一个我写了出了,但是跑不正确,怎么弄k都等于10,代码如下,请看出bug的大神指点:
int thr_bg(int s1[],int s2[]){
int q,w,k=0;
for (q=0; q<10; q++) {
for (w=0; w<10 && s1[q]!=s2[w]; w++);
// 找出与数组1第一个相同元素的位置
if (w<10) {
for (; w<10; w++) {
s2[w]=s2[w+1];
}
//把数组1第一个相同元素剔除,后面的元素依次向前
k++;
//记录与数组1第一个相同元素的个数
}
}
printf("%d\n",k);
if (k=10) { //如果有十个相同元素,就代表完全相同
return 1;
}
else return 0;
}
int main(){
int s1[10],s2[10],i,j;
printf("s1:");
for (i=0; i<10; i++) {
scanf("%d",&s1[i]);
}
printf("s2:");
for (j=0; j<10; j++) {
scanf("%d",&s2[j]);
}
if (thr_bg(s1,s2))
printf("yiyang");
else printf("buyiyanga");
}
另外,还有什么其他的实现方法推荐吗?
if (k=10) { //如果有十个相同元素,就代表完全相同
return 1;
我没看你的程序,但至少,上面代码你错了
if (k==10)
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。