#include<stdio.h> int main() { int n,k,i,j,g,f1=0,f2=0,f3=0; scanf("%d",&n); int a[n]; for(i=0; i<n; i++) { scanf("%d",&a[i]); } scanf("%d",&k); int b[k]; for(j=0; j<k; j++) { scanf("%d",&b[j]); } int c[]; for(f1=0; f1<n; f1++) { for(f2=0; f2<k; f2++) { if(a[f1]==b[f2]) break; } if(f2==k) { for(g=0; g<f3; g++) { if(c[g]==a[f1]) break; } if(g==f3){ c[f3]=a[f1]; f3++; } } } for(int l=0; l<f3; l++) { printf("%d",c[l]); if(l!=f3-1) printf(" "); } return 0; }
时间: 2023-12-09 21:05:19 浏览: 18
这是一段 C 语言代码,作用是从输入的两个数组中找出不同的元素并输出。
具体来说,第一个数组 a 中有 n 个元素,第二个数组 b 中有 k 个元素。程序会找出 a 中与 b 不同的元素,存入数组 c 中并输出。如果 a 中有多个相同的元素,只会输出一次。
代码的执行过程如下:
1. 首先输入 n 和数组 a 的 n 个元素;
2. 然后输入 k 和数组 b 的 k 个元素;
3. 创建空数组 c;
4. 从 a 中遍历每个元素,再遍历 b 中每个元素,如果 a 中的元素不在 b 中,就将其存入数组 c 中;
5. 输出数组 c 中的元素。
这段代码存在一个问题:数组 c 的大小没有指定,导致无法存入不同的元素。正确的做法应该是提前计算出不同元素的个数,然后再创建数组 c。
相关问题
#include<stdio.h> int main() { int f1=1,f2=1; int i; for(i=1;i<=20;i++) { printf("%d %d",f1,f2); if(i%2==0) { printf("\n"); } f1=f1+f2; f2=f2+f1; } return 0; }此代码输出有错,改正
这段代码的问题在于第6行的输出语句,每两个数字之间没有空格。以下是修改后的代码:
```
#include <stdio.h>
int main() {
int f1 = 1, f2 = 1;
int i;
for (i = 1; i <= 20; i++) {
printf("%d %d ", f1, f2);
if (i % 2 == 0) {
printf("\n");
}
f1 = f1 + f2;
f2 = f2 + f1;
}
return 0;
}
```
这样输出的结果就是每两个数字之间有一个空格,而且每两行之间有一个换行符。
#include<stdio.h> int main() { int f1=1,f2=1; int i; for(i=1;i<=20;i++) { printf("12%d 12%d",f1,f2); if(i%2==0) { printf("\n"); } f1=f1+f2; f2=f2+f1; } return 0; }此代码有误,改正
在这段代码中,第6行的输出语句有误,应该是每个数字后面都要有空格,而不是数字和空格之间还有一个12。同时,第10行的if条件语句也需要修改。
以下是修改后的代码:
```
#include <stdio.h>
int main() {
int f1 = 1, f2 = 1;
int i;
for (i = 1; i <= 20; i++) {
printf("%d %d ", f1, f2);
if (i % 2 == 0) {
printf("\n");
}
f1 = f1 + f2;
f2 = f2 + f1;
}
return 0;
}
```
这样输出的结果就是每两个数字之间有一个空格,而且每两行之间有一个换行符。
阅读全文