<C语言>函数作实参传递给另一函数
2017-08-15 22:39
501 查看
/******** 题目:编写一个transform()函数,它接受4个参数:包含double类型数据的源数组名,double类型的目标数组名, 表示数组元素个数的int变量以及一个函数名(或者等价的指向函数的指针)。transform()函数把指定的 函数作用于源数组的每个元素,并将返回值放到目标数组中。 作者:wsg 时间:2017年8月15日 ********/
//版本一:transform()函数接受函数名 #include <stdio.h> #include <math.h> double transform(double x[], double y[], int a, double func()); //申明transform函数 double squ(double x); //申明squ函数 double cub(double x); //申明cub函数 int main(void) { int a; printf("请输入数组x元素个数:\n"); scanf("%d", &a); //定义数组x和y double x[a]; double y[a]; //输入数组x[]的元素 printf("请输入%d个数组元素(小数):\n", a); for(int j=0; j<a; j++) { scanf("%lf", &x[j]); } //传递sin函数 transform(x, y, a, sin);//调用transform函数 printf("sin输出结果为:\n"); for(int i=0; i<a; i++) { printf("y[%d]=sin(x[i])%lf\n", i, y[i]); } //传递cos函数 transform(x, y, a, cos); printf("cos输出结果为:\n"); for(int i=0; i<a; i++) { printf("y[%d]=cos(x[i])%lf\n", i, y[i]); } //传递自定义平方函数 transform(x, y, a, squ); printf("squ输出结果为:\n"); for(int i=0; i<a; i++) { printf("y[%d]=squ(x[i])%lf\n", i, y[i]); } //传递自定义立方函数 transform(x, y, a, cub); printf("cub输出结果为:\n"); for(int i=0; i<a; i++) { printf("y[%d]=cub(x[i])%lf\n", i, y[i]); } return 0; } double transform(double x[], double y[], int a, double func()) //定义transform函数 { int i; for(i=0; i<a; i++) { y[i] = func(x[i]); } return y[i]; } double squ(double x) //定义squ函数 { return x*x; } double cub(double x) //定义cub函数 { return x*x*x; }
/******** 版本二:transform()函数接受指向函数的指针(函数指针) ********/ #include <stdio.h> #include <math.h> double transform(double x[], double y[], int a, double (*func)()); //申明transform函数 double squ(double x); //申明squ函数 double cub(double x); //申明cub函数 int main(void) { int a; printf("请输入数组x元素个数:\n"); scanf("%d", &a); //定义数组x和y double x[a]; double y[a]; //输入数组x[]的元素 printf("请输入%d个数组元素(小数):\n", a); for(int j=0; j<a; j++) { scanf("%lf", &am 4000 p;x[j]); } //传递sin函数 transform(x, y, a, sin);//调用transform函数 printf("sin输出结果为:\n"); for(int i=0; i<a; i++) { printf("y[%d]=sin(x[i])%lf\n", i, y[i]); } //传递cos函数 transform(x, y, a, cos); printf("cos输出结果为:\n"); for(int i=0; i<a; i++) { printf("y[%d]=cos(x[i])%lf\n", i, y[i]); } //传递自定义平方函数 transform(x, y, a, squ); printf("squ输出结果为:\n"); for(int i=0; i<a; i++) { printf("y[%d]=squ(x[i])%lf\n", i, y[i]); } //传递自定义立方函数 transform(x, y, a, cub); printf("cub输出结果为:\n"); for(int i=0; i<a; i++) { printf("y[%d]=cub(x[i])%lf\n", i, y[i]); } return 0; } double transform(double x[], double y[], int a, double (*func)()) //定义transform函数 { int i; for(i=0; i<a; i++) { y[i] = func(x[i]); } return y[i]; } double squ(double x) //定义squ函数 { return x*x; } double cub(double x) //定义cub函数 { return x*x*x; }
相关文章推荐
- c语言字符串库函数#include<string.h>
- c语言:有一函数:当x<0,y=-1;x=0,y=0;x>0,y=1;编一程序,输入一个x值,要求输出相应的y值。
- 利用out关键字向函数传递List<T>参数遇到的问题
- c语言字符串库函数#include<string.h>
- c语言输入与输出库函数#include<stdio.h>
- <C语言>函数的值传递与地址传递--以输入三个数并从小到大排列为例
- C语言<四> 函数与程序结构
- <C语言>“获取时间”函数的定义与封装
- C语言中函数传递(实参 形参)
- 【c语言】有一函数:x < 0 ,y = -1;x = 0,y = 0;x > 0,y = 1,编程输入一个x值,要求输出对应的y
- c语言:有一函数:当x&lt;0,y=-1;x=0,y=0;x&gt;0,y=1;编一程序,输入一个x值,要求输出相应的y值。
- C语言<time.h>中srand(),rand()等等函数产生随机数的用法。
- <C语言>结构体的参数传递和指针传递(注释详解)
- <C语言>消除字符串中的空格--附:消除fgets()函数吃进去的回车符
- C语言-实参到函数形参传递的理解
- <C语言>用递归调用函数解决穷举n位二进制数问题
- <C语言 入栈顺序>为什么函数入栈顺序从右往左?
- <转>C语言中的文件输入输出函数
- <C语言>打印(输)出系统时间-----time相关函数
- <C语言>关于函数返回值是指针,取不到值的问题研究