编写一个程序,让用户掷出五个骰子并在图形上显示结果屏幕。
 程序应该通过填充5个数字(在1之间)来模拟5个掷骰子来开始。和5.函数应通过在屏幕上显示字符和计算函数来``绘制''结果总和。
我收到第一个函数的错误消息,它说我没有定义矩阵,我在“ if”中定义了矩阵。

#include <stdio.h>
int sumOfDie(int inputArray[], int arraySize);
int drawDie(int inputArray[], int arraySize)
{
int i, row, column=0;

for (i=0; i<arraySize; i++)  //determine the graphic number from the random number
{
    if (inputArray[i]==1)
    {
        char matrix [3][4] = {{"   "},{" * "},{"   "}};
    }
    if (inputArray[i]==2)
    {
        char matrix [3][4] = {{"*  "},{"   "},{"  *"}};
    }
    if (inputArray[i]==3)
    {
        char matrix [3][4] = {{"*  "},{" * "},{"  *"}};
    }
    if (inputArray[i]==4)
    {
        char matrix [3][4] = {{"* *"},{"   "},{"* *"}};
    }
    if (inputArray[i]==5)
    {
        char matrix [3][4] = {{"* *"},{" * "},{"* *"}};
    }

    for (row=0; row<3; row++) //Print out the matrix
    {
        for(column=0; column<4; column++)
        {
            printf("%c     ", matrix[row][column]);
        }
        printf("\n");
    }
}

}
int sumOfDie(int inputArray[], int arraySize)
{
    int i, sum=0;
    for (i=0; i<arraySize; i++)
    {
        sum=sum+inputArray[i];
    }
    return sum;
}



int main(void)
{
    int i;
    int inputArry[5];
    srand(time(NULL));


for(i=0; i<5; i++)
{
    inputArry[i] = rand()%5+1;
}

for (i=0; i<5; i++)
{
    printf("Number:%d\n", inputArry[i]);
}

drawDie(inputArry, 5);

sum = sumOfDie(inputArray,5)
printf("The sum of %i + %i + %i + %i + %i = %i", inputArry[0], inputArry[1], inputArry[2], inputArry[3], inputArry[4], sum);

return 0;
}

最佳答案

在函数drawDie中,每个名为matrix的变量的作用域仅限于声明它们的if语句,这样以后就不能使用它们进行打印了。

您可以在单个多维数组中收集表示骰子所需的所有字符串,然后打印所需的字符串。

这是一个可能的实现(考虑一个六边骰子):

#include <stdio.h>

void print_n_times_in_a_row(const char *str, int n)
{
    for ( int i = 0; i < n; ++i )
    {
        printf(" %s", str);
    }
    puts("");
}

void draw_dices(int* values, int n)
{
    static const char dice_str[][3][8] = {
        {{"       "},{"   *   "},{"       "}},  // 1
        {{" *     "},{"       "},{"     * "}},  // 2
        {{" *     "},{"   *   "},{"     * "}},  // ...
        {{" *   * "},{"       "},{" *   * "}},
        {{" *   * "},{"   *   "},{" *   * "}},
        {{" *   * "},{" *   * "},{" *   * "}}   // 6. Just in case...
    };

    // I'll print all the "dices" in a row
    print_n_times_in_a_row("+-------+", n);
    for ( int j = 0; j < 3; ++j )
    {
        for ( int i = 0; i < n; ++i )
        {
            printf(" |%s|", dice_str[values[i] - 1][j]);
        }
        puts("");
    }
    print_n_times_in_a_row("+-------+", n);
}


int main(void)
{
    int dices[] = {4, 2, 5, 6, 1, 3};

    draw_dices(dices, 6);
}


哪个输出:

 + ------- + + ------- + + ------- + + ------- + + ------- + + ---- ---
 | * * | | * | | * * | | * * | | | | * |
 | | | | | * | | * * | | * | | * |
 | * * | | * | | * * | | * * | | | | * |
 + ------- + + ------- + + ------- + + ------- + + ------- + + ---- ---

关于c - 超出范围时 undefined variable ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47511716/

10-10 12:30