#include<stdio.h>
#include<math.h>
int main(void)
{int flag;
double epx,s,item,denomination;
printf("Enter a epx:\n");
scanf("%lf",&epx);
item=0;flag=1;denomination=1;
while(fabs(item)<epx){
item=flag*1.0/denomination;
s=s+item;
flag=-flag;
denomination=denomination+3;
}
printf("s=%.2f\n",s);
return 0;
}
æ¨å¥½å ï¼è¿æ ·æä¹ä¼æ¯æ»å¾ªç¯å¢ï¼denomination=1 ä½æ¯å¾ªç¯æ¡ä»¶æ¯itemå item=flag*1.0/denomination;itemè¿æ¶åæ¯æå°ç å ï¼ç¨åºç循ç¯æ¡ä»¶æ¯itemå°äºä¸ä¸ªå®æ°epxåï¼
æ以说è¿å¹¶ä¸æ¯ä¸ä¸ªæ»å¾ªç¯ã
denomination=denomination+3,è¿ä¸ªæ°æ¯æ¬¡èªå 3ï¼item=flag*1.0/denomination;ææå°±æ¯denominationè¶æ¥è¶å¤§ï¼flagåªåæ£è´ï¼åå¼å§æ=-çåäºï¼æï¼ï¼item=1-1/4+1/7-1/10+1/13....
追é®çç¡®æ¯æ±è¿ä¸ªç®å¼çç»æï¼ä¸è¿ä¸ºä»ä¹ä¼ç»æä¸å¯¹å¢ï¼
追çè¿æ ·çç»ææ¯item<1,ä½ ç»epxä¸ä¸ªå¤§äº1çå¼ä¼æ é循ç¯ï¼æ以æå¥æªä½ æä¹è½å¾å°ç»æçï¼å¾ªç¯å¤æçæ¡ä»¶ä¸å¯¹ããã
è¿ä¸å¦ç´æ¥å¨å¾ªç¯å
å 个次æ°ï¼æ¯å¦100次ï¼åæ£ä½ è¦æ±çä¹ä¸æ¯ç²¾ç¡®æ°åããã
æ¨ å¥½ itemçå¼ æåçæ¯0.000001 å 为ææ¯ç¨doubleæ¥å£°æitemçï¼æ以æ è¿æ ·æ¯å¯ä»¥ä½ä¸ºå¤æ循ç¯çæ¡ä»¶ç
追çå¯ä»¥è¿æ ·æ¹ä¸
#include
#include
int main(void)
{int flag,n;
double epx,s,item,denomination;
printf("Enter a epx:\n");
scanf("%lf",&epx);
item=0;flag=1;denomination=1;n=0;s=0
while(n<epx){
item=flag*1.0/denomination;
s=s+item;
flag=-flag;
n++;
denomination=denomination+3;
}
printf("s=%.2f\n",s);
return 0;
}
ç¶åæEPXè¾å
¥çå¼å®ä¸º100æè
1000ï¼è¿æ ·ç®ä¾¿ï¼ä½ é£itemçå¼å¥æ¶åå°0.000001ä¹ä¸ç¥éï¼ä¸ºä»ä¹ä¸ç¨forå循ç¯,æ¯whileä¸æ¯è¦æ¹ä¾¿äºããã
我听你的 把s=0;写上去 但结果 好像永远都是1 这是为什么啊 ··求不出对应的结果
追答你看到第一次循环进去后是不是item变成1了,你输入的epx应该是小于1的吧,不然会出现死循环,那么循环运行一次后不满足条件退出了,这样结果就是s的值为1 了。