使用c中的2D阵列中的特定范围的随机数进行计算

时间:2018-02-24 10:52:54

标签: c multidimensional-array random

我必须使用3到19之间的随机数填充2D数组。

数组 4 x 3 ,前两列代表右三角形的两边,第三列是斜边。

我对C很新,所以我不确定自己哪里出错了。我的输出给了我很好的标题,但只有一个垂直的数字而不是 4 x 3 网格。

这是我的代码:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#define ROW 4
#define COL 3

void printChart(double array[ROW][COL]);

int main(void)
{
    double chart[ROW][COL];
    double *ptrchart = &chart[0][0];

    srand(time(NULL));
    for (size_t i = 0;i < ROW;i++)
    {
        for (size_t j = 0;j < COL;j++)
        {

            chart[i][j] = 3 + (rand() % 19);
        }
    }

    for (size_t i = 0;i < ROW;i++)
    {
        chart[i][2] = 0;
    }

    printChart(ptrchart);

    for (size_t i = 0;i < ROW;i++)
    {
        chart[i][2] = (double)sqrt(pow(chart[i][0], 2) + pow(chart[i][1], 2));

    }

    puts(" ");

    printChart(ptrchart);

    return 0;

}

void printChart(double array[ROW][COL])
{
    printf("%s", "Side A\tSide B\tHypotenuse(Side C)\n");
    for (size_t i = 0;i < ROW;i++)
    {
        for (size_t j = 0;j < COL;j++)
        {
            printf("%.3f\t",  array[i][j]);

            if (j = 2)
            {
                puts(" ");
            }
        }
    }
}

任何帮助都将不胜感激,如果我需要澄清任何事情,请告诉我。

1 个答案:

答案 0 :(得分:1)

你应该把(j == 2)而不是(j = 2)放在你的函数中,因为它改变j总是2你写的方式

我运行了以下代码并且可以正常运行

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#define ROW 4
#define COL 3

void printChart(double array[ROW][COL])
{
printf("%s", "Side A\tSide B\tHypotenuse(Side C)\n");
for (size_t i = 0;i < ROW;i++)
{
    for (size_t j = 0;j < COL;j++)
    {
        printf("%.3f\t",  array[i][j]);

        if (j == 2)
        {
            puts(" ");
        }
    }
}
}

int main(void)
{
double chart[ROW][COL];
double *ptrchart = &chart[0][0];

srand(time(NULL));
for (size_t i = 0;i < ROW;i++)
{
    for (size_t j = 0;j < COL;j++)
    {

        chart[i][j] = 3 + (rand() % 19);
    }
}
for (size_t i = 0;i < ROW;i++)
{
    chart[i][2] = 0;
}
for (size_t i = 0;i < ROW;i++)
{
    chart[i][2] = (double)sqrt(pow(chart[i][0], 2) + pow(chart[i][1], 2));
}
puts(" ");
printChart(ptrchart);
return 0;

}