复数计算

必须使用结构体指针的方法把函数的计算结果返回。

#include <stdio.h>

typedef struct {
    double real;
    double imag;
} Complex;

Complex* add(Complex *a, Complex *b) {
    Complex *result = malloc(sizeof(Complex));
    result->real = a->real + b->real;
    result->imag = a->imag + b->imag;
    return result;
}

int main() {
    Complex a = {1.0, 2.0};
    Complex b = {3.0, 4.0};
    Complex *c = add(&a, &b);
    printf("The sum is: %f + %fi", c->real, c->imag);
    free(c);
    return 0;
}

#include <stdio.h>

void swap(int *a, int *b) {
    int temp = *a;
    *a = *b;
    *b = temp;
}

int main() {
    int num1 = 5;
    int num2 = 3;
    printf("Before swap: num1 = %d, num2 = %d
", num1, num2);
    swap(&num1, &num2);
    printf("After swap: num1 = %d, num2 = %d
", num1, num2);
    return 0;
}

#include <stdio.h>

int main() {
    int num = 10;
    int *ptr = #

    printf("Value of num: %d", num);
    printf("Address of num: %p", &num);
    printf("Value of ptr: %p", ptr);
    printf("Value pointed by ptr: %d", *ptr);

    return 0;
}

#include <stdio.h>
int main()
{
	int a=7,*p=5,*c=&a;
	printf("%d %d %d",p,c,*c);
	return 0;
}

output: 5 6487564 7

#include <stdio.h>
int main()
{
	int a=7,*p=5,*c=&a,*d=&a;
	printf("%d %d %d %d\n",p,c,*c,*d);
	*d=3;
	printf("%d %d %d",a,*c,*d);
	return 0;
}

第二行output:3 3 3

复数输出形式

#include<stdio.h>  
#include<malloc.h>  
#include<stdlib.h>  
typedef struct {  
        double real;  
        double i;  
}complex;  
 complex* add(complex *a, complex *b){  
    /*********begin*********/
    complex *c = malloc(sizeof(complex));
    c->real = a->real+b->real;
    c->i=a->i+b->i;
    return c;
    /*********end*********/
 }  
 complex* minus(complex *a, complex *b){  
    /*********begin*********/
    complex *c = malloc(sizeof(complex));
    c->real = a->real-b->real;
    c->i = a->i-b->i;
    return c;
    /*********end*********/
 }  
 complex* multiply(complex *a, complex *b){  
    /*********begin**********/
    complex *c = malloc(sizeof(complex));
    c->real = a->real*b->real-a->i*b->i;
    c->i=a->real*b->i+a->i*b->real;
    return c;
    /*********end*********/  
 }  
int main()  
{     
    /*********begin**********/
    char op;
    double a,b,c,d;
    scanf("%c %lf %lf %lf %lf",&op,&a,&b,&c,&d);
    complex m={a,b},n={c,d};
    complex *r;

    switch(op)
    {
       case '+':
       r=add(&m,&n);
       break;
       case '-':
       r=minus(&m,&n);
       break;
       case '*':
       r=multiply(&m,&n);
       break;
    }
    if(r->i<0)
    printf("%.2lf+(%.2lf)i",r->real,r->i);
    else
    printf("%.2lf+%.2lfi",r->real,r->i);
    return 0;
    /*********end**********/
}  

#include<stdio.h>  
#include<malloc.h>  
#include<stdlib.h>  
typedef struct {  
        double real;  
        double i;  
}complex;  
 complex* add(complex a, complex b){  
    /*********begin*********/
    complex *c = malloc(sizeof(complex));
    c->real = a.real+b.real;
    c->i=a.i+b.i;
    return c;
    /*********end*********/
 }  
 complex* minus(complex a, complex b){  
    /*********begin*********/
    complex *c = malloc(sizeof(complex));
    c->real = a.real-b.real;
    c->i = a.i-b.i;
    return c;
    /*********end*********/
 }  
 complex* multiply(complex a, complex b){  
    /*********begin**********/
    complex *c = malloc(sizeof(complex));
    c->real = a.real*b.real-a.i*b.i;
    c->i=a.real*b.i+a.i*b.real;
    return c;
    /*********end*********/  
 }  
int main()  
{     
    /*********begin**********/
    char op;
    double a,b,c,d;
    scanf("%c %lf %lf %lf %lf",&op,&a,&b,&c,&d);
    complex m={a,b},n={c,d};
    complex *r;

    switch(op)
    {
       case '+':
       r=add(m,n);
       break;
       case '-':
       r=minus(m,n);
       break;
       case '*':
       r=multiply(m,n);
       break;
    }
    if(r->i<0)
    printf("%.2lf+(%.2lf)i",r->real,r->i);
    else
    printf("%.2lf+%.2lfi",r->real,r->i);
    return 0;
    /*********end**********/
}  

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务