gpt4 book ai didi

c - 在 C 中显示骰子数

转载 作者:太空宇宙 更新时间:2023-11-04 07:02:16 25 4
gpt4 key购买 nike

我想首先显示所有骰子的数字,而不是只显示第一个骰子的数字,但我认为它在 main() 中使用值 d1。如何在不使用 globel 变量的情况下做到这一点?

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

void display_dice_value(int d1, int d2, int d3, int d4, int d5, int d6)
{
d1=1+rand()%6;
d2=1+rand()%6;
d3=1+rand()%6;
d4=1+rand()%6;
d5=1+rand()%6;
d6=1+rand()%6;
printf("%d %d %d %d %d %d",d1,d2,d3,d4,d5,d6);
}


int main()
{
srand(time(NULL));
int d1,d2,d3,d4,d5,d6;
display_dice_value(d1,d2,d3,d4,d5,d6);
printf("\n%d",d1);
}

最佳答案

开始时,您需要将指针 传递给每个d<em>i</em>display_dice_value功能:

void display_dice_value(int *d1, int *d2, int *d3, int *d4, int *d5, int *d6)
{
*d1=1+rand()%6;
*d2=1+rand()%6;
...
printf("%d %d %d %d %d %d",*d1,*d2,*d3,*d4,*d5,*d6);
}


int main()
{
...
int d1,d2,d3,d4,d5,d6;
display_dice_value(&d1,&d2,&d3,&d4,&d5,&d6);
...
}

然而...

当您发现自己创建了一堆具有相同名称和尾随序号的变量时,这是一个很好的提示,表明您确实想要使用数组:

void display_dice_value( int *d, size_t numdice )
{
for ( size_t i = 0; i < numdice; i++ )
d[i] = 1 + rand() % 6;

for ( size_t i = 0; i < numdice; i++ )
printf( "%d ", d[i]);
putchar( '\n' );
}

int main( void )
{
int dice[6];
...
display_dice_value( dice, sizeof dice / sizeof *dice );
printf( "dice[0] = %d\n", dice[0] );
...
}

预计到达时间

最后一点,您的 display_dice_value函数不只是显示值;它还生成值,这可能会造成混淆。最好有一个单独的函数来实际生成你的骰子值:

void generate_dice_values( int *d, size_t numdice )
{
for ( size_t i = 0; i < numdice; i++ )
d[i] = 1 = rand() % 6;
}

/**
* For flexibility, write to any output stream
*/
void display_dice_values( FILE * stream, int *d, size_t numdice )
{
char *sep = "";
fputc( '[', stream );
for ( size_t i = 0; i < numdice; i++ )
fprintf( stream, "%s%d", sep, d[i] );
fputc( ']', stream );
}

int main( void )
{
int dice[6];
generate_dice_values( dice, sizeof dice / sizeof *dice );
printf( "6 dice rolls: " );
display_dice_values( stdout, dice, sizeof dice / sizeof *dice );
putchar( '\n' );
printf( "d[0] = %d\n", d[0] );
return 0;
}

关于c - 在 C 中显示骰子数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36606459/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com