大佬们求教,这道c语言题目怎么写啊?

这第二题没思路诶。该怎么用循环语句编写?(数组函数什么的都还没学过)。顺便给个思路吧。谢谢... 这第二题没思路诶。该怎么用循环语句编写?(数组函数什么的都还没学过)。顺便给个思路吧。谢谢 展开
 我来答
cdyzxy
2019-10-27 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.4万
采纳率:84%
帮助的人:3626万
展开全部
累加变量:观察式子,这是一个求累加和的问题,因此需要用到累加和循环配合,假设使用变量s作为累加变量,由于其中包含分数,因此s可以采用double类型,看后面每项计算,第1项的1比较另类,因此设置累加变量初始值为1,然后从第2项开始累加计算
循环:循环一次向s上累加一次当前项,由于多项式项数无法预测而只关心循环条件(或者说关心循环结束条件),因此采用while循环,用一个变量i跟踪循环次数,初始值1每次循环i自加1,这样i的取值为:1,2,3,... 这个值将用于计算每项内容,后面需要总结每项具体取值与i取值之间的关系,因此循环大致是这样:while ( fabs(t)>=0.00001 ) { ... s+=t; i++; }其中变量t是每项取值,累加语句前面的省略号部分计算当前对应i取值的t为多少
项:由于包含分数,因此设t为浮点数double类型变量,每项规律为,分子是前一项乘以x得到,分母是前一项乘以i得到,涉及到累乘计算,因此用累乘变量fz和fm来计算,它们可以设置为double类型(设置成int型担心溢出)方便分数计算,它们起始值均为1(这是累乘变量通常使用的起始值)
题目要求用函数做,如果不用函数编程为:
#include<stdio.h>
void main() { int i,x; double s,t,fz,fm,w;
s=1; fz=fm=1; i=1; scanf("%d",&x);
while ( 1 ) { //由于不知道循环次数,因此这里设置死循环,然后循环中用if语句退出循环
fz=fz*x; fm=fm*i; t=fz/fm; if ( t<0 ) w=-t; else w=t; //分子计算x累乘(幂),分母计算阶乘
if ( w<0.00001 ) break; //不满足循环条件则退出循环
s+=t; i=i+1; //如果将条件写到while位置需要后算t先累加
}
printf("%lf\n",s);
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式