我正在做一项作业,涉及用 C 语言编写一个程序,该程序从 .txt 文件中读取数据并将其保存在二维数组中。然后我计算每行和每列的平均值。我已经编写了程序,它运行良好,但我希望能够让输出并排显示行平均值和列平均值,而不是仅在一行中沿着屏幕向下显示。
for (i = 0; i < nrows; i++)
{
j = 0;
if (j < ncols)
{
printf("\nAverage for row %i", i);
fprintf(fileavg, "\nAverage for row %i", i);
j++;
}
printf("\n %5.2lf\t", row_avg[i]);
fprintf(fileavg, "\n %5.2lf\t", row_avg[i]);
}
for (j = 0; j < ncols; j++)
{
i = 0;
if (i < nrows)
{
printf("\nAverage for column %i", j);
fprintf(fileavg, "\nAverage for column %i", j);
i++;
}
printf("\n %5.2lf\t", col_avg[j]);
fprintf(fileavg, "\n %5.2lf\t", col_avg[j]);
}
最佳答案
如果您想要并排放置两段文本,您应该打印它们,中间不要换行。这在格式化时会变得非常烦人,尤其是因为平均值不太可能是相同的位数。
你的意思是你想要订单去row_avg[i]
, col_avg[i]
, row_avg[i+1]
, col_avg[i+1]
, ETC?
如果是这样,下面是如何做到这一点。关键是递增 i
和 j
在同一个循环中。你正在做的是初始化 j
至 0
每行 i
.
j=0;
for(i=0; i<nrows; i++)
{
printf("\nAverage for row %i", i);
printf("\n %5.2lf", row_avg[i]);
fprintf(fileavg, "\nAverage for row %i", i);
fprintf(fileavg, "\n %5.2lf", row_avg[i]);
if (j < ncols) {
printf("\nAverage for column %i", j);
printf("\n %5.2lf", col_avg[j]);
fprintf(fileavg, "\nAverage for column %i", j);
fprintf(fileavg, "\n %5.2lf", col_avg[j]);
}
jj++
}
我想这就是你想要的基本结构。如果nrows == ncols
,你不必担心 j < ncols
子句,您可以将其打印出来。
您可以重新排列打印语句,包括和排除 \n
和 \t
得到你喜欢的结果。另外,一般来说,最好将新行放在之后,而不是之前,但我不确定这是如何编纂的。
关于c - 如何在 C 中打印两个相邻的一维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58721911/