下面这c语句哪错了?为什么将各个for循环拆开,计算值正确,合起来计算的值就完全错误呢
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/18 15:08:40
下面这c语句哪错了?为什么将各个for循环拆开,计算值正确,合起来计算的值就完全错误呢
#include
#include
main()
{
double y,x,e,i,d=3.1415926;
int a=50,b=10,c=60;
for (i=3;i
#include
#include
main()
{
double y,x,e,i,d=3.1415926;
int a=50,b=10,c=60;
for (i=3;i
#include <math.h>
#include <stdio.h>
main()
{
double y,x,e,i,d=3.1415926;
int a=50,b=10,c=60;
for (i=3; i<=60; i+=0.5)
{
x=(a+b*i/c)*sin(i*d/180);
y=(a+b*i/c)*cos(i*d/180);
e=i;
//printf("e=%f,x=%f,y=%f\n",e,x,y); //Here
printf("e=%lf,x=%lf,y=%lf\n",e,x,y);
}
for (i=3; i<=120; i+=0.5)
{
x=(a+b)*sin((i+60)*d/180);
y=(a+b)*cos((i+60)*d/180);
e=i+60;
//printf("e=%d,x=%f,y=%f\n",e,x,y); //Here
printf("e=%lf,x=%lf,y=%lf\n",e,x,y);
}
for (i=3; i<=30; i+=0.5)
{
x=(a+b-2*b*i*i/(c*c))*sin((i+180)*d/180);
y=(a+b-2*b*i*i/(c*c))*cos((i+180)*d/180);
e=180+i;
//printf("e=%d,x=%f,y=%f\n",e,x,y); //Here
printf("e=%lf,x=%lf,y=%lf\n",e,x,y);
}
for (i=31; i<=60; i+=0.5)
{
x=(a+2*b*(c-i)*(c-i)/(c*c))*sin((i+210)*d/180);
y=(a+2*b*(c-i)*(c-i)/(c*c))*cos((i+210)*d/180);
e=i+180;
//printf("e=%d,x=%f,y=%f\n",e,x,y); //Here
printf("e=%lf,x=%lf,y=%lf\n",e,x,y);
}
for (i=3; i<=120; i+=0.5)
{
x=(a)*sin((i+240)*d/180);
y=(a)*cos((i+240)*d/180);
e=i+240;
//printf("e=%d,x=%f,y=%f\n",e,x,y); //Here
printf("e=%lf,x=%lf,y=%lf\n",e,x,y);
}
}有问题的地方如上标here的地方,主要是输出格式控制不对,double要用%lf
再问: 如你所说,改后输出的不是乱码了,但为什么e,x,,y是从208开始输出 的,而不是从3开始输出啊?
再答: 输出缓冲区没有那么大,后面的将前面的刷新了吧可以将后面的注释掉,就可以看到从3开始的了 或者在每个for循环后面加上一句getchar(); 这样每个for循环结束后,按下任意键才继续显示下一个循环的输出。
再问: 每个for循环后加个getchar();就成这样啦
再答: #include <math.h>
#include <stdio.h>
main()
{
double y,x,e,i,d=3.1415926;
int a=50,b=10,c=60;
for (i=3.0; i<=60; i+=0.5)
{
x=(a+b*i/c)*sin(i*d/180);
y=(a+b*i/c)*cos(i*d/180);
e=i;
//printf("e=%f,x=%f,y=%f\n",e,x,y); //Here
printf("e=%lf,x=%lf,y=%lf\n",e,x,y);
}
getchar(); //---------------Here
for (i=3; i<=120; i+=0.5)
{
x=(a+b)*sin((i+60)*d/180);
y=(a+b)*cos((i+60)*d/180);
e=i+60;
//printf("e=%d,x=%f,y=%f\n",e,x,y); //Here
printf("e=%lf,x=%lf,y=%lf\n",e,x,y);
}
getchar();//---------------Here
for (i=3; i<=30; i+=0.5)
{
x=(a+b-2*b*i*i/(c*c))*sin((i+180)*d/180);
y=(a+b-2*b*i*i/(c*c))*cos((i+180)*d/180);
e=180+i;
//printf("e=%d,x=%f,y=%f\n",e,x,y); //Here
printf("e=%lf,x=%lf,y=%lf\n",e,x,y);
}
getchar();//---------------Here
}要这样加
#include <stdio.h>
main()
{
double y,x,e,i,d=3.1415926;
int a=50,b=10,c=60;
for (i=3; i<=60; i+=0.5)
{
x=(a+b*i/c)*sin(i*d/180);
y=(a+b*i/c)*cos(i*d/180);
e=i;
//printf("e=%f,x=%f,y=%f\n",e,x,y); //Here
printf("e=%lf,x=%lf,y=%lf\n",e,x,y);
}
for (i=3; i<=120; i+=0.5)
{
x=(a+b)*sin((i+60)*d/180);
y=(a+b)*cos((i+60)*d/180);
e=i+60;
//printf("e=%d,x=%f,y=%f\n",e,x,y); //Here
printf("e=%lf,x=%lf,y=%lf\n",e,x,y);
}
for (i=3; i<=30; i+=0.5)
{
x=(a+b-2*b*i*i/(c*c))*sin((i+180)*d/180);
y=(a+b-2*b*i*i/(c*c))*cos((i+180)*d/180);
e=180+i;
//printf("e=%d,x=%f,y=%f\n",e,x,y); //Here
printf("e=%lf,x=%lf,y=%lf\n",e,x,y);
}
for (i=31; i<=60; i+=0.5)
{
x=(a+2*b*(c-i)*(c-i)/(c*c))*sin((i+210)*d/180);
y=(a+2*b*(c-i)*(c-i)/(c*c))*cos((i+210)*d/180);
e=i+180;
//printf("e=%d,x=%f,y=%f\n",e,x,y); //Here
printf("e=%lf,x=%lf,y=%lf\n",e,x,y);
}
for (i=3; i<=120; i+=0.5)
{
x=(a)*sin((i+240)*d/180);
y=(a)*cos((i+240)*d/180);
e=i+240;
//printf("e=%d,x=%f,y=%f\n",e,x,y); //Here
printf("e=%lf,x=%lf,y=%lf\n",e,x,y);
}
}有问题的地方如上标here的地方,主要是输出格式控制不对,double要用%lf
再问: 如你所说,改后输出的不是乱码了,但为什么e,x,,y是从208开始输出 的,而不是从3开始输出啊?
再答: 输出缓冲区没有那么大,后面的将前面的刷新了吧可以将后面的注释掉,就可以看到从3开始的了 或者在每个for循环后面加上一句getchar(); 这样每个for循环结束后,按下任意键才继续显示下一个循环的输出。
再问: 每个for循环后加个getchar();就成这样啦
再答: #include <math.h>
#include <stdio.h>
main()
{
double y,x,e,i,d=3.1415926;
int a=50,b=10,c=60;
for (i=3.0; i<=60; i+=0.5)
{
x=(a+b*i/c)*sin(i*d/180);
y=(a+b*i/c)*cos(i*d/180);
e=i;
//printf("e=%f,x=%f,y=%f\n",e,x,y); //Here
printf("e=%lf,x=%lf,y=%lf\n",e,x,y);
}
getchar(); //---------------Here
for (i=3; i<=120; i+=0.5)
{
x=(a+b)*sin((i+60)*d/180);
y=(a+b)*cos((i+60)*d/180);
e=i+60;
//printf("e=%d,x=%f,y=%f\n",e,x,y); //Here
printf("e=%lf,x=%lf,y=%lf\n",e,x,y);
}
getchar();//---------------Here
for (i=3; i<=30; i+=0.5)
{
x=(a+b-2*b*i*i/(c*c))*sin((i+180)*d/180);
y=(a+b-2*b*i*i/(c*c))*cos((i+180)*d/180);
e=180+i;
//printf("e=%d,x=%f,y=%f\n",e,x,y); //Here
printf("e=%lf,x=%lf,y=%lf\n",e,x,y);
}
getchar();//---------------Here
}要这样加
下面这c语句哪错了?为什么将各个for循环拆开,计算值正确,合起来计算的值就完全错误呢
for循环语句计算69!的值
在for语句里面,没输入一个数字,就会跳出循环进行函数首部后的计算,然后又回到for进行下一次循环,为什么会这样呢,不是
For循环语句如何计算?
for跳出循环语句是如何计算它的值的?
用三种循环语句 while do while...for...计算10的!
vb 循环语句For/next ,怎么计算?
c语言中为什么需要for循环?其本义是不是我们需要执行很多次的语句而利用for循环只要写两个语句就好了?
for语句多重循环结构的实现 比如一道题里面有2个for,他的计算过程是什么?比如下面这道题,他的计算过程
c语言计算1*2*3+3*4*5...+99*100*101的值,下面的for语句中,如果把a+=2改成a+2,就会发生
分别用while循环和for循环语句编写程序计算1到100的和
c语言中:for循环语句,for(表达式)下面用加{}吗?不加是不是只能循环下面第一条语句?就像if和else一样