我只是有一个关于 C 中数组的简单问题:
从数组中删除元素并在此过程中使数组变小的最佳方法是什么?
即:数组是n
size,然后我从数组中取出元素,然后数组会根据我从中删除的元素而变小。
基本上,我将数组视为一副纸牌,一旦我从这副纸牌的顶部取出一张纸牌,它就不应该再存在了。
编辑:我要在一天结束之前让自己发疯,感谢您在尝试价值交换时提供的所有帮助,但它无法正常工作。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
enum faces { Ace = 0, Jack = 10, Queen, King };
char *facecheck(int d);
int draw(int deck, int i);
int main() {
int deck[52], i, n;
char suits[4][9] = {
"Hearts",
"Diamonds",
"Clubs",
"Spades"
};
n = 0;
for (i = 0; i < 52; i++) {
deck[i] = n;
n++;
};
for (i = 0; i < 52; i++) {
if (i % 13 == 0 || i % 13 == 10 || i % 13 == 11 || i % 13 == 12)
printf("%s ", facecheck(i % 13));
else
printf("%d ", i % 13 + 1);
printf("of %s \n", suits[i / 13]);
}
draw(deck, i);
return 0;
}
char *facecheck(int d) {
static char *face[] = {
"Ace",
"Jack",
"Queen",
"King"
};
if (d == Ace)
return face[0];
else {
if (d == Jack)
return face[1];
else {
if (d == Queen)
return face[2];
else {
if (d == King)
return face[3];
}
}
}
}
int draw(int deck, int i) {
int hand[5], j, temp[j];
for (i = 0; i < 52; i++) {
j = i
};
for (i = 0; i < 5; i++) {
deck[i] = hand[];
printf("A card has been drawn \n");
deck[i] = temp[j - 1];
temp[j] = deck[i];
};
return deck;
}