复数计算
必须使用结构体指针的方法把函数的计算结果返回。
#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**********/ }