#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include<string.h> #include<ctype.h> int main() { int a[100], b[100]; int i; char c[100]; int t; int m, n; scanf("%d", &m); int h = 0; int sum = 0; for (int i = 0; i < m; i++) { scanf("%d", &a[i]); } scanf("%d", &n); for (int i = 0; i < n; i++) { scanf("%d", &b[i]); } for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { if (a[i] == b[j]) { sum = 1; } } if (sum == 0) { c[h] = a[i]; h++; } } for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (b[i] == a[j]); { sum = 1; } } if (sum == 0) { for (int k = 0; k < h; k++) { if (b[i] == c[k]) { sum = 1; } } if (sum == 0) { c[h] = b[i]; h++; } } } for (int i = 0; i < h - 1; i++) { for (int j = 0; j < h - 1 - i; j++) { if (c[j] > c[j + 1]) { t = c[j]; c[j] = c[j + 1]; c[j + 1] = t; } } } int flag = 0; for (int i = 0; i < h - 1; i++) { if (flag == 0) { printf("%d", c[i]); flag = 1; } else printf(" %d", c[i]); } return 0; }这个代码咋修改
时间: 2023-12-25 16:03:39 浏览: 52
这段代码实现的是求两个数组的差集,并将结果从小到大输出。但是有几个问题需要修改:
1. 在第 43 行和第 50 行的 if 语句后面多了一个分号,这会导致判断失效。应该将分号删除。
2. 在第 32 行之前应该将变量 sum 初始化为 0。
3. 在第 35 行之前应该将变量 h 初始化为 0。
4. 在第 41 行之前应该将变量 sum 初始化为 0。
5. 在第 48 行之前应该将变量 sum 初始化为 0。
修改后的代码如下所示:
```c
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main() {
int a[100], b[100];
int i;
char c[100];
int t;
int m, n;
scanf("%d", &m);
int h = 0;
int sum = 0;
for (int i = 0; i < m; i++)
{
scanf("%d", &a[i]);
}
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
scanf("%d", &b[i]);
}
for (int i = 0; i < m; i++)
{
sum = 0; // 将 sum 初始化为 0
for (int j = 0; j < n; j++)
{
if (a[i] == b[j])
{
sum = 1;
}
}
if (sum == 0)
{
c[h] = a[i];
h++;
}
}
for (int i = 0; i < n; i++)
{
sum = 0; // 将 sum 初始化为 0
for (int j = 0; j < m; j++)
{
if (b[i] == a[j]) // 去掉多余的分号
{
sum = 1;
}
}
if (sum == 0)
{
for (int k = 0; k < h; k++)
{
if (b[i] == c[k])
{
sum = 1;
}
}
if (sum == 0)
{
c[h] = b[i];
h++;
}
}
}
for (int i = 0; i < h - 1; i++)
{
for (int j = 0; j < h - 1 - i; j++)
{
if (c[j] > c[j + 1])
{
t = c[j];
c[j] = c[j + 1];
c[j + 1] = t;
}
}
}
int flag = 0;
for (int i = 0; i < h; i++) // 修改循环条件
{
if (flag == 0)
{
printf("%d", c[i]);
flag = 1;
}
else
printf(" %d", c[i]);
}
return 0;
}
```
阅读全文