作为一名现在正在尝试学习C ++的C#开发人员,我遇到了使用多维数组的问题。
问题是我想用任何值填充double [] []然后打印它。
这是我的输出:
Double
0 0 0 0 0
10 0 0 0 0
10 0 0 0 0
10 0 0 0 0
10 0 0 0 0
Int
0 1 2 3 4
0 1 2 3 4
0 1 2 3 4
0 1 2 3 4
0 1 2 3 4
我想要的是双输出类似于int输出。或者解释为什么两者的行为不同以及如何解决它。
#include <stdio.h>
#include "timer.h"
#define n 5
double A[n][n];
int B[n][n];
int main()
{
int i,j;
for (i=0; i<n; ++i)
{
for (j=0; j<n; ++j)
{
A[i][j] = (double)j;
B[i][j] = j;
}
}
//Print Double array
for (i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%d ",A[i][j]);
}
printf("\n");
}
printf("\n\n");
//Print Int array
for (i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%d ",B[i][j]);
}
printf("\n");
}
return 0;
}
答案 0 :(得分:2)
答案在于你如何致电printf
。转换说明符%d
需要一个整数参数。你给它一个双参数,这是未定义的行为。
要实现正确的行为,请在循环中使用%f
双数组。
抛开:您的代码确实是C而不是C ++。