编写程序,输入一个正整数n,求下列算式的值。要求定义和调用函数fact(k)计算k的阶乘,
#include
#include
#include
#include
double fact(int n)
{
int i;
double s1=1.0;
for(i=1;i<=n;i++)
s1*=i;
return s1;
}
double mypow(double x, int n)
{
int i;
double s2=1.0;
for(i=1;i<=n;i++)
s2=s2*x;
return s2;
}
void main()
{
int i,n,f,x;
double s=0;
printf("输入一个正实数x");
scanf("%d",&x);
printf("输入一个正整数n");
scanf("%d",&n);
f=1;
for(i=1;i<=n;i++)
{
s=s+mypow(x,i)/fact(i);
f=-f;
}
printf("%f",s);
getch();
}
#include
#include
double fun(int n);
int main ()
{
printf("Input n: ");
int n;
scanf("%d",&n);
double S = fun(n);
printf("%d!=%.2lf",n,S);
}
double fun(int n)
{
int i=1;
double fac=1;
for(i=1;i<=n;i++)
{
fac*=i;
}
return fac;
}
中心算法就是这一句
应该是
sun+=1.0/fact(i);
fact是系统函数,这不应自己编写,调用即可,应该在math.h头文件中吧
不过这样效率要低下不少,因为每次都需要计算n的阶乘
好的算法是
int i,n,s=1;
float sum=0;
for(i=1;i<=n;i++)
{
s*=i; //计算i的阶乘
sum+=1.0/s;
}
可以这样修改
#include<stdio.h>
double fact(int k)
{
double res = 1.0;
int i;
for(i=2; i<=k; i++)
res *= i;
return res;
}
int main()
{
double sum=0;
int i,n;
scanf("%d",&n);
for(i=1;i<=n;i++){
sum += 1.0/fact(i);
}
printf("sum=%.5lf
",sum);
return 0;
}
#include<stdio.h>
double fact(int k)
{
double res = 1.0;
while (k>=1)
{
res *= k;
k--;
}
return res;
}
int main()
{
double sum=0.0;
int i,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
sum+=1.0/fact(i);
}
printf("sum=%.5lf\n",sum);
return 0;
}
#include<stdio.h>
int fact(int k)
{
int s = 1, i;
for (i = 1; i <= k; i )
s *= i;
return s;
}
void main()
{
int i, n;
double sum = 0, q, w;
scanf("%d", &n);
for (i = 1; i <= n; i )
{
q = fact(i);
sum = 1.0/ q;
}
printf("%.5f\n", sum);
}
呃,刚看错题了,mmdeniubi的答案貌似可以
C语言!!!求输入一个正整数n,求1!-2!+3!-4!+5!...+n!的程序。
其实用递归算更简单,再给你一个吧 include <stdio.h> \/\/由于标准math.h中没有求阶乘函数,所以自己写一个吧 int jiecheng(int n){ if(n<=1) return n;\/\/控制递归跳出 if(n!=1)n*=jiecheng(n-1);\/\/递归 return n;} int main(){ int n,sum=0;printf("请输入一个整数");scanf(...
C++输入一个正整数n,编程实现求s=1+1+2+1+2+3+...1+2+3+...n
二楼的给的是c语言的 啊!楼主要的时c++吗?我写个c++的吧!include <iostream> using namespace std;int main(){ int n,i,j,s=0;int a[100]={0};cout<<"请输入小于100的正整数n:"<<endl;cin>>n;for(i=0;i<n;i++){ for(j=0;j<=i;j++){ a[i]=a[i]+j+1;} s+=...
c语言,从键盘中输入一个正整数n分别求1到n之间所有个位数是3或5的数的...
在这个程序中,我们使用 for 循环遍历从 1 到 n 的所有整数,判断它们的个位数是否为 3 或 5,如果是,则将它们的和累加到变量 sum 中。最终输出变量 sum 的值,即为题目所求。需要注意的是,题目要求输入一个正整数 n,因此我们需要对输入的值进行合法性检查,以确保它是正整数。此外,如果 n...
输入1个正整数n (1<n≤10),再输入n个整数,输出平均值(保留2位小数...
include"stdio.h"void main(){ int i,n,num;float sum = 0;printf("输入一个正整数:");scanf("%d",&n);for (i = 1; i <=n; i++){ printf("输入第%d个整数:\\n", i);scanf("%d",&num);sum = sum + num;} printf("%d个整数的平均数为:%.2f\\n", n, sum\/n);} ...
C语言 编写一个程序,输入一个正整数,求出它是几位数。
思路:求一个正整数n的位数可以先定义一个变量num,并初始化为0,依次把该整数n除以10,直到其为0为止,并且每除一次10,变量num的个数就自加1,最后num的值就是该整数n的位数。参考代码:include <stdio.h>int main(){ int n,num=0;scanf("%d",&n);while(n){num++;n\/=10;}printf("...
输入一个正整数 n,再输入 n 个学生的百分制成绩,统计各等级成绩的个数...
include <stdio.h> int main(void){ int i, mark, n;int na, nb, nc, nd, ne;scanf("%d",&n);na = nb = nc = nd = ne = 0;for(i = 1; i <= n; i++){ scanf("%d", &mark);\/*---*\/ if(mark >=90) na++;else if(mark >=80) nb++;else if(mark >=70) ...
c语言 输入一个正整数n求 1²+2²+3²……+n²之和
include<stdio.h> int main(void){ int i , sum ,n;sum=0;printf("请输入N的值\\n");scanf("%d",&n);for(i=1 ;i<=n ; i++){ sum=sum+i*i;};printf("前N项数平方和为%d",sum);return 0;} 希望帮到你,刚学要学着用最简单的方法解决。
C语言,编写一程序输入一个正整数n,计算并输出s的前n项和,s=1\/2-2\/...
如果你不把flag 改为float型的话 运行的结果是 0哦
c++输入一个正整数n,求第n个斐波那契数
<iostream> \/\/控制台操作头文件int main() \/\/主函数{int n,s,i; \/\/第n项值为s,i是循环变量 do{printf("请输入一个正整数(0退出):");\/\/输入提示 scanf("%d",
如何用C语言编写程序输入一个正整数n,编程序输出从2到n间的所有完数...
C语言实现如下:include<stdio.h>void main(){int i,j,k,n;scanf("%d",&n); \/\/输入一个正整数nfor(i=2;i<=n;i++){k=0;for(j=1;j<=i-1;j++)if(i%j==0) k+=j;if(k==i) printf("%d\\n",i);\/\/判断i的所有真因子之和是否等于i,是则输出i。}}注意:建议n的取值...