c语言 一个二维数组 如何设定[0][b]=0,[a][0]=0 而不使得所有数据都为零
#include <stdio.h>
#include <conio.h>
#define note 4
#define time 10
#define k 1.0
#define c 2.0
#define p 5.0
#define t 0.1
#define x 0.33
void main()
{
float r=(k*t)/(c*p*x*x);
float temp[note][time]={0};
for(int a=0;a<note;a++)
{
temp[a][0]=0;
}
//就是这里 我想设置[0][b]=0,[a][0]=0 可是这个代码出来后全都是零 除了[note-1][b]=100 我猜想问题出在重复定义了temp[a][0]=0;temp[0][b]=0;但是不会改 求大神指教。。。
for(int b=0;b<time;b++)
{
temp[0][b]=0;
temp[note-1][b]=100;
}//边界条件(T(1.0,t)=100)
for(int j=1;j<=time;j++)
{
for(int i=1;i<=note-2;i++)
{
temp[i][j]=r*(temp[i+1][j-1]-2*temp[i][j-1]+temp[i-1][j-1])+temp[i][j-1];
}
}//运算公式
printf("There are %d note\nthe temp of the notes is((note,time)):\n",note,time);
for(int m=0;m<=note-1;m++)
{
for(int n=0;n<time;n++)
{
printf("(%d,%d)=%.2f\n",m,n,temp[m][n]);
}
printf("\n");
} 展开
不知你用的什么编译器,不是VC,在VC中不允许中间声明变量,只能在函数开始时声明变量。有的编译器的C版本可以在中间定义变量。
#include <stdio.h>
#include <conio.h>
#define note 4
#define time 10
#define k 1.0
#define c 2.0
#define p 5.0
#define t 0.1
#define x 0.33
void main()
{
float r=(k*t)/(c*p*x*x);
float temp[note][time]={0};
int a,b,j,m,i,n;
for(a=0;a<note;a++)
{
temp[a][0]=0;
}
//就是这里 我想设置[0][b]=0,[a][0]=0 可是这个代码出来后全都是零 除了[note-1][b]=100 我猜想问题出在重复定义了temp[a][0]=0;temp[0][b]=0;但是不会改 求大神指教。。。
for(b=0;b<time;b++)
{
temp[0][b]=0;
temp[note-1][b]=100;
}//边界条件(T(1.0,t)=100)
for(j=1;j<=time;j++)
{
for(i=1;i<=note-2;i++)
{
temp[i][j]=r*(temp[i+1][j-1]-2*temp[i][j-1]+temp[i-1][j-1])+temp[i][j-1];
}
}//运算公式
printf("There are %d note\nthe temp of the notes is((note,time)):\n",note,time);
for(m=0;m<=note-1;m++)
{
for(n=0;n<time;n++)
{
printf("(%d,%d)=%.2f\n",m,n,temp[m][n]);
}
printf("\n");
}
system("pause");
}
我的结果如下没看出什么问题
问题在于 2。0 3。0的值 不是0啊
for(b=0;b<time;b++)
{
temp[0][b]=0;
temp[note-1][b]=100;
}//边界条件(T(1.0,t)=100
temp[note-1][b]=100;当b=0这里temp[note-1][0]=100;已经又赋值了
temp[i][j]=r*(temp[i+1][j-1]-2*temp[i][j-1]+temp[i-1][j-1])+temp[i][j-1];