我想要做的是总结在sumDices()
功能中打印的随机骰子,但我不知道该怎么做,有人可以帮助我吗?
这就是我的代码的样子:
void printDices() {
int i = 0;
int total = 0;
char one[3][3] = { { ' ',' ','\n' },{ ' ','*','\n' },{ ' ',' ','\0' } };
char two[3][4] = { { '*',' ',' ','\n' },{ ' ',' ',' ','\n' },{ ' ',' ','*','\0' } };
char three[3][4] = { { '*',' ',' ','\n' },{ ' ','*',' ','\n', },{ ' ',' ','*','\0' } };
char four[3][4] = { { '*',' ','*','\n' },{ ' ',' ',' ','\n' },{ '*',' ','*','\0' } };
char five[3][4] = { { '*',' ','*','\n' },{ ' ','*',' ','\n' },{ '*',' ','*','\0' } };
char six[3][4] = { { '*',' ','*','\n' },{ '*',' ','*','\n' },{ '*',' ','*','\0' } };
for (i = 0; i < 5; i++)
{
switch (rand() % 5) {
case 0: printf("%s\n", one); break;
case 1: printf("\n%s\n", two); break;
case 2: printf("\n%s\n", three); break;
case 3: printf("\n%s\n", four); break;
case 4: printf("\n%s\n", five); break;
case 5: printf("\n%s\n", six); break;
}
}
}
int sumDices() {
return 0;
}
int main(void) {
printDices();
srand(time(0));
sumDices();
system("pause");
return 0;
}
答案 0 :(得分:0)
您可以使这些字符数组像
一样char one[3][3] = { { ' ',' ','\n' },{ ' ','*','\n' },{ ' ',' ','\0' } };
到
char one[3][3] = {" \n", " *\n", " \0"};
增强可读性。如here所述,写出数组边界似乎不是问题。
您可以创建变量sum
来查找随机数之和,如
int sum=0, n;
for (i = 0; i < 5; i++)
{
n=rand()%5;
sum+=n;
switch (n) {
case 0: printf("%s\n", one); break;
case 1: printf("\n%s\n", two); break;
case 2: printf("\n%s\n", three); break;
case 3: printf("\n%s\n", four); break;
case 4: printf("\n%s\n", five); break;
case 5: printf("\n%s\n", six); break;
}
}
return sum;
为此,您需要将printDice()
函数的返回类型设为int
,如
int printDices()
要获取printDices()
中sumDices()
返回的值,请在printDices()
中致电sumDices()
。
在循环中,您打印的值比使用rand()
得到的随机数大1。也许您需要这些值的总和。在这种情况下,你可以做
for (i = 0; i < 5; i++)
{
n=rand()%5+1;
sum+=n;
switch (n) {
case 1: printf("%s\n", one); break;
case 2: printf("\n%s\n", two); break;
case 3: printf("\n%s\n", three); break;
case 4: printf("\n%s\n", four); break;
case 5: printf("\n%s\n", five); break;
case 6: printf("\n%s\n", six); break;
}
}
即,1
被添加到rand()
返回的随机值中。这样,值就会介于1
和6
之间,包括printf()
。
编辑:
您正尝试使用switch()
内的char one[]=" \n *\n \0";
语句打印多维数组。
你必须逐个打印它们。
或者,正如@Steve指出的那样,将这些多维字符数组转换为1D数组,如
case 5:
正如Bathsheba所述,switch
中的rand()%6
永远不会到达。我认为您需要rand()%5
而不是{{1}}。毕竟,模具有6个面孔。