twinkle_snow 2015-12-09 19:36 采纳率: 76.5%
浏览 5279
已采纳

关于实参与形参类型不一致问题求解

#include<stdio.h>
#include<math.h>
double e(double *u,double *v)
{
    *u=exp(*u)*cos(*v);
    *v=exp(*u)*sin(*v);
    return ;
}

double ln(double *u,double *v)
{
    *u=ln(sqrt((*u)*(*u)+(*v)*(*v)));
    *v=atan((*v)/(*u));
    return;
}

double sin(double *u,double *v)
{
    *u=sin(*u)*(exp(*v)+exp(-(*v)))/2;
    *v=cos(*u)*(exp(*v)-exp(-(*v)))/2;
    return;
}

double cos(double *u,double *v)
{
    *u=cos(*u)*(exp(*v)+exp(-(*v)))/2;
    *v=-sin(*u)*(exp(*v)-exp(-(*v)))/2;
    return;
}


main()
{
    double x,y,a,b;
    double e(double *,double *);
    double ln(double *,double *);
    double sin(double *,double *);
    double cos(double *,double *);
    printf("请输入复数的实部和虚部x,y:");
    scanf("%lf%lf",&x,&y);
    a=x;b=y;
    e(&x,&y);
    printf("exp(%f+%fi)=%f+%fi\n",a,b,x,y);
    x=a;y=b;
    ln(&x,&y);
    printf("ln(%f+%fi)=%f+%fi\n",a,b,x,y);
    x=a;y=b;
    sin(&x,&y);
    printf("sin(%f+%fi)=%f+%fi\n",a,b,x,y);
    x=a;y=b;
    cos(&x,&y);
    printf("cos(%f+%fi)=%f+%fi\n",a,b,x,y);
}

问题如下:
1,错误 16 error C2198: “cos”: 用于调用的参数太少
2,错误 2 error C2440: “函数”: 无法从“double”转换为“double *”
( 21 IntelliSense: "double" 类型的实参与 "double *" 类型的形参不兼容 )
3, 警告 13 warning C4029: 声明的形参表不同于定义

4,警告 1 warning C4033: “e”必须返回值

不明白这是为什么,希望高手指点。

展开全部

  • 写回答

1条回答 默认 最新

  • ysuwood 2015-12-09 20:57
    关注
     #include<stdio.h>
    #include<math.h>
    void e(double *u,double *v)//修改
    {
        *u=exp(*u)*cos(*v);
        *v=exp(*u)*sin(*v);
    }
    
    void ln(double *u,double *v)//修改
    {
        *u=log(sqrt((*u)*(*u)+(*v)*(*v)));//修改
        *v=atan((*v)/(*u));
    }
    
    void sin(double *u,double *v)//修改
    {
        *u=sin(*u)*(exp(*v)+exp(-(*v)))/2;
        *v=cos(*u)*(exp(*v)-exp(-(*v)))/2;
    }
    
    void cos(double *u,double *v)//修改
    {
        *u=cos(*u)*(exp(*v)+exp(-(*v)))/2;
        *v=-sin(*u)*(exp(*v)-exp(-(*v)))/2;
    }
    
    
    void main()
    {
        double x,y,a,b;
    
        printf("请输入复数的实部和虚部x,y:");
        scanf("%lf%lf",&x,&y);
        a=x;b=y;
        e(&x,&y);
        printf("exp(%lf+%lfi)=%lf+%l\n",a,b,x,y);//修改
        x=a;y=b;
        ln(&x,&y);
        printf("ln(%lf+%lfi)=%l+%lfi\n",a,b,x,y);//修改
        x=a;y=b;
        sin(&x,&y);
        printf("sin(%lf+%lfi)=%lf+%lfi\n",a,b,x,y);//修改
        x=a;y=b;
        cos(&x,&y);
        printf("cos(%lf+%lfi)=%lf+%lfi\n",a,b,x,y);//修改
    }
    

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

悬赏问题

  • ¥15 MATLAB图片转灰度格式问题
  • ¥15 把h5作品链接复制到自己的账号里
  • ¥15 ensp抓包实验配置
  • ¥15 强化学习算法、MRO
  • ¥15 想要学习一门技术来保证以后能够吃上碗饭,该学什么好
  • ¥20 matlab绘冲床平面连杆机构图和仿真,求帮助
  • ¥15 为什么树莓派5b显示禁止连接
  • ¥15 请专家处理报错!基于深度学习的车型分类问题:数据集为包含 10 种车型的图像数据集,分为训练集、验证集和测试集。
  • ¥20 流量太费!寻找便宜的app音视频SDK或平替方案。
  • ¥15 kubeasz部署遇到问题
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部