#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 09:05:19 浏览: 71
为了计算不同元素的个数,可以使用一个变量 count 来记录,每次找到一个不同的元素时,count 加 1。最后创建数组 c 时,其大小就是 count。
修改代码如下:
```
#include <stdio.h>
int main() {
int n, k, i, j, g, f1 = 0, f2 = 0, f3 = 0, count = 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]);
}
for (f1 = 0; f1 < n; f1++) {
for (f2 = 0; f2 < k; f2++) {
if (a[f1] == b[f2])
break;
}
if (f2 == k) {
int exist = 0;
for (g = 0; g < f3; g++) {
if (c[g] == a[f1]) {
exist = 1;
break;
}
}
if (!exist) {
count++;
}
}
}
int c[count];
f3 = 0;
for (f1 = 0; f1 < n; f1++) {
for (f2 = 0; f2 < k; f2++) {
if (a[f1] == b[f2])
break;
}
if (f2 == k) {
int exist = 0;
for (g = 0; g < f3; g++) {
if (c[g] == a[f1]) {
exist = 1;
break;
}
}
if (!exist) {
c[f3] = a[f1];
f3++;
}
}
}
for (int l = 0; l < f3; l++) {
printf("%d", c[l]);
if (l != f3 - 1)
printf(" ");
}
return 0;
}
```
这样就能正确地计算出不同元素的个数,并创建正确大小的数组 c 来存储不同的元素。