给学习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));
}
}
#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));
}
}
相关文章推荐
- 给学习C语言的新手的求和程序及求积程序
- 循环控制结构程序04 - 零基础入门学习C语言19
- C语言学习历程(九)string.h的几个函数算法程序
- c语言新手手刀学习流程
- C语言学习笔记(程序风格)
- 大一新手学习线性表-顺序表的合并(C语言)
- 循环控制结构程序04 - 零基础入门学习C语言19
- 再谈C语言的学习(九)──程序设计中的几个法则
- 黑马程序员_C语言学习笔记之基本程序结构
- iPhone网络编程初体验-简单的聊天程序(适合新手学习客户端服务器交互)
- C语言学习笔记_5函数与程序结构
- c语言学习笔记 c程序编译过程
- 学习笔记2-C语言的运算符和程序结构
- iOS新手学习第一天 学习笔记 iPhone的第一个程序
- C语言初级学习-c程序的组成
- C语言小程序2--致新手
- c语言洗牌程序《学习别人的算法》
- 1、黑马程序员-C语言学习笔记之第一个C程序
- 新手看招 Unix和Linux下C语言学习指南
- 【Linux】【C语言】菜鸟学习日志(一) 一步一步学习在Linxu下测试程序的运行时间