【发布时间】:2014-03-21 14:04:04
【问题描述】:
我正在 Ubuntu 中使用 GCC 制作一个小型 ANSI C 应用程序,它使用 strcpy() 和排序。
我的标题:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define DECKSZ 52
typedef struct card {
enum {ACE=1, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE, TEN, JACK, QUEEN, KING} pips;
enum {SPADES, CLUBS, HEARTS, DIAMONDS} suit;
char cardName[20];
} card;
card deck[DECKSZ];
void initDeck(card[]);
void labelCards();
void shuffleDeck(card[]);
void swap(card*,card*);
我的主文件:
#include "CardOps.h"
void initDeck(card deck[]) {
int counter;
for (counter = 0; counter < DECKSZ; counter++) {
deck[counter].pips = (const)((counter % 13) + 1);
deck[counter].suit = (const)(counter / 13);
}
}
void labelCards() {
char pips[13][6] = {"Ace","Two","Three","Four","Five","Six","Seven","Eight","Nine","Ten","Jack","Queen","King"};
char suits[4][9] = {"Spades","Hearts","Diamonds","Clubs"};
int i;
card cardName;
for (i = 0; i < DECKSZ; i++) {
strcpy(cardName, pips[i]);
strcpy(cardName, suits[i]);
}
}
int displayCards(int numCards) {
int i, countCards;
if (numCards > 52)
countCards = 52;
else
countCards = numCards;
for (i = 0; i < countCards; i++) {
printf(cardName);
}
return countCards;
}
void shuffleDeck(card deck[]) {
int i, j;
for (i = 0; i < DECKSZ; i++) {
j = rand() % DECKSZ;
swap(&deck[i], &deck[j]);
}
}
void SortCards() {
}
void swap(card *c1, card *c2) {
card temp;
temp = *c1;
*c1 = *c2;
*c2 = temp;
}
int main(void) {
initDeck(deck);
shuffleDeck(deck);
return EXIT_SUCCESS;
}
我正在尝试实现以下功能:
一个名为 LabelCards() 的函数,它接受一个 void 和 返回一个空白。使用中的两个枚举类型成员中的每一个 甲板为cardName分配一个字符串,即“红桃皇后”。 (你会 想要创建一个字符串数组“Ace”、“Two”、“Three”等 点子和一个类似的数组,用于处理字符串处理。) 请注意,您需要使用 strcpy() 来进行实际分配 到cardName。
一个名为 DisplayCards() 的函数,它接受一个参数作为参数 整数 N,并返回一个整数。该功能应显示 牌组中前 N 张牌的 cardName。该函数返回 显示的卡片数量,可能少于实际的牌组 尺寸。例如,一副 52 张牌中不能显示 53 张牌;一世 需要检查这个并返回实际的卡数 显示出来。
一个名为 SortDeck() 的函数,它接受并返回一个 void。我的 函数应该使用 swap() 算法来组织卡片 套牌首先按他们的点数,然后根据他们的花色值。
有人可以帮我让功能正常工作吗?谢谢!
【问题讨论】:
-
这个问题似乎离题了,因为它不是一个可能对未来访问者有帮助的具体问题。 (这里至少有两个问题:排序和 strcpy。)问两个关于如何排序和如何使用 strcpy 的具体问题可能更合适。
-
好的,我把它分成两个问题。谢谢。