c - 基本 C 程序中的循环
问题描述
我无法找到并解决此代码中的错误。
我希望 Parray 和 Tarray 在循环中填充方程的迭代。我尝试了 for 和 while 循环,但似乎只有数组的第一个成员被赋予了正确的值,并且该值在新循环开始时丢失。
#include <stdio.h>
#include <stdlib.h>
int main() {
int i;
int j;
float dt,P_init,t_init,t_end;
dt = 0.03125;
P_init = 30;
t_init = 0;
t_end = 30;
int n_steps = 0;
n_steps = t_end/(float)dt;
int Parray[n_steps+1];
int Tarray[n_steps+1];
for (i=0; i<n_steps+1; i++)
{
Parray[i]=0;
Tarray[i]=0;
}
Parray[0] = P_init;
Tarray[0] = t_init;
int x;
float P,t,dpdt;
x = 1;
while (x < n_steps+1)
{
float s,d;
P = Parray[x-1];
t = Tarray[x-1];
dpdt = 0.7 * P * (1-(P/750)) - 20;
s = P + (dt * dpdt);
Parray[x] = s;
d = t + dt;
Tarray[x] = d;
x++;
printf("%f %f ",s,d);
}
return(0);
}
解决方案
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i, j, x;
float dt, P_init, t_init, t_end, P, t, dpdt;
dt = 0.03125;
P_init = 30;
t_init = 0;
t_end = 30;
int n_steps = 0;
n_steps = t_end / (float)dt;
// using float arrays
float Parray[n_steps+1];
float Tarray[n_steps+1];
for (i = 0; i < n_steps+1; i++)
Parray[i] = 0;
for (j = 0; j < n_steps+1; j++)
Tarray[j] = 0;
Parray[0] = P_init;
Tarray[0] = t_init;
for (x = 1; x < n_steps + 1; x++) {
float s , d;
P = Parray[x-1];
t = Tarray[x-1];
dpdt = 0.7 * P * (1 - (P / 750)) - 20;
s = P + (dt * dpdt);
Parray[x] = s;
d = t + dt;
Tarray[x] = d;
printf("%f %f\n", s, d);
}
return(0);
}
我将 int 数组更改为浮点数组。你在这里实际计算什么?
推荐阅读
- apache-spark - 需要 Spark 与 Hive 的关系的用例或示例
- node.js - 嵌套的 Mongoose 查询数据未显示在 GraphQL 查询中
- c# - .Net Core 3.0 可执行文件不读取 appsettings.json
- javascript - 响应式设计每行的 CSS 列数相等
- javascript - 对列表中的项目进行排序
- python - 无法在 Python 程序中导入类和模块
- javascript - 节点类型错误:checkURL 不是函数
- vim - Vim - 何时执行 autocmd 定义的 {cmd} 命令?
- java - 尝试使用 java 连接到 mysql 并显示
- r - 使用行总和在 R 数据框中创建一个新列