大佬们求教,这道c语言题目怎么写啊?
发布网友
发布时间:2022-05-21 11:51
我来回答
共1个回答
热心网友
时间:2023-10-24 06:56
累加变量:观察式子,这是一个求累加和的问题,因此需要用到累加和循环配合,假设使用变量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);
}