编辑:非常感谢你(大家!)为您的意见!在您的指导下,我能够解决胜利百分比和乱数阵列数。然而,我还没有解决输赢的平均投注数量。我更新了我的代码,现在在下面。For循环和阵列在C
开始原帖:
谢谢你在前进的人谁读取这个或建议达到了!
所以我正在做定型赌博,直到你赢了,或者它已经没有了编程课程的介绍。代码工作得很好,除非我实际上添加了头部或尾部部分 - 那么我的数组可以让投注数量变得混乱。当我使用笔记来隐藏实际的投币部分时,阵列工作正常。当我用掷硬币来运行它时,betArray商店真的是不可思议的数字(负数,十亿中的整数)。
这是迄今为止代码:
如果#include<stdio.h>
#include<stdlib.h> /*Enables use of rand()*/
int main() {
setvbuf(stdout, NULL, _IONBF, 0); /*Allow me to use repl.it*/
/*Enter Gambler's name*/
char gambleName[15] = "";
printf("Enter gambler's name:\n");
scanf("%s", gambleName);
printf("\nWelcome, ");
printf("%s! \n", gambleName);
/*Enter Stakes*/
int availableFunds;
int goalFunds;
printf("We'll be betting $1 per bet. Enter your available funds:\n");
scanf("%d", &availableFunds); /* Saves stakes as availableFunds */
int seedVal=4;
srand(seedVal);
/*Butter the gamblers up*/
if(availableFunds>=1) {
printf("%d? Wow, %s - that's a great start!\n",availableFunds, gambleName);
/*Enter Goal*/
printf("How much do you want to win today? Enter a value up to 10000 with no commas, decimals or spaces:\n"); /*Saves goal as goalFunds*/
scanf("%d",&goalFunds);
/*Recognize ambitious gamblers*/
if (goalFunds > 10*availableFunds) {
printf("Wow, ambitious! Let's get started.\n");
}
else {
printf("OK, let's get started!\n");
}
printf("\n");
/*begin gambling problem*/
int betArray[1000]={0};
int game = 0;
int bet=0;
float wins = 0;
int losses = 0;
for (game=0 ; game<1000; game++) {
if (availableFunds>0 && availableFunds<goalFunds) {
int toss = rand()%2;
bet+=1;
/*losing bet*/
if (toss == 0) {
availableFunds -= 1;
losses += 1;
}
/*winning bet*/
else {
availableFunds += 1;
wins += 1;
}
betArray[game+1] = bet;
}
else {
break;
}
}
int sumBet = 0;
for (game=0;game<1000;game++) {
sumBet+=betArray[game];
}
float betAverage = sumBet/1000;
float winOutOfGames = wins/1000;
float winPercent = winOutOfGames*100;
/*print totals*/
printf("%d games played with:\n",game);
printf("%.f goals reached\n",wins);
printf("%d down-and-out losses.\n",losses);
printf("You won ~%.1f%% of your games.\n",winPercent);
printf("On average, it took you %.f bets to win or go broke.\n",betAverage);
printf("\n");
printf("Thanks for playing!\n");
for (game = 1; game <= 50; game++) {
printf("Bets in game [%d] = %d\n",game,betArray[game]);
}
}
/* Send the broke guys packing*/
else {
printf("$%d...? You may need to stop at an ATM... ¯\\_(ツ)_/¯ See you next time!\n", availableFunds);
}
return 0;
}
对不起的代码是有点乱,我加了一些东西,试图想发送的最新版本。
谢谢!
你使用过调试器吗? – kaylum
我感觉不好,但我不知道这意味着什么。我在Mac OSX上,调试器上的任何建议? –
里面的if(availableFunds> 0 && availableFunds