关于C程序代码的问题

streamcc 2009-12-23 10:57:10
请教高手
#include<stdio.h>
#include<math.h>
#define pi 3.1415926
void main()
{ double i,j,m,n;
j=pi*50*i;
m=2*cos(j)*cos(j);
n=-i/0.1128;
for(i=1.0;i<1000.0;i++)
{
if(m==exp(n))
printf("i=%6.2f\n",i);
}
}
运行怎么没结果出来啊,
我是想求2*cos2(50*pi*t)=e(-t/0.1128)中t的值。(cos后面的2是平方)
先谢谢了
...全文
178 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
streamcc 2009-12-26
  • 打赏
  • 举报
回复
结果出来 了,谢谢大家的帮助。呵呵,菜鸟也飞了。。。。。
streamcc 2009-12-26
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 redkoodoo 的回复:]
C/C++ code
#include<stdio.h>
#include<math.h>#define pi 3.1415926void main()
{double i,j,m,n;for(i=-1.0 ;i<10.0;i+=0.01)
{
j=pi*50*i;
m=2*cos(j)*cos(j);
n=-i/0.1128;if(fabs(m-exp(n))<1e-10)
{
printf("i=%6.2f\n",i);
}
}
}

[/Quote]
i=2.53 i=2.55 i=2.57 ....i=2.81,数据是出来了,但应该不对,e的-20次方已经趋向于0了,而左边的值是1.2几(i=2.53).i的值应该不会超过1的,如果i>1,那么左边的值必须等于0,否则就不会相等了
flyyyri 2009-12-25
  • 打赏
  • 举报
回复
i没有赋初值,其值不确定
redkoodoo 2009-12-25
  • 打赏
  • 举报
回复

#include <stdio.h>
#include <math.h>
#define pi 3.1415926
void main()
{
double i,j,m,n;
for(i=-1.0 ;i <10.0;i+=0.01)
{
j=pi*50*i;
m=2*cos(j)*cos(j);
n=-i/0.1128;

if(fabs(m-exp(n))<1e-10)
{
printf("i=%6.2f\n",i);
}
}
}

z569362161 2009-12-25
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <math.h>
#define pi 3.1415926
int main()
{
printf("i= %6.2f \n",-log(2*pow(cos(pi*50.0),2))*0.1128);
return 0;
}


你还是研究daniel的代码吧,高人的最精简算法
z569362161 2009-12-25
  • 打赏
  • 举报
回复
for(i=1.0;i <1000.0;i++) 是后执行的。

你按照他们的怎么改都不行。
z569362161 2009-12-25
  • 打赏
  • 举报
回复
double i,j,m,n;
j=pi*50*i; //i是多少?
j=??????????
wj198895 2009-12-25
  • 打赏
  • 举报
回复
i 没有赋初值
streamcc 2009-12-25
  • 打赏
  • 举报
回复
毛哦,我倒呐闷了,结果还是出不来啊!到底出什么问题了类?
ImJaden 2009-12-24
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 sky_too 的回复:]
#include <stdio.h>
#include <math.h>
#define pi 3.1415926
#define pre  0.0000001
void main()
{ double i,j,m,n;
  i=1.0;
  j=pi*50.0*i;
  m=2*cos(j)*cos(j);
  n=-i/0.1128;
  for(i=0;i <100.0;i++)
  {       
if ( (m <exp(n)+pre)  &&  (m>exp(n)-pre ))
printf("i= %6.2f \n",i);
  }
}
上几楼的说法不错,但都不行,因为i++是加1,所以i值总是比上一个值大一,不会大比如说0.01.不知该怎样写个语句,让它相邻的i值的差为0.01。试问哪位高手可以解决?谢谢
[/Quote]
那直接把i++变为i+=0.01就行了呗。
streamcc 2009-12-24
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <math.h>
#define pi 3.1415926
#define pre 0.0000001
void main()
{ double i,j,m,n;
i=1.0;
j=pi*50.0*i;
m=2*cos(j)*cos(j);
n=-i/0.1128;
for(i=0;i <100.0;i++)
{
if ( (m <exp(n)+pre) && (m>exp(n)-pre ))
printf("i= %6.2f \n",i);
}
}
上几楼的说法不错,但都不行,因为i++是加1,所以i值总是比上一个值大一,不会大比如说0.01.不知该怎样写个语句,让它相邻的i值的差为0.01。试问哪位高手可以解决?谢谢
东大坡居士 2009-12-23
  • 打赏
  • 举报
回复
是不是没有捕捉到啊,后面加个getchar()试试
mstlq 2009-12-23
  • 打赏
  • 举报
回复
要达到楼主的目的,直接这样写就行了……

#include <stdio.h>
#include <math.h>
#define pi 3.1415926
int main()
{
printf("i= %6.2f \n",-log(2*pow(cos(pi*50.0),2))*0.1128);
return 0;
}
streamcc 2009-12-23
  • 打赏
  • 举报
回复
#include<stdio.h>
#include<math.h>
#define pi 3.1415926
#define pre 0.0000001
void main()
{ double i,j,m,n;
i=1.0;
j=pi*50.0*i;
m=2*cos(j)*cos(j);
n=-i/0.1128;
for(i=0;i<100.0;i++)
{
if ( (m <exp(n)+pre) && (m>exp(n)-pre ))
printf("i= %6.2f \n",i);
}
}
还是不行诶,没结果诶
phpjspasp 2009-12-23
  • 打赏
  • 举报
回复
1: i没有初始化
2:(m==exp(n))
double 型判等不能用 ==
你可以这样。
#define pre 0.0000001

if ( (m<exp(n)+pre) && (m>exp(n)-pre ))//这样就是相等了,如果你精度要求高,再把pre定义的小一点,
太乙 2009-12-23
  • 打赏
  • 举报
回复
j=pi*50*i; -------i都没有值
ydyn1988 2009-12-23
  • 打赏
  • 举报
回复
i没初值

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧