查找数组中的重复值,改正一下如下代码#include<stdio.h> int main(){ int a[20],b[20],c[20],i,j,n,count,t; scanf("%d",&n); for(i=0;i<n;i++) scanf("%d",&a[i]); for(j=0;j<n;j++) scanf("%d",&b[j]); for(i=0;i<n;i++){ for(j=0;j<n;j++){ count=0; if(a[i]=b[j]){ c[count]=a[i]; count++; } } } for(t=0;t<count;t++) printf("%d",c[t]); return 0; }
时间: 2023-07-15 12:13:43 浏览: 45
这段代码有几个问题,以下是改正后的代码:
```c
#include <stdio.h>
int main() {
int a[20], b[20], c[20], i, j, n, count = 0; // count 应该初始化为0
scanf("%d", &n);
for (i = 0; i < n; i++)
scanf("%d", &a[i]);
for (j = 0; j < n; j++)
scanf("%d", &b[j]);
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
if (a[i] == b[j]) { // 判断相等应该用双等号
c[count] = a[i];
count++;
break; // 找到一次相等就可以跳出内层循环了
}
}
}
printf("重复的数值有:");
for (i = 0; i < count; i++)
printf("%d ", c[i]);
return 0;
}
```
修改的主要问题如下:
- 变量 `count` 应该初始化为0,否则会导致后面数组 `c` 中的数据不正确。
- 在判断相等时应该使用双等号,而原代码中使用的是赋值号,这可能会导致错误。
- 在找到一次相等时就可以将 `a[i]` 的值存储到数组 `c` 中,并且需要跳出内层循环,否则会导致重复的值被存储多次。
- 最后需要输出重复的数值,可以在输出前加一个提示信息。