twinkle_snow 2015-12-10 03:36 采纳率: 76.5%
浏览 5259
已采纳

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

#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-10 04: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 ue5 .3之前好好的现在只要是激活关卡就会崩溃
  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?
  • ¥15 python爬取bilibili校园招聘网站
  • ¥30 求解达问题(有红包)
  • ¥15 请解包一个pak文件
  • ¥15 不同系统编译兼容问题
  • ¥100 三相直流充电模块对数字电源芯片在物理上它必须具备哪些功能和性能?