c语言编译后cmd无法输入,命令行无法输入数据

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

求问大佬,为啥我这在运行过程中不能输入kk值?

以下是源代码,环境:devC++。

#include

#include

#include

#define PI 3.1415926

int main()

{

int i, j, m, kk=0;

double h = 1.0 / 32; //空间步长

int H = 32 + 1; //空间节点总数

double tao; //时间步长

double Te = 3.45; //时间总值

double t; //t=tao*时间层

//不同网格比 lamda=tao/h

double lamda;

printf("请输入你所选择的网格比:");

scanf("%ld\n",&lamda);

//lamda = 0.8;

//lamda=1.2;

tao = lamda * h;

//时间步长增加次数与网格比有关 T=Te/tao=te/(lamda*h)

int T; //时间步长增加次数

if(lamda==0.8)

{

T=138; //lamda=0.8

}

else if(lamda==1.2)

{

T=92; //lamda=1.2

}

//k=1 2 3 4 5

printf("请输入你所选择的k值(k=1、2、3、4、5):");

scanf("%d\n",&kk);

//动态分配内存并进行初始化,初值均为0

double *u = (double *)calloc((T+1)*H,sizeof(double));

//应用初始位移条件求第0层时间的所有位移 t=n*tao

for (j = 0; j < H; j++)

{

u[j] = 0.0; //本题的fi=0

}

//应用初始速度求第1层时间的所有位移 //以下使用一种

//为了保证精度,此处使用二阶精度的中心差分来计算u|j|1 //u|下标|上标 x=jh

for(j=1;j

{

u[H+j]=0.5*(lamda*lamda*u[j+1]+2*(1-lamda*lamda)*u[j]+lamda*lamda*u[j-1]+2*tao*sin((2*kk+1)*PI*j*h));

//本题ffi= sin((2*k+1)*pi*x)

}

//如果不追求精度,可使用一阶精度的向前差分计算 u|j|1

/*for (j = 1; j < H - 1; j++)

{

u[H + j] = tao * sin((2 * k + 1) * PI * j * h) + u[j];

}*/

//应用左、右边界条件求边界点位移

for (i = 1; i <= T; i++)

{

u[i * H] = 0.0; //左边界

u[(i + 1) * H - 1] = 0.0;//右边界

}

//三阶显式差分格式 计算范围改一下

for (i = 2; i <= T; i++) //时间

{

for (j = 1; j < H; j++) //空间

{

u[(i) * H + j] = 2 * u[(i-1) * H + j] - u[(i - 2) * H + j] + lamda * lamda * (u[(i-1) * H + j + 1] - 2 * u[(i-1) * H + j] + u[(i-1) * H + j - 1]);

//printf("*****%lf \n", u[(i + 1) * H + j]);

}

//printf("++++++++++++++++++\n");

}

//printf("done!");

//输出指定时间数值解

for(i=0;i<=T;i++)

{

t = i * tao;

printf("t=%f s,各节点的数值解为:\n", t);

for(j=0;j

{

printf("%lf , \n",u[i*H+j]);

}

printf("\n");

}

//解析解

//double u_AnalyticalSolution[H];

double *u_AnalyticalSolution = (double *)calloc(H,sizeof(double));

printf("**********************************************************************\n");

printf("以下是t=3.45s时解析解的计算结果");

for(i=0;i

{

u_AnalyticalSolution[i]=((cos((2*kk+1)*PI*(i*h-Te)))-(cos((2*kk+1)*PI*(i*h+Te))))/(2*(2*kk+1)*PI);

printf("%lf \n",u_AnalyticalSolution[i]);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值