
正文
c语言三维函数程序 c语言 3d
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
c语言、三维数组
先说二维c语言三维函数程序,可以这么理解:
int n[3]有3个int
那么c语言三维函数程序,
int m[5][3]有5个int[3]
赋值时:
n[1]=3把3给1号
m[4]={5,9,4}m[4]是个int[3]类型,这么赋值,也就是这么赋值:
m[4]c语言三维函数程序的[0]是5:m[4][0]=5
m[4][1]=9
m[4][2]=4
懂c语言三维函数程序了吗?三维甚至更多维大同小异,比如
int k[4][5][3]有4个int[5][3]
这个概念应该不难理解的,就是各种类型,不停的加下标,加下标,加下标,下标,标……
曾写过一个模拟7段码(看看红绿灯上的倒计时是怎么显示的),共有2行显示,每行10个数字,每个数字7段,整个系统状态就是用一个bool[2][10][7]确定的
相关问答
Q1: 如何用C语言实现三维
最简单的做法是在结构体里存函数指针,然后初始化结构体的时候将函数的地址赋值给它。
复杂一点的,就得按照c++的多态原理,用虚函数表(其实就是能记录函数名对应的函数地址就好)记录每种结构体的成员函数地址,然后每个结构体里多存一个虚函数表的地址。。。然后调用函数的时候查到函数地址强转成函数类型然后调用。。。这个可以自己研究一下c++的虚函数表机制。
Q2: C语言指针定义三维不规则数组
#includestdio.h
void check(int * * *ppp) {
printf("三维数组Beginc语言三维函数程序:{\n");
printf("{ %d,%d,\n", ppp[0][0][0], ppp[0][0][1]);
printf("%d,%d,%d,%d,\n", ppp[0][1][0], ppp[0][1][1], ppp[0][1][2], ppp[0][1][3]);
printf("%d,%d,%d,%d,%d },\n", ppp[0][2][0], ppp[0][2][1], ppp[0][2][2], ppp[0][2][3], ppp[0][2][4]);
printf("\n");
printf("{ %d,%d,%d,%d,%d,\n", ppp[1][0][0], ppp[1][0][1], ppp[1][0][2], ppp[1][0][3], ppp[1][0][4]);
printf("%d,%d,%d,%d },\n", ppp[1][1][0], ppp[1][1][1], ppp[1][1][2], ppp[1][1][3]);
printf("\n");
printf("{ %d,%d,\n", ppp[2][0][0], ppp[2][0][1]);
printf("%d,%d,%d,\n", ppp[2][1][0], ppp[2][1][1], ppp[2][1][2]);
printf("%d,%d,%d,\n", ppp[2][2][0], ppp[2][2][1], ppp[2][2][2]);
printf("%d },\n", ppp[2][3][0]);
printf("} //三维数组End\n");
}
void main()
{
//一维
int a1[]={1,11};
int a2[]={2,22,222,2222};
int a3[]={3,33,333,3333,33333};
int a4[]={4,44,444,4444,44444};
int a5[]={5,55,555,5555};
int a6[]={6,66};
int a7[]={7,77,777};
int a8[]={8,88,888};
int a9[]={9};
//二维
int * b1[]={a1,a2,a3};
int * b2[]={a4,a5};
int * b3[]={a6,a7,a8,a9};
//三维
int ** a[] = {b1,b2,b3};
check(a);
}
Q3: C语言 用指针生成一个三维数组,用main调用另一个函数,该指针作为参数。
示例代码:
#include stdio.h
#include stdlib.h
int main()
{
//有效部分
int ***p = (int***)malloc(sizeof(int**)*3);
for (int i = 0; i 3; ++i){
p[i] = (int**)malloc(sizeof(int*) * 4);
}
for (int i = 0; i 3; ++i){
for (int j = 0; j 4; ++j){
p[i][j] = (int*)malloc(sizeof(int) * 5);
}
}
//有效部分完
//下面内容为测试
for (int i = 0; i 3; ++i){
for (int j = 0; j 4; ++j){
for (int k = 0; k 5; ++k){
p[i][j][k] = i + j + k;
}
}
}
for (int i = 0; i 3; ++i){
for (int j = 0; j 4; ++j){
for (int k = 0; k 5; ++k){
printf("%d\t", p[i][j][k]);
}
printf("\n");
}
printf("\n");
}
return 0;
}
Q4: 用C语言,动态三维数组
1、先说二维,可以这么理解:
int n[3]有3个int
那么,
int m[5][3]有5个int[3]
赋值时:
n[1]=3把3给1号
m[4]={5,9,4}m[4]是个int[3]类型,这么赋值,也就是这么赋值:
m[4]的[0]是5:m[4][0]=5
m[4][1]=9
m[4][2]=4
懂了吗?三维甚至更多维大同小异,比如
int k[4][5][3]有4个int[5][3]
2、例程:
int*** CreateGrid(int m,int n,int t)
{
int*** tt = NULL;
tt = (int***)malloc(sizeof(int)*m);
for(int i=0;im;i++)
{
tt[i] = (int**)malloc(sizeof(int)*n);;
for (int k=0;kn;k++)
{
tt[i][k] = (int*)malloc(sizeof(int)*t);
}
}
return tt;
}
void FreeGrid(int*** tt,int m,int n,int t)
{
if(tt != NULL)
{
for(int i=0;im;i++)
{
for (int j=0;jn;j++)
{
free((tt[i][j]));
}
free(tt[i]);
}
free(tt);
tt = NULL;
}
}
Q5: 高分悬赏 求三维数据点C语言插值计算程序
问题补充,因字数限制,挪到这
1.拉格朗日插值简介:
对给定的n个插值节点x1,x2,…,xn,及其对应的函数值y1=f(x1), y2=f(x2),…, yn=f(xn);使用拉格朗日插值公式,计算在x点处的对应的函数值f(x);
2.一维拉格朗日插值c语言程序:
Int lagrange(x0, y0, n, x, y)
Float xo[], yo[], x;
Int n;
Float *y
{
Int i, j;
Float p;
*y=0;
If (n1)
{
For(i=0;in;i++)
{
P=1;
For(j=1;jn;j++)
{
If(i!=J)
P=p*(x-x0[j]/x0[i]-x0[j]);
}
*y=*y+p*y0[i];
Return(0);
}
Else
Return(-1);
}
3.例题。已知函数如下表所示,求x=0.472处的函数值:
X 0.46 0.47 0.48 0.49
Y 0.484655 0.4903745 0.502750 0.511668
计算这个问题的c语言程序如下:
#minclude stdio
#includeMnath.h
Main()
{
Float x0[4]={ 0.46, 0.47,0.48,0.49};
Float y0[4]={ 0.484655 ,0.4903745 ,0.502750 ,0.511668};
Float x, y;
Int n, rtn;
N=4;
X=0.472;
Rth=lagrange(x0,y0,n,x,y);
If(rtn=0)
{
Prinf(“Y(0.472)=:%f\n”,y);
}
Else
{
Prinf(“n must be larger than 1.\n”);
}
}
计算结果:Y(0.472)=:0.495553
4.问题补充
我的问题与上面的例子类似,计算三维空间一点(x,y,z)对应的函数值(Vx,Vy,Vz).不同的是自变量(point_coordinate.txt)为三维空间散乱点(不是正方体的顶点),因变量(point_data.txt)为矢量(向量 )。插值算法比较多,常数法,拉格朗日插值,埃特金插值,三阶样条插值等。最简单的就是常数法,查找离目标点(x,y,z)距离最近的已知自变量(Xi,Yi,Zi),把该点的函数值赋给目标点做函数值,求高手帮忙写写。
c语言三维函数程序的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言 3d、c语言三维函数程序的信息别忘了在本站进行查找喔。








