问题描述
- 关于三维数组的输出问题
-
#include
#include
#include
#include
using namespace std;
#define pi 3.1415;
#define a 2
#define R 300
#define H 300
#define n 10
#define LB
int main()
{
int i,j,k;
double x[H][LB][R*n],y[H][LB][R*n],z[H];
double v[H][R*n][2],vk[H][R*n][2],vkz[H][R*n][2];
for(i=0;i<R*n;i++)
{
v[0][i][0]=(-i/n)*sin(i/n)+cos(i/n);
}
for(i=0;i<R*n;i++)
cout<<v[0][i][0]<<endl;
return 0;
}
这个编译没问题,但是无法得到结果输出,请问如何解决啊
解决方案
要不你试下把数组初始化一下
然后再运行
就你给出的程序而言,并不需要用到三维数组
你可以先弄成一维的
double v[n*R]=0;试试
for(int i=0;i<n*r;i++)
v[i]=(-i/n)*sin(i/n)+cos(i/n);
解决方案二:
double x[H][LB][R*n],y[H][LB][R*n],z[H];
数组的维度定义时,应该用常量。而不应该用计算表达式。
解决方案三:
缺少数组初始化,还没有分配空间
解决方案四:
应该是数据类型的问题,代码 -i/n 执行的结果,在 i 小于 n 的情况下都是零。
如果还找不到答案,建议你调试一下,将下面的语句:
v[0][i][0]=(-i/n)*sin(i/n)+cos(i/n);
进行分析,看看各个部分是否得到想要的结果。如果看 v 指定的位置是否正确存在数值。
解决方案五:
把i转成double的再做除法
时间: 2025-01-01 14:17:22