C 洗牌交易程序

C 洗牌交易程序,c,C,当我编译我的C程序时,我得到了以下错误。我只是个初学者,所以我很感激这里的帮助 main.c: In function ‘print_card’: main.c:53:12: error: ‘face’ undeclared (first use in this function) printf(face[n % 13] + " of " + suit[n / 13]); ^~~~ main.c:53:12: note: each undec

当我编译我的C程序时,我得到了以下错误。我只是个初学者,所以我很感激这里的帮助

main.c: In function ‘print_card’:
main.c:53:12: error: ‘face’ undeclared (first use in this function)
     printf(face[n % 13] + " of " + suit[n / 13]);
            ^~~~
main.c:53:12: note: each undeclared identifier is reported only once for each function it appears in
main.c:53:36: error: ‘suit’ undeclared (first use in this function)
     printf(face[n % 13] + " of " + suit[n / 13]);
                                    ^~~~
我需要输出与此类似的内容: 钻石之王 九个俱乐部

任何建议(我是初学者)我可能做错了什么。这是我的代码


/* Card shuffling dealing program */
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

/* prototypes */


void shuffleAndDeal( int workdeck[][ 13 ], const char *workface[],const char *worksuit[] );
void print_card(int n);

int main( int argc, char *argv[] ) {
/* initialize suit array */
 const char *suit[ 4 ] = { "Hearts", "Diamonds", "Clubs", "Spades" };

 /* initialize face array */
 const char *face[ 13 ] =
 { "Ace", "Deuce", "Three", "Four",
 "Five", "Six", "Seven", "Eight",
 "Nine", "Ten", "Jack", "Queen", "King" };
 /* initialize deck array */
 int deck[ 4 ][ 13 ] = { 0 };
 
 srand( time( 0 ) ); /* seed random-number generator */
 shuffleAndDeal( deck, face, suit );
 return 0; /* indicates successful termination */
} 


void shuffleAndDeal( int workdeck[][ 13 ], const char *workface[], const char *worksuit[] ) {
//  srand((unsigned int)time(NULL));

    int deck[52];

    // Prime, shuffle, dump
    for (int i=0;i<52;deck[i++]=i);
    random_shuffle(deck, deck+52);
    for_each(deck, deck+52, print_card);
    return;
}

void print_card(int n) {
    printf(face[n % 13] + " of " + suit[n / 13]);
}


/*洗牌交易程序*/
#包括
#包括
#包括
/*原型*/
void shuffleendael(int-workdeck[][13],常量字符*工作面[],常量字符*工作区[]);
作废打印卡(int n);
int main(int argc,char*argv[]){
/*初始化套装数组*/
const char*suit[4]={“红心”、“钻石”、“梅花”、“黑桃”};
/*初始化面数组*/
常量字符*面[13]=
{“A”,“平手”,“三”,“四”,
“五”,“六”,“七”,“八”,
“九”、“十”、“杰克”、“女王”、“国王”};
/*初始化甲板阵列*/
int deck[4][13]={0};
srand(时间(0));/*种子随机数生成器*/
ShuffleAndeal(甲板、面部、套装);
返回0;/*表示成功终止*/
} 
void shuffleendael(int-workdeck[][13],常量字符*工作面[],常量字符*工作区[])){
//srand((无符号整数)时间(NULL));
内部甲板[52];
//素数、洗牌、转储

对于(int i=0;i您应该将
suit
face
声明为全局变量,以便它们可以在多个函数中引用

不要使用
deck[i++]=i
。这会导致未定义的行为,因为您正在递增
i
,并在同一表达式中读取,没有序列点。请将赋值放在循环体中

printf()
使用格式字符串指定在何处填充其他参数的值。不能将字符串与
+
连接在一起

#include <stdio.h>

/* initialize suit array */
const char *suit[ 4 ] = { "Hearts", "Diamonds", "Clubs", "Spades" };
/* initialize face array */
const char *face[ 13 ] = { "Ace", "Deuce", "Three", "Four",
                           "Five", "Six", "Seven", "Eight",
                           "Nine", "Ten", "Jack", "Queen", "King" };

void for_each(int *start, int *end, void(*f)(int)) {
    for (int *cur = start; cur < end; cur++) {
        f(*cur);
    }
}

void print_card(int n) {
    printf("%s of %s\n", face[n % 13], suit[n / 13]);
}

void shuffleAndDeal( int workdeck[][ 13 ], const char *workface[], const char *worksuit[] ) {
//  srand((unsigned int)time(NULL));

    int deck[52];

    // Prime, shuffle, dump
    for (int i=0;i<52;i++) {
        deck[i] = i;
    }
    random_shuffle(deck, deck+52);
    for_each(deck, deck+52, print_card);
    return;
}

int main( int argc, char *argv[] ) {
/* initialize deck array */
    int deck[ 4 ][ 13 ] = { 0 };
    shuffleAndDeal( deck, face, suit );
    return 0; /* indicates successful termination */
} 

#包括
/*初始化套装数组*/
const char*suit[4]={“红心”、“钻石”、“梅花”、“黑桃”};
/*初始化面数组*/
const char*face[13]={“A”,“D”,“三”,“四”,
“五”,“六”,“七”,“八”,
“九”、“十”、“杰克”、“女王”、“国王”};
每个(int*开始、int*结束、void(*f)(int))的无效{
对于(int*cur=start;curfor(int i=0;i
face
main
中是本地的,在其他函数中不可见。在C中不使用
+
进行字符串连接。您从哪里知道的?
printf()
的第一个参数应该是格式字符串。
printf(“%s of%s\n”,face[n%13],suit[n/13]))
您可以创建
适合
全局变量。您在哪里为每个
定义
?太好了,谢谢。我现在收到以下错误:在函数
shuffleendael:main.c:(.text+0x124):未定义对
random\u shuffle'collect2的引用:错误:ld返回了1个退出状态。当然,您需要定义该函数。我为每个()添加了
,因为它很简单。