当前位置:编程学习 > C/C++ >>

c语言程序

下面公式用来近似计算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

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,