C语言问题-如何让程序返回开始,再运行.不自动关闭.
C语言问题-如何让程序返回开始,再运行.不自动关闭.以此程序为例:#include<stdio.h>#include<math.h>doubleX=-1,Y=3;void...
C语言问题-如何让程序返回开始,再运行.不自动关闭.
以此程序为例:
#include<stdio.h>
#include<math.h>
double X=-1,Y=3;
void main()
{char a;
double f1 (double x1,double x2);
double f2 (double x1,double x2);
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));
}}
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);}
大家的答案都很好,分给谁,为难啊.. 展开
以此程序为例:
#include<stdio.h>
#include<math.h>
double X=-1,Y=3;
void main()
{char a;
double f1 (double x1,double x2);
double f2 (double x1,double x2);
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));
}}
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);}
大家的答案都很好,分给谁,为难啊.. 展开
7个回答
展开全部
那我就来评论一下~各位不要见怪丫~
shenxian1021用了goto,虽然goto语句用起来十分方便,想干嘛就干嘛,但是很多程序员都十分痛恨goto语句,因为大规模的程序使用goto的话都很难读,相信楼主看的程序书或者上课老师讲课的话都听说过goto是用“臭名昭著”来形容的吧
ricardokaka和精灵现身de荒野都是while(true)加一个判断,不过大多数程序都是就算第一次进入也要给用户退出的权利吧-。-
如果一定要用户先选一个选项是不是有点霸道。。可能形容的不太准确。ricardokaka不要责怪我丫。。
我比较喜欢精灵的方式。个人见解~
ricardokaka有2个错误
printf("继续按Y,离开按其他键) //应该为printf("继续按Y,离开按其他键"); //少了分号和一个引号
k=getche(); //应该是getch()函数或者getchar()函数,拼写错误
还有,楼主的程序风格不是很好丫。。依据printf写了好多好多东西。。要改哦~
shenxian1021用了goto,虽然goto语句用起来十分方便,想干嘛就干嘛,但是很多程序员都十分痛恨goto语句,因为大规模的程序使用goto的话都很难读,相信楼主看的程序书或者上课老师讲课的话都听说过goto是用“臭名昭著”来形容的吧
ricardokaka和精灵现身de荒野都是while(true)加一个判断,不过大多数程序都是就算第一次进入也要给用户退出的权利吧-。-
如果一定要用户先选一个选项是不是有点霸道。。可能形容的不太准确。ricardokaka不要责怪我丫。。
我比较喜欢精灵的方式。个人见解~
ricardokaka有2个错误
printf("继续按Y,离开按其他键) //应该为printf("继续按Y,离开按其他键"); //少了分号和一个引号
k=getche(); //应该是getch()函数或者getchar()函数,拼写错误
还有,楼主的程序风格不是很好丫。。依据printf写了好多好多东西。。要改哦~
展开全部
加个do while语句!
#include<stdio.h>
#include<math.h>
#include<conio.h>
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');
}
#include<stdio.h>
#include<math.h>
#include<conio.h>
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');
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
#include<math.h>
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);}
编译通过,新增一个退出选项
#include<math.h>
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);}
编译通过,新增一个退出选项
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
main(){
while(1)
{
}
}
while(1)
{
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
示例:
void main()
{int loop;
loop:
printf("hello");
getch();
goto loop;
}
void main()
{int loop;
loop:
printf("hello");
getch();
goto loop;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询