卡片组问题,C函数有问题

卡片组问题,C函数有问题,c,C,我只是个初学者,非常感谢你的帮助。在下面的代码中,我收到了错误,似乎我对函数做了一些错误。下面列出了程序输出,它假设随机生成一个列表,如图所示 请提供有关如何修复此程序的任何建议 #include <stdio.h> void random_shuffle(deck, deck+52) { } /* initialize suit array */ const char *suit[ 4 ] = { "Hearts", "Diamon

我只是个初学者,非常感谢你的帮助。在下面的代码中,我收到了错误,似乎我对函数做了一些错误。下面列出了程序输出,它假设随机生成一个列表,如图所示

请提供有关如何修复此程序的任何建议


#include <stdio.h>

void random_shuffle(deck, deck+52)   {
    
}

/* 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 */
} 

这个


。。。不是有效的C函数定义。必须为每个函数参数表示类型和不同的标识符。这两个参数都没有指定类型,而且
deck+52
不仅仅是一个标识符。

什么是
void random\u shuffle(deck,deck+52)
应该是什么意思?看起来你在尝试用C编写C以外的东西。如果你想有效地使用C,你可能应该坚持编写更惯用的C代码
for_each
是试图将方形销钉压入圆孔的示例。在C语言中,我们只需为循环编写一个
,并完成它。我收到了错误。提示:标准的计算机卡片符号是两个字符,比如
AS
2D
TC
在哪里是数字或
AKQJT
t
在一起是10。
void random\u shuffle(deck,deck+52)
。因此,如果您将该函数声明与所有其他函数声明进行比较,您是否没有注意到任何不同?这显然不是一个有效的函数声明。无法告诉您它应该是什么,因为您没有明确说明输入的含义。我应该如何在C中正确声明和定义random_shuffle?@user3785208,正如我已经说过的,您必须为每个参数指定一个类型和一个不同的标识符。您已经有了其他可以作为示例的函数。
 void random_shuffle(deck, deck+52)   {
                               ^
main.c: In function ‘shuffleAndDeal’:
main.c:36:5: warning: implicit declaration of function ‘random_shuffle’ [-Wimplicit-function-declaration]
     random_shuffle(deck, deck+52);
     ^~~~~~~~~~~~~~
main.c: At top level:
main.c:47:6: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘:’ token
https://www.onlinegdb.com/online_c_compiler#tab-stdin
      ^```


  [1]: https://i.stack.imgur.com/bF7tl.png
void random_shuffle(deck, deck+52)   {

}