劣质代码评析——《写给大家看的C语言书(第2版)》附录B之21点程序(六)

0. #include <stdio.h>1. #include <time.h>2. #include <ctype.h>3. #include <stdlib.h>4. 5. #define BELL ‘\a’6. #define DEALER 07. #define PLAYER 18. 9. #define ACELOW 010. #define ACEHIGH 111. 12. int askedForName = 0;13. 14. 15. void dispTitle(void);16. void initCardsScreen(int cards[52],int playerPoints[2],17. int dealerPoints[2], int total[2], 18. int *numCards);19. int dealCard(int * numCards,int cards[52]);20. void dispCard(int cardDrawn,int points[2]);21. void totalIt(int points[2],int tatal[2],int who);22. void dealerGetsCard(int *numCards,int cards[52],23. int dealerPoints[2]);24. void playerGetsCard(int *numCards,int cards[52],25. int playerPoints[2]);26. char getAns(char mesg[]);27. void findWinner(int total[2]);28. 29. main()30. {31. int numCards;32. int cards[52],playerPoints[2],dealerPoints[2],total[2];33. char ans;34.35. do 36. { 37.initCardsScreen(cards,playerPoints,dealerPoints,total, &numCards);38.dealerGetsCard(&numCards,cards, dealerPoints););40.playerGetsCard(&numCards,cards,playerPoints); 41.playerGetsCard(&numCards,cards,playerPoints);42.do43.{); )46.{ 47.playerGetsCard(&numCards,cards,playerPoints);48.} 49.} );51.52.totalIt(playerPoints,total,PLAYER);53.do54.{55.dealerGetsCard(&numCards,cards,dealerPoints);56.}57.while (dealerPoints[ACEHIGH] < 17 );58.59.totalIt(dealerPoints,total,DEALER);60.findWinner(total); 61.); 63. });65.66. return 0;67. }68. 69. void initCardsScreen( int cards[52],int playerPoints[2],70.int dealerPoints[2], int total[2], 71.int *numCards )72. {73. int sub,val = 1 ;74. char firstName[15];75. *numCards=52;76.77. for(sub=0;sub<=51;sub++)78. {79.val = (val == 14) ? 1 : val;80.cards[sub] = val;81.val++; 82. }83.84. for(sub=0;sub<=1;sub++)85. { 86.playerPoints[sub]=dealerPoints[sub]=total[sub]=0;87. }88. dispTitle();89.90. if (askedForName==0)91. { );,firstName);94.askedForName=1;,firstName);96.getchar();97. }98. return;99. }100. 101. void playerGetsCard(int *numCards,int cards[52],int playerPoints[2])102. {103. int newCard;104. newCard = dealCard(numCards, cards););106. dispCard(newCard,playerPoints);107. }108. 109. 110. void dealerGetsCard(int *numCards,int cards[52],int dealerPoints[2])111. {112. int newCard;113. newCard = dealCard(numCards,cards););115. dispCard(newCard,dealerPoints);116. }117. 118. int dealCard(int * numCards,int cards[52])119. {120. int cardDrawn,subDraw;121. time_t t;122. srand(time(&t));123. subDraw = (rand()%(*numCards));124. cardDrawn = cards[subDraw];125. cards[subDraw] = cards[*numCards -1];126. (*numCards)–;127. return cardDrawn;128. }129. 130. void dispCard(int cardDrawn, int points[2])131. {132. switch(cardDrawn)133. {,);135.points[ACELOW] += 10;136.points[ACEHIGH] += 10;137.break;,);139.points[ACELOW] += 10;140.points[ACEHIGH] += 10;141.break;,);143.points[ACELOW] += 10;144.points[ACEHIGH] += 10;145.break;146.default : points[ACELOW] += cardDrawn;147.if(cardDrawn==1)148.{ ,);150.points[ACEHIGH]+= 11;151.}152.else153.{ 154.points[ACEHIGH]+=cardDrawn;,cardDrawn); 156.}157. }158. return ;159. }160. 161. void totalIt(int points[2],int total[2],int who)162. {163. if ( (points[ACELOW] == points[ACEHIGH])164.||(points[ACEHIGH] < 21 ))165. { 166.total[who] = points[ACELOW];167. }168. else169. { 170.total[who] = points[ACEHIGH];171. }172.173. if (who == PLAYER )174. {, total[PLAYER]);176. }177. else178. {, 180.total[DEALER]);181. }182. return;183. }184. 185. void findWinner(int total[2])186. {187. if ( total[DEALER] == 21 )188. {);190.return ;191. }192. if ( (total[DEALER] > 21) && (total[PLAYER] > 21) )193. { , );195.return ; 196. }197. if ((total[DEALER] >= total[PLAYER])&& (total[DEALER] < 21))198. { );200.return ; 201. },,BELL);203. return;204. }205. 206. char getAns(char mesg[])207. {208. char ans;, mesg);210. ans = getchar();211. getchar();212. return toupper(ans);213. }214. 215. void dispTitle(void)216. {217. int i = 0 ;218. while(i<25)219. { );221.i++; 222. });224. return ;225. },香港服务器,网站空间,美国服务器所以你不懂我的选择,也可以不懂我的难过,

劣质代码评析——《写给大家看的C语言书(第2版)》附录B之21点程序(六)

相关文章:

你感兴趣的文章:

标签云: