您的位置:首页 > 编程语言 > C语言/C++

给学习C语言的新手的求和程序及求积程序

2013-06-05 14:00 274 查看
很多初学C语言的人,一开始都会有求和以及求积的程序,如果用简单的将输入的数一个个加起来那样是很繁琐的,当然效率是高的,但是程序看起来非常不简洁!如果你学习用递归方式求解,你会发现一切都是那么简单!下面的例子就是用递归方式求和以及求积。

#include<stdio.h>

#include<stdlib.h>

#define N 10

float g(float a[],int n); /*求和函数*/

float f(float a[],int n); /*求积函数*/

/*为了保证正确度,所有的类型都用浮点型表示,虽然这多消耗了内

存,但能得到更正确的结果,所以这是值得的*/

int main()

{

float x[N+1],y[N+1],sum,num;

int i;

x[0]=1,y[0]=0; /*零位不用,置一*/

for(i=1;i<=N;i++){

printf("please input a type of float :\n");

scanf("%f",&x[i]);

}

for(i=0;i<=N;i++){

y[i]=x[i];

}

num=g(x,N);sum=f(y,N); /*一定要用两个数组,因为数组做参数,不是传值调用*/

printf("sum is %f\nthe average sum is %f:\n",sum,sum/N);

printf("num is %f\nthe average num is %f:\n",num,num/N);

getch();return 0;

}

/**功能:求数组的积

返回参数: 数组类型a,整数n代表数组中含有多少个元素

传入参数: 数组的积

*/

float f(float a[],int n) /*有n个元素存放在数组a中,实际有n+1*/

{

float s=0;

if(n==1){

return a[1];

}

else if(n<=0){ /*这种情况不可能发生,只是用于演示*/

printf("the code is full of errors,the programme will exit");

exit(0);

}

else {

s=a
;

a
=1; /*该位置一,以在后续运算中清除*/

return (s*f(a,n-1));



}

}

/**功能:求数组的和

返回参数: 数组类型a,整数n代表数组中含有多少个元素

传入参数: 数组的和

*/

float g(float a[],int n)

{

float s=0;

if(n==1)

return a[1];

else if(n<=0){ /*这种情况不可能发生,只是用于演示*/

printf("the code is full of errors,the programme will exit");

exit(0);

}

else {

s=a
;

a
=0;

return (s+g(a,n-1));

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: