codeblocks编写C语言运行不了

具体体现在每次运行,他就说按任意键,然后随便按一个键,他就跳没了,然后就直接没有编译结果,请问这是什么问题,求解答

#include<stdio.h>
typedef struct{
    float real;
    float imag;
}complex;
void show(complex x){
    if(x.real!=0){
        if(x.imag>0){
            printf("%.2f+i%.2f\n",x.real,x.imag);
        }
        else
            if(x.imag==0)
                printf("%.2f\n",x.real);
            else{
                x.imag=-x.imag;
                printf("%.2f-i%\n",x.real,x.imag);
            }
        }
    else{
        if(x.imag>0)
            printf("i%.2f\n",x.imag);
        else{
            x.imag=-x.imag;
            printf("-i%.2f\n",x.imag);
        }
    }
}
void add(complex x,complex y){
    complex sub;
    sub.real=x.real+y.real;
    sub.imag=x.imag+y.imag;
    show(sub);
}
void minus(complex x,complex y){
    complex sub;
    sub.real=x.real-y.real;
    sub.imag=x.imag-y.imag;
    show(sub);
}
void mulit(complex x,complex y){
    complex sub;
    sub.real=x.real*y.real-x.imag8y.imag;
    sub.imag=x.real*y.imag+x.imag*y.real;
    show(sub);
}
float separate_real(complex x){
    return x.real;
}
float separate_imag(complex x){
    return x.imag;
}
int main(){
    int i;
    complex a,b;
    print("需要输入的复数个数(1或2)");
    scanf("%d",&i);
    if(i==1){
        print("分别输入实部虚部;");
        scanf("%f%f",&a.real,&a.imag);
        print("\n显示:a=");
        show(a);
    }
    else{
        print("分别输入两个复数的实部虚部;");
        scanf("%f%f%f%f",&a.real,&a.imag,&b.real,&b.imag);
        print("\n显示:a=");
        show(a);
        print("b=");
        show(b);
        print("\n和:a+b=");
        add(a,b);
        print("\n差:a-b=");
        minus(a,b);
        print("\n积:a*b=");
        multi(a,b);
    }
}

出来按任意键已经是程序运行完毕了。除非你代码中执行了pause

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^