用结构体变量表示复数,进行两个复数的加法和乘法运算并输出结果

标有星号的行中存在错误,求大神改正。。。#include<stdio.h>#include<string.h>structComplex{intr;inti;};stru... 标有星号的行中存在错误,求大神改正。。。
#include <stdio.h>
#include <string.h>
struct Complex
{
int r;
int i;
};
struct Complex Add(struct Complex x,struct Complex y)
{
struct Complex z;
z.i=x.i+y.i;
z.r=x.r+y.r;
return z;
};
struct Complex * Mulitply(struct Complex x,struct Complex y)
{
struct Complex * z; //*****
z.r=x.r*y.r-x.i*y,i;
z.i=x.r*y.i+x.i*y.r;
return z; //*****
}
void Input(struct Complex x) //*****
{
printf("\nInput the values of r and i:");
scanf("%d%d",x->r,x->i); //*****
return;
}
void main()
{
struct Complex a,b=(1,1),z,*p; //*****
Input(&a);
printf("\na=%d+%di",a.r,a.i);
printf("\nb=%d+%di",b.r,b.i);
p=Mulitply(a,b);
z=Add(a,b);
printf("\na+b=%d+%di",z.r,z.i);
printf("\na*b=%d+%di",p->r,p->i);
}
展开
 我来答
问明6E
高粉答主

2019-06-18 · 每个回答都超有意思的
知道答主
回答量:279
采纳率:100%
帮助的人:12.4万
展开全部

#include<stdio.h>

struct complex add(struct complex  c1,struct complex c2);

struct complex amass(struct complex  c1,struct complex c2);

struct complex

int real;

int image; 

};

void main()

{

struct complex a,b;

while(scanf("%d%d%d%d",&a.real,&a.image,&b.real,&b.image)!=EOF)

{

add(a,b);

amass(a,b);

}

}

struct complex add(struct complex  c1,struct complex c2)

{

printf("%d+(%di)\n",c1.real+c2.real,c1.image+c2.image);

return c1;

}

struct complex amass(struct complex  c1,struct complex c2)

{

printf("%d+(%di)\n",(c1.real*c2.real-c1.image*c2.image),(c1.real*c2.image+c2.real*c1.image));

return c1;

}

扩展资料:

main()函数用法:

大多数UNIX系统对main函数提供了三个参数,原型如下:

intmain(intargc,char*argv[],char*env[]);

其中第三个参数是环境表地址。

ANSIC规定main函数只有两个参数,而且第三个参数与全局变量environ相比也没有带来更多益处,所以POSIX.1也规定应使用environ而不使用第三个参数。

通常用getenv和putenv函数来存取特定的环境变量,而不是用environ变量。

main函数的原型多是下面这种形式:

intmain(intargc,char*argv[]),参数argc代表了输入参数的个数,char*argv[]表示传入的参数的字符串,是一个字符串数组。

例如在linux平台下编写一个小程序

int main(intargc,char*argv[])

int i;

printf("argc:%d\n",argc);

for(i=0;i<argc;i++)

printf("argv[%d]:%s\n",i,argv[i]);

exit(0);

用gcc编译后形成一个a.out的可执行的文件,运行a.out,其结果是:

argc=1,argv[0]=”a.out”

运行的程序的文件名,也占用一个参数位置,也就是说argv数组中的第一个单元指向的字符串总是可执行程序的名字,以后的单元指向的字符串依次是程序调用时的参数。这个赋值过程是操作系统完成的,只需要拿来用就可以了。

在命令行参数的提交中,系统会自动给指针数组后加上一个NULL,所以for(i=0;i<argc;i++)这句也可以换成while(*argv!=NULL)

int main(intargc)省略其它参数的定义也是可以的,这样运行时候argc就直接返回参数个数,而不返回其它。

运行命令行参数带有char*argv[]的时候,如果输入参数带有空格,应该用双引号括起来。

漠影歌
推荐于2018-02-28 · TA获得超过807个赞
知道小有建树答主
回答量:483
采纳率:50%
帮助的人:442万
展开全部
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct Complex
{
    int r;
    int i;
};
struct Complex Add(struct Complex x,struct Complex y)
{
    struct Complex z;
    z.i=x.i+y.i;
    z.r=x.r+y.r;
    return z;
};
struct Complex* Mulitply(struct Complex x,struct Complex y)
{
    struct Complex* z = (struct Complex*)malloc(sizeof(struct Complex)); //*****
    
    z->r = x.r*y.r - x.i*y.i;
    z->i = x.r*y.i + x.i*y.r;

    return z;                                //*****
}
void Input(struct Complex* x)       //*****
{
    printf("\nInput the values of r and i:");
    scanf("%d%d", &x->r, &x->i);                //*****
}
void main()
{
    struct Complex a,b={1,1},z,*p;          //*****
    Input(&a);
    printf("\na=%d+%di",a.r,a.i);
    printf("\nb=%d+%di\n",b.r,b.i);
    p=Mulitply(a,b);
    z=Add(a,b);
    printf("\na+b=%d+%di",z.r,z.i);
    printf("\na*b=%d+%di\n",p->r,p->i);
    free(p);
}

改完可以运行出结果了,不明白的地方继续追问

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
天云小店
2015-11-25 · TA获得超过2.8万个赞
知道大有可为答主
回答量:3281
采纳率:91%
帮助的人:758万
展开全部
void Input(struct Complex x)改为void Input(struct Complex *x)
scanf("%d%d",x->r,x->i); 改为scanf("%d%d",&(x->r),&(x->i));
struct Complex a,b=(1,1),z,*p; 改为struct Complex a,b={.r=1; .i=1;},z,*p;
追问
能不能再说说前面两行的。。。
追答
struct Complex * z;这个定义的是指针,但是后面引用的时候用的是 . 号,不对应,直接定义为struct Complex z; 而且将函数类型也去掉指针struct Complex * Mulitply(struct Complex x,struct Complex y)改为struct Complex Mulitply(struct Complex x,struct Complex y)
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式