鱼C论坛

 找回密码
 立即注册
查看: 575|回复: 3

[已解决]这道题不会,哪位大神帮我看看

[复制链接]
发表于 2022-3-10 23:27:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
函数指针的应用:sin(x)、cos(x)、tan(x)都是三角函数,形参、函数返回结果都是double类型,它们的声明、定义已包含在math.h中。请编写编程实现如下功能:根据输入的整数(1、2、3)分别调用sin(x)、cos(x)、tan(x),x的值也需要输入,请补充程序所缺代码:
#include <stdio.h>
#include <math.h>
int main()
{
        int n;
        double x;
        printf("请输入整数1,2,3(分别调用sin(x)、cos(x)、tan(x)):");
        scanf("%d",&n);
        printf("请输入x的值:");
        scanf("%lf",&x);
                       (1)                 //定义指向函数的指针变量;
        void fun(double (*p)(double z),double x, int n) ;//函数声明
                       (2)                 //调用fun()函数
        return 0;
}
//函数功能: 根据n的值(1,2,3)分别调用sin(x)、cos(x)、tan(x),并输出结果;n为其它值时,提示“输入的数据有误,不能调用任何函数!”
void fun(double (*p)(double z),double x, int n)
{
        //函数的实现代码
}
最佳答案
2022-3-11 00:00:47
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <stdio.h>
  3. #include <math.h>
  4. int main()
  5. {
  6.     int n;
  7.     double x;
  8.     void fun(double (*p)(double z), double x);

  9.     printf("请输入整数1,2,3(分别调用sin(x)、cos(x)、tan(x)):");
  10.     if(scanf("%d", &n))
  11.         ;
  12.     printf("请输入x的值:");
  13.     if(scanf("%lf", &x))
  14.         ;

  15.     switch (n)
  16.     {
  17.     case 1:
  18.         fun(sin, x);
  19.         break;
  20.     case 2:
  21.         fun(cos, x);
  22.         break;
  23.     case 3:
  24.         fun(tan, x);
  25.         break;
  26.     default:
  27.         printf("输入的数据有误,不能调用任何函数!");
  28.         break;
  29.     }
  30.     return 0;
  31. }

  32. void fun(double (*p)(double z), double x)
  33. {
  34.     printf("%lf", p(x));
  35. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-3-10 23:55:10 | 显示全部楼层
代码好象有问题,fun() 函数参数是函数指针,x,n (这里参数有函数指针,表示在外面已经选好函数 sin 或 cos 或 tan 了,为什么还要用 n?)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-11 00:00:47 | 显示全部楼层    本楼为最佳答案   
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <stdio.h>
  3. #include <math.h>
  4. int main()
  5. {
  6.     int n;
  7.     double x;
  8.     void fun(double (*p)(double z), double x);

  9.     printf("请输入整数1,2,3(分别调用sin(x)、cos(x)、tan(x)):");
  10.     if(scanf("%d", &n))
  11.         ;
  12.     printf("请输入x的值:");
  13.     if(scanf("%lf", &x))
  14.         ;

  15.     switch (n)
  16.     {
  17.     case 1:
  18.         fun(sin, x);
  19.         break;
  20.     case 2:
  21.         fun(cos, x);
  22.         break;
  23.     case 3:
  24.         fun(tan, x);
  25.         break;
  26.     default:
  27.         printf("输入的数据有误,不能调用任何函数!");
  28.         break;
  29.     }
  30.     return 0;
  31. }

  32. void fun(double (*p)(double z), double x)
  33. {
  34.     printf("%lf", p(x));
  35. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-11 08:56:12 From FishC Mobile | 显示全部楼层
傻眼貓咪 发表于 2022-3-10 23:55
代码好象有问题,fun() 函数参数是函数指针,x,n (这里参数有函数指针,表示在外面已经选好函数 sin 或 c ...

我就是觉得奇怪才发出来的,老师布置的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-20 18:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表