2019-04-08 22:23:04
多项式1-1/2+1/3-1/4+....+1/99-1/100
int main(){
int deno,term; //deno为分母,term每一项的临时值
int sign=1; //用分子的正负表示整个项的正负
deno=2;
int sum=1,term;
若为任意数n的分数和,scanf("%d%,n);
while(deno<=100) //判定条件 while(deno<=n){
{
sign=-sign;
term=sign/deno; 算法灵魂
sum=sum+term;
deno++;
}
printf("%d",sum);
return 0;
}
求阶乘之和 1!+2!+3!+....+n! 顺便清楚了for循环嵌套,很久之前写过九九乘法表的代码,也是两个for循环嵌套,for(i=1;i<=9;i++) for(j=1;j<=i;j++)
double fac(int n){
double s,p;
int i,j;
s=0;
for(i=1;i<=n;i++){ //关于for循环的嵌套,先判断外层条件循环成立,只要外层循环条件成立,都要完整的执行一遍内层循环。
p=1; //这两个for循环嵌套,i<=n成立,再执行内层for循环,重要判定结束条j<=i,所以里层循环只执行一次
for(j=1;j<=i;j++) //当n=3时,i=1;p=1; j=1;p=1*1=1;s=0+1=1; 因为j先加之后为2>1,所以跳出内层循环,继续进行外层循环。
p=p*j; i=2;j=2;p=1*2=2;s=1+2=3;继续跳出内层循环;
s=s+p; i=3;j=3;p=2*3=6;s=3+6=9;跳出内层循环,再i>3,跳出外层循环,程序结束。
}
return s;
}
main(){
int n;
double s;
printf("请输入一个数 :");
scanf("%d",&n);
s=fac(int n); //主函数调用fac函数,返回值为s求和。
printf("n=%d,s=%0.1f",n,s);
}
p=p*j; 实现累乘式,p的初值为1;
s=s+p;实现阶乘的累加和, s的初值为0;
因为 i!=(i-1)!*i;每个累加项的值乘以该数值
算法优化,只用一个for循环
s=0;p=1;
for(i=1;i<=n;i++){
p=p*i;
s=s+p;
}