为什么在’main’之前说“预期的声明说明符”

首先,我理解本书中从本书中复制的所有内容。
第二,我只想看看它是否有效,
唯一的问题是它在’主’之前说’预期的声明说明符’,我不知道它意味着什么
ps这是一个非常长的程序(300多行)

#include  #include  #include  #include  #define FALSE 0 #define TRUE 1 void printGreeting(); int getBet(); char getSuit(int suit); char getRank(int rank); void getFirstHand(int cardRank[], int cardSuit[]); void getFinalHand (int cardRank[], int cardSuit[], int finalRank[], int finalSuit[], int ranksinHand[], int suitsinHand[]) int analyzeHand(int ranksinHand[], int suitsinHand[]); main() { int bet; int bank = 100; int i; int cardRank [5]; int cardSuit [5]; int finalRank[5]; int finalSuit[5]; int ranksinhand[13]; int suitsinhand[4]; int winnings; time_t t; char suit, rank, stillPlay; printGreeting(); do{ bet = getBet(); srand(time(&t)); getFirstHand(cardRank, cardSuit); printf("Your five cards: \n\n"); for (i = 0; i < 5; i++) { suit = getSuit(cardsSuit[i]); rank = getRank(cardRank[i]); printf("Card #%d: %c%c\n\n", i+1, rank, suit); } for (i=0; i < 4; i++) { suitsinHand[i] = 0; } for (i=0; i < 13; i++) { ranksinHand[i] = 0; } getFinalHand(cardRank, cardSuit, finalRank, finalSuit, ranksinHand, suitsinHand); printf("Your five final cards:\n\n"); for (i = 0; i < 5; i++) { suit = getSuit(finalSuit[i]); rank = getRank(finalRank[i]); printf("Card #%d: %c%c\n\n", i+1, rank, suit); } winnings = analyzeHand(ranksinHand, suitsinHand); printf("You won %d!\n\n", bet*winnings); bank = bank - bet + (bet*winnings) printf("\n\nYour bank is now %d.\n\n", bank); printf("Want to play again? "); scanf(" %c", &stillPlay); }while (toupper(stillPlay) == 'Y'); return; } /*************************************************************************/ void printGreeting(); { printf("**********************************************************\n\n"); printf("\n\n\tWelcome to the Absolute Beginner's Casino\n\n"); printf("\tHome of the Video Draw Poker"); printf("**********************************************************\n\n"); printf("Here are the rules\n"); printf("You start with 100 credits, and you make a bet from"); printf("1 to 5 credits.\n"); printf("You are dealt 5 cards, and then you choose which "); printf("cards to keep"); printf("or discard\n"); printf("You want to make the best possible hand.\n"); printf("\nHere is the table for winnings (assuming a "); printf("bet of 1 credit):"); printf("\nPair \t\t\t\t1 credit"); printf("\nTwo pairs\t\t\t2 credits"); printf("\nThree of a kind\t\t\t3 credits"); printf("\nStraight \t\t\t4 credits"); printf("Flush\t\t\t\t5 credits"); printf("Full House\t\t\t8 credits"); printf("Four of a Kind\t\t\t10 credits"); printf("Straight Flush\t\t\t20 credits"); printf("\n\nHave fun!!\n\n"); } void getFirstHand(int cardRank[], int cardSuit[]); { int i,j; int carDup; for(i=0; i < 5; i++) { carDup = 0; do{ cardRank[i] = (rand() % 13); cardSuit[i] = (rand() % 4); for (j=0; j = 1 && bet <= 5) { return(bet); } else if (bet == 0) { exit(1); } else { printf("\n\nPlease enter a bet from 1-5 or "); printf("0 to quit the game\n\n"); } }while ((bet  5)); } int analyzeHand(int ranksinHand[], int suitsinHand[]) { int num_consec = 0; int i, rank, suit; int straight = FALSE; int flush = FALSE; int four = FALSE; int three = FALSE; int pairs = 0; for (suit = 0; suit < 4; suit++) if (suitsinHand[suit] == 5) flush = TRUE; rank = 0; while (ranksinHand[rank] == 0) rank++; for (; rank < 13 && ranksinHand[rank]; rank++) num_consec++; if(num_consec == 5) { straight = TRUE; } for (rank = 0; rank < 13; rank++){ if (ranksinHand[rank] == 4) four == TRUE; if (ranksinHand[rank] == 3) three == TRUE; if (ranksinHand[rank] == 2) pairs++; } if (straight && flush){ printf("Straight Flush\n\n"); return(20); } else if (four){ printf("Four of a kind\n\n"); return (10); } else if (three && pairs == 1){ printf("Full House\n\n"); return (8); } else if (flush){ printf("Flush\n\n"); return (5); } else if (straight){ printf("Straight\n\n"); return (4); } else if (three){ printf("Three of a Kind\n\n"); return (3); } else if (pairs == 2){ printf("Two Pairs\n\n"); return (2); } else if (pairs == 1){ printf("Pair\n\n"); return (1); } else{ printf("High Card\n\n"); return (0); } } void getFinalHand (int cardRank[], int cardSuit[], int finalRank[], int finalSuit[], int ranksinHand[], int suitsinHand[]) { int i, j, carDup; char suit, rank, ans; for (i=0; i < 5; i++) { suit = getSuit(cardSuit[i]); rank = getRank(cardRank[i]); printf("Do you want to keep card #%d: %c%c", i+1, rank, suit); printf("\nPlease answer (Y/N):"); scanf(" %c", &ans); if (toupper(ans) == 'Y') { finalRank[i] = cardRank[i]; finalSuit[i] = cardSuit[i]; ranksinHand[finalRank[i]]++; suitsinHand[finalSuit[i]]++; continue; } else if (toupper(ans) == 'N') { carDup = 0; do{ carDup = 0; finalRank[i] = (rand() % 13); finalSuit[i] = (rand() % 4); for (j=0; j < 5; j++) { if((finalRank[i] == finalRank[j]) && (finalSuit[i] == finalSuit[j])) { carDup = 1; } } for (j=0; j < i; j++) { if((finalRank[i] == finalRank[j]) && (finalSuit[i] == finalSuit[j])) { carDup = 1; } } }while (carDup == 1); ranksinHand[finalRank[i]]++; suitsinHand[finalSuit[i]]++; } } } 

按照惯例, main()必须返回一个整数。 你必须这样声明:

 int main() { // Your method return 0; } 

int mainvoid main将完成工作。 这里 , int main显示为C标准。 请参阅main()返回类型 。