首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

,编了一个宾果游戏,有些地方不明白

2012-06-05 
求助,编了一个宾果游戏,有些地方不明白1.用visual c++的时候可以运行,用dev的时候排除重复数字的方程不工

求助,编了一个宾果游戏,有些地方不明白
1.用visual c++的时候可以运行,用dev的时候排除重复数字的方程不工作
2.在我赢的时候,debug显示 Run-Time Check Failure #3 - The variable 'colLetter' is being used without being initialized.,而且N是一个?
You won!
Winning Numbers: B-11 I-23 ?0 G-48 O-67 Continue to play? (N for No):
3。只能输出我赢,没办法输出电脑赢
4。怎么把最当中的那个0改成free,是个int的二维数组
5。 计算输赢的公式好像错了,但不知道是哪里
谢谢

C/C++ code
#include <stdio.h>#include <stdlib.h>#include <time.h>#include <string.h>#include <ctype.h>#define MAX_INTS 5#define MAX_ELEMS 76#define WORD_SIZE 50void getRandBingoCard(int card [][MAX_INTS]);void printBingoCard (int card[][MAX_INTS]);int playBingo (int card1 [][MAX_INTS], int card2 [][MAX_INTS], int matches1 [][MAX_INTS], int matches2 [][MAX_INTS]);bool repeatFcn(void);int isInCard (int searchArray [][MAX_INTS],int searchCol, int searchRows, int targetNum);int getBingoNum(int *numArray);void printWinInfo (int card [][MAX_INTS], int matches [][MAX_INTS],char nameStr[WORD_SIZE]);void displayBingoNum (int number);bool checkMatch (int card [][MAX_INTS], int matches [][MAX_INTS], int displayNum);bool checkWin (int matches [][MAX_INTS]);int main (void){    int winner;    int card1 [MAX_INTS][MAX_INTS];    int card2 [MAX_INTS][MAX_INTS];        int matches1 [MAX_INTS][MAX_INTS];    int matches2 [MAX_INTS][MAX_INTS];        srand(time(NULL));        do{    printf("\nYour Bingo Card:\n");    getRandBingoCard (card1);    printBingoCard (card1);        printf("\nComputer's Bingo Card:\n");    getRandBingoCard (card2);    printBingoCard (card2);        winner=playBingo (card1,card2,matches1,matches2);        if (winner==1)       {        printWinInfo (card1,matches1,"You");        }    if (winner==2)       {        printWinInfo (card2,matches2,"Computer");        }    }    while(winner==0||repeatFcn()==false);            system ("pause");    return 0;}//Avoid getRandBingoCard(int card [][MAX_INTS]){     int col, row, min,target,index;     //target=0;     min=1;     for (col=0;col<MAX_INTS;++col)         {          for (row=0;row<MAX_INTS;++row)              {                  card [row][col] = rand()%15+min;                                    target=card[row][col];                 // printf("%d ,%d,%d, %d\n ", row,col,card [row][col],target);                                   index=isInCard ( card,col,row,target);                //  printf("\n%d", index);                    while(index!=-1){                                           card [row][col] = rand()%15+min;                      target = card [row][col];                      index=isInCard ( card,col,row, target);                     }            //    printf("%d ,%d,%d, %d||\n ", row,col,card [row][col],target);              }          min +=15;          }           card [2][2]=0;            }//Bvoid printBingoCard (int card[][MAX_INTS]){     int i,j;          printf ("   B   I   N   G   O\n");          for (i=0;i<MAX_INTS;++i)         {          for (j=0;j<MAX_INTS;++j)              {               printf ("%4d", card[i][j]);               }          printf("\n");          }}//Cint playBingo (int card1 [][MAX_INTS], int card2 [][MAX_INTS], int matches1 [][MAX_INTS], int matches2 [][MAX_INTS]){    int chosenArray[MAX_ELEMS]={0};    int bingoNum,k;    memset(matches1,0,sizeof(matches1));    memset(matches1,0,sizeof(matches2));    //bool flag;//where to initialize matches    //use bingoNum    k=0;    while(k<MAX_ELEMS){    bingoNum = getBingoNum(chosenArray);    printf("Bingo Number drawn: ");    displayBingoNum(bingoNum);    printf("\n");    if ((checkMatch (card1,matches1,bingoNum))!=false)       {        printf("\nYou got a match!\n");        }            checkMatch (card2,matches2,bingoNum);        if ((checkWin (matches1))!=false)         return 1;    else if ((checkWin (matches2))!=false)         return 2;    ++k;    };        return 0;//how about both won?}//Dvoid printWinInfo (int card [][MAX_INTS], int matches [][MAX_INTS],char nameStr[WORD_SIZE]){     int i2, j2;          printf("%s won!\nWinning Numbers: ", nameStr);          for (i2=0;i2<MAX_INTS;++i2)         {          for (j2=0;j2<MAX_INTS;++j2)              {                if (matches[i2][j2]==2)                    displayBingoNum (card[i2][j2]);               }          }     }//E/*======================repeatFcn===========================reads the user's answer in a local string, returns if the first char in the answer string is 'Y' or 'y'.Pre  nonePost True if it is 'y' or 'Y',false if it is else*/bool repeatFcn(void){     char checkStr[WORD_SIZE];          printf("Continue to play? (N for No): ");     fgets( checkStr, WORD_SIZE, stdin);               if(toupper(checkStr[0])=='N')                 return true;         else                 return false;}//Fint isInCard (int searchArray [][MAX_INTS],int searchCol, int searchRows, int targetNum){    int index;        index = searchRows;                          do{            //printf("%d %d %d\n",index,  searchArray[index][searchCol], targetNum);            --index;           }while (index>=0  && targetNum != searchArray [index][searchCol]);        if (targetNum == searchArray [index][searchCol])       return index;    else        return -1;} //Gint getBingoNum(int *numArray){    int currNum;        do{       currNum = rand()%75+1;       }while (numArray[currNum] !=0);           numArray[currNum]=1;        return currNum;}//Hvoid displayBingoNum (int number){    char colLetter;        if (number>0&&number<=15)        colLetter='B';    if (number>15&&number<=30)        colLetter='I';    if (number>30&&number<=45)        colLetter='N';    if (number>45&&number<=60)        colLetter='G';    if (number>60&&number<=75)        colLetter='O';   // colLetter=    printf("%c-%d ", colLetter, number);}//Ibool checkMatch (int card [][MAX_INTS], int matches [][MAX_INTS], int displayNum){     int temp,foundIndex;          temp = displayNum/15;          foundIndex = isInCard (card, temp, MAX_INTS, displayNum);          if (foundIndex >=0)        {         matches [foundIndex][temp]=1;         return true;         }     else          return false;}//Jbool checkWin (int matches [][MAX_INTS]){    int row1,col1,tot;        matches[2][2]=1;        for (row1=0;row1<MAX_INTS;++row1)        {         for (col1=0,tot=0;col1<MAX_INTS;++col1)             {             tot += matches [row1][col1];             }         if (tot == (MAX_INTS-1))            {             for (col1;col1<MAX_INTS;++col1)                 {                  matches [row1][col1]=2;                  return true;                  }             }         }             for (col1=0;col1<MAX_INTS;++col1)        {         for (row1=0, tot=0;row1<MAX_INTS;++row1)             {             tot += matches [row1][col1];             }         if (tot == (MAX_INTS-1))            {             for (row1;row1<MAX_INTS;++row1)                 {                  matches [row1][col1]=2;                  return true;                  }             }         }        //check right diagonal    for (row1=0, col1=MAX_INTS-1;row1<MAX_INTS;++row1,--col1)        {         tot += matches [row1][col1];         }    if (tot == (MAX_INTS-1))       {       for (row1=0, col1=0, tot=0;row1<MAX_INTS;++row1,++col1)           {            matches [row1][col1]=2;            }       return true;       }    //check right diagonal    for (row1=0, col1=0, tot=0;row1<MAX_INTS;++row1,++col1)        {         tot += matches [row1][col1];         }    if (tot == (MAX_INTS-1))       {       for (row1=0, col1=0, tot=0;row1<MAX_INTS;++row1,++col1)           {            matches [row1][col1]=2;            }       return true;       }    return false;} 



[解决办法]
在使用colLetter之前没有赋初值。
1、char colLetter = '';
2、char colLetter;
colLetter = '';
两种都可以

热点排行