C编程can';t端环
我正在编写一个代码,其中用户输入起始值、最大值和步长值。我正确地计算了结果,所有的公式都是正确的,但有一个问题。我无法停止循环以便正确显示我的答案。当我跑步时,它只是开始循环,我在屏幕上收到大量的垃圾答案C编程can';t端环,c,loops,math,codeblocks,C,Loops,Math,Codeblocks,我正在编写一个代码,其中用户输入起始值、最大值和步长值。我正确地计算了结果,所有的公式都是正确的,但有一个问题。我无法停止循环以便正确显示我的答案。当我跑步时,它只是开始循环,我在屏幕上收到大量的垃圾答案 #include <stdio.h> #include <math.h> float funqcia(float x, float y, float k); int main() { float y; float A; float B;
#include <stdio.h>
#include <math.h>
float funqcia(float x, float y, float k);
int main()
{
float y;
float A;
float B;
float H;
float x;
float t;
int e=0;
int N=15;
int k = 0;
while(e==0)
{
printf("enter starting value here: ");
scanf("%fl",&A);
printf("enter maximum value: ");
scanf("%fl", &B);
printf("enter step: ");
scanf("%fl", &H);
if(B > A)
{
e=1;
}
else
{
printf("Sorry, stopping value should be higher than starting value.");
}
}
while(e==1)
{
printf("%s","_________________________________________________");
printf("%s","\n");
printf("%s","| |");
printf("%s","\n");
printf("%s","| Results are shown below |");
printf("%s","\n");
printf("%s","| |");
printf("%s","\n");
printf("%s","--------------------------------------------------");
printf("%s","\n");
t=0;
/*for(int i=0;i<N;i++)
{
if(i>0)
{
if (B<=y)
{
break;
}
t=pow(2,i)*pow(H,i-1);
x=x+t;
printf("%s","| ");
printf("%fl",x);
printf("%s"," | ");
funqcia(x,y);
printf("%s","\n");
}
else
{
if (B<=y)
{
break;
}
x=A;
printf("%s","| ");
printf("%fl",x);
printf("%s"," | ");
funqcia(x,y);
printf("%s","\n");
}
}*/
for (int i=0;i<N;i++)
{
t=pow(2,i)*pow(H,i-1);
x=x+t;
if (i == 0)
{
x=A;
}
y=funqcia(x,y,k);
if (B<=k)
{
break;
}
else
{
printf("x=%fl\ty=%fl", x,y);
//}
}
}
}
}
float funqcia(float x, float y, float k)
{
y=((3+exp(x-1))/(1+pow(x,2)*(3-tan(x))));
if(isinf(y))
{
printf("this is infinity");
}
else
{
printf("y: %fl",y);
}
k=y;
return k;
}
#包括
#包括
浮动funqcia(浮动x、浮动y、浮动k);
int main()
{
浮动y;
浮动A;
浮球B;
浮动H;
浮动x;
浮动t;
int e=0;
int N=15;
int k=0;
而(e==0)
{
printf(“在此处输入起始值:”);
scanf(“%fl”、&A);
printf(“输入最大值:”);
scanf(“%fl”、&B);
printf(“输入步骤:”);
扫描频率(“%fl”、&H);
如果(B>A)
{
e=1;
}
其他的
{
printf(“对不起,停止值应该高于开始值。”);
}
}
而(e==1)
{
printf(“%s”)、“\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu;
printf(“%s”,“\n”);
printf(“%s”和“| |”);
printf(“%s”,“\n”);
printf(“%s”),“|结果如下所示|”);
printf(“%s”,“\n”);
printf(“%s”和“| |”);
printf(“%s”,“\n”);
printf(“%s”,“-------------------------------------------------------------”);
printf(“%s”,“\n”);
t=0;
/*对于(int i=0;i0)
{
如果(B在程序开始时,您似乎已将变量e初始化为0。并且您在while(e==0)时进行了检查,当B>a条件为真时,则e现在更改为1。接下来您有while(e==1)还有一段代码来显示计算和结果,这里e的值从不从一变为其他值。因为它总是1,while条件会给它一个绿色信号,让它继续循环直到无穷大,并以某种方式在屏幕上弄乱你的结果。如果你不在其中修改e
,它为什么会停止?编译wi使用所有警告和调试信息(gcc-Wall-g
),然后使用调试器(gdb
)。阅读您正在使用的函数的文档(尤其是&…)。还可以阅读关于fflush
(或者在每个printf
控件格式字符串末尾加上\n
)你的“修复我的代码”问题在这里是离题的。你应该知道float
s,因此当你对它们进行操作时,你可能没有得到你期望的准确答案。我也不喜欢if(by)你需要检查scanf
的返回值,并在收到意外输入时采取适当的措施