c语言程序
下面公式用来近似计算e的n次方的值。编程实现,主函数中进行调用,编写两个子函数f1和f2。f1用来计算每项分子的值,函数f2用来计算每项分母的值。 公式: ex = 1+x+x2/2! +x3/3!+ …… (前20项的和) 我是菜鸟,帮帮忙
下面公式用来近似计算e的n次方的值。编程实现,主函数中进行调用,编写两个子函数f1和f2。f1用来计算每项分子的值,函数f2用来计算每项分母的值。 公式: ex = 1+x+x2/2! +x3/3!+ …… (前20项的和) 我是菜鸟,帮帮忙
答案:#include<stdio.h>
int f2(int n);
int f1(int x,int n);
int main()
{
int i;
int sum=0;
for(i=0;i<20;i++)
{
sum = sum+f1(x,i)/f2(i); //注意,这里X的值,替换成自己的值。
}
printf("%d",sum);
}
int f1(int x,int n)
{
if(n==0)
{
return 1;
}
int i;
int re = 1;
for(i=0;i<n;i++)
{
re = re*x;
}
return re;
}
int f2(int n)
{
if(n == 0)
{
return 1;
}
int i;
int re=1;
for(i=1;i<=n;i++)
{
re = re*i;
}
return re;
}
其他:行成功,结果也是正确的!(TC上我没试过,按理说应该也能运行)
但我并不知道楼主要这个程序到底是要实现什么功能,为什么没有为数组site[0]赋初值,我在程序中加上了,楼主可以自已根据情况改动.
个人感觉楼主在定义变量时变量类型使用非常凌乱,这是导致程序出错而无法运行的根源所在,建议楼主在这方面尽量细心一点.
改了我好长时间,别忘了给我加分哦!!
编程多交流,我的QQ:912137504
#include<stdio.h>
#include<math.h>
#include<time.h>
#include<stdlib.h>
double doublemod(double a,double b)
{
int i;
double value;
i=value;
i=(int)(a/b);
value=a-i*b;
return value;
}
//随机数的算法
double *edisrndsq(double *r,int n,double b,double c,double m)
{
double *value,*vp;
int i;
if(n>=1)
{
value=(double *)malloc(n*sizeof(double));
for(i=0,vp=value;i<n;i++,vp++)
{
*r=doublemod(*r,b);
*r=doublemod((*r)*m+c,b);
*vp=*r/b;
}
return (value);
}
return 0;
}
//产生随机数的函数。
void swap(int *a,int *b)
{
int temp;
temp=*a;
*a=*b;
*b=temp;
}
//互相赋值
void main()
{
// double min,max,All;
int site[5],j,min,max,All;
double b,c,m,n;
double i,x,d;
double *valsq,*vp,r;
r=(double)time(NULL);
site[0]=10;
n=5;
b=65536.0;
c=13849.0;
m=2053.0;
valsq=edisrndsq(&r,n,b,c,m);
printf("The random number is:%f\n",*valsq);
for(j=1,vp=valsq;j<n+1;j++,vp++) //问题就出在这,我是想将产生的随机数跟0。5进行比较,然后给数组site[]赋值。最后好求出数组site[]最大值和最小值,但是我对数组不是很熟悉。
{
printf("\tThe random number is:%5.21f",*vp);
if((*vp)<=0.5)
{
site[j]=site[j-1]-1;
printf("\tsite[%d]=%d\n",j,site[j]);
}
else
{
site[j]=site[j-1]+1;
printf("\tsite[%d]=%d\n",j,site[j]);
}
}
for(j=4;j>0;j--) //这个FOR是求最小值
{
if(site[j]<site[j-1])
swap(&site[j],&site[j-1]);
}
for(j=0;j<5;j++)
printf("site[%d]=%d\n",j,site[j]);
min=site[0];
printf("\tmin=%d\n",min);
for(j=0;j<4;j++) //这个FOR是求最大值。
{
if(site[j]>site[j+1]) swap(&site[j],&site[j+1]);
}
for(j=0;j<5;j++)
printf("site[%d]=%d\n",j,site[j]);
min=site[0];
max=site[4];
printf("\tmax=%d\n",max);
All=abs(min)+max; //这是求最小值的绝对值和最大值的和。
printf("\tAll=%d\n",All);
}
上一个:C语言程序设计题目,俺不会做
下一个:寻求c语言编程:要求用两个单片机控制一个led,采用串行通讯,中断方式。功能;按一个按钮显示0,另一个显示1