【发布时间】:2021-05-14 12:50:00
【问题描述】:
我编写了一个代码,从标准输入中读取 3 个卡车 ID,并将它们存储在一个数组中。
id 数组是名为 tTruckList 的结构的一部分,我在其中存储 id 和我们拥有的卡车数量。所以,如果我们有一个 id,那么我们就有一辆卡车。
因此,在这之后,我们有两个 a 和 b 数组,每个数组都填充了 3 个整数,并更新了卡车的数量。
然后我想将数组 a.id 的每个位置与数组 b.id 的每个位置进行比较,如果值相同,则复制它在 c 卡车列表中的第三个数组 c.id 中。
为此,我在另一个 for 循环中编写了 for 循环。所以我可以将拳头 a.id[0] 与数组 b.id 的每个位置进行比较,如果值相同,我将其复制到 c 中。 id[i]。如果我没有找到相同的值,那么我会去 a.id[1] 执行相同的步骤。
但是,这最后一步不适用于我当前的代码,我不知道错误在哪里。你能帮帮我吗?
这是我的代码,谢谢:
#include <stdio.h>
#define MAX 3
typedef struct {
int id[MAX];
int numTrucks;
} tTruckList;
int main (int argc, char** argv) {
tTruckList a, b, c;
a.numTrucks = 0;
int i;
int pos;
int aux;
int aux2;
for(i=0; i<MAX; i++){
printf("id of truck a >>\n");
scanf("%d", &a.id[i]);
a.numTrucks = a.numTrucks + 1;
}
for(i=0; i<MAX; i++){
printf("id of truck b >>\n");
scanf("%d", &b.id[i]);
b.numTrucks = b.numTrucks +1;
}
c.numTrucks = 0;
for(i=0; i<MAX; i++){
aux = a.id[i];
pos=0;
for(i=0; i<MAX; i++){
aux2 = b.id[i];
if(aux == aux2){
c.id[i-pos]= aux;
c.numTrucks= c.numTrucks +1;
} else {
pos = pos + 1;
}
}
}
printf("first id c: %d\n", c.id[0]);
printf("second id c: %d\n", c.id[1]);
printf("third id c: %d\n", c.id[2]);
printf("number of trucks c: %d\n", c.numTrucks);
return 0;
}
【问题讨论】: