我必须使用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(" ");
}
}
}
}
任何帮助都将不胜感激,如果我需要澄清任何事情,请告诉我。
答案 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;
}