C语言问题-如何让程序返回开始,再运行.不自动关闭.

2024-11-20 01:22:11
推荐回答(2个)
回答1:

#include
#include
double
X=-1,Y=3;
void
main()
{char
a;
double
f1
(double
x1,double
x2);
double
f2
(double
x1,double
x2);
while(1){
printf("割线递归法求根\n\n1.求方程一在区间[-1,3]上的根.\n2.求方程二在区间[-1,3]上的根.\n3.退出\n\n输入选项:
");
a=getchar();
switch(a)
{case'1':printf("\n方程1在区间[-1,3]上的根为%f\n\n",f1(X,Y));getchar();break;
case'2':printf("\n方程2在区间[-1,3]上的根为%f\n\n",f2(X,Y));getchar();break;
case'3':return;
default:printf("非法选项,请重新输入\n\n");getchar();break;
}
}}
double
f1
(double
x1,double
x2)/*割线递归法求根*/
{double
y1,y2,x0,y0;
y1=2*x1*x1*x1-4*x1*x1+3*x1-6;
y2=2*x2*x2*x2-4*x2*x2+3*x2-6;
x0=(0-y1)*(x1-x2)/(y1-y2)+x1;
y0=2*x0*x0*x0-4*x0*x0+3*x0-6;
if(fabs(y0)<1e-5)
return
x0;
else
x1=x0;return
f1(x1,x2);
}
double
f2
(double
x1,double
x2)/*割线递归法求根*/
{double
y1,y2,x0,y0;
y1=x1*x1*x1-8*x1-2;
y2=x2*x2*x2-8*x2-2;
x0=(0-y1)*(x1-x2)/(y1-y2)+x1;
y0=x0*x0*x0-8*x0-2;
if(fabs(y0)<1e-5)
return
x0;
else
x1=x0;return
f2(x1,x2);}
编译通过,新增一个退出选项

回答2:

加个do
while语句!
#include
#include
#include
void
main()
{char
a,k;
double
f1
(double
x1,double
x2);
double
f2
(double
x1,double
x2);
do
{clrscr();
printf("割线递归法求根\n\n1.求方程一在区间[-1,3]上的根.\n2.求方程二在区间[-1,3]上的根.\n输入选项:");
a=getchar();
switch(a)
{case'1':printf("\n方程1在区间[-1,3]上的根为%f\n\n",f1(X,Y));break;
case'2':printf("\n方程2在区间[-1,3]上的根为%f\n\n",f2(X,Y));
}
printf("继续按Y,离开按其他键)
k=getche();
}
while(k=='Y'||k=='y');
}