2016-11-08 55 views
0

我正在学习Intro to C测试,这需要我编写涉及结构的函数。这个问题只是要求我写这个函数,但我想编写一个完整的代码,这样我就可以输入数字,看看我的代码是否正常运行。我认为我正确地编写了这个功能,我不知道如何编码,并打印出数字。使用C中的结构和函数编写程序

这是问题。

The question.

以下是我对上述问题写入。

struct complex_numb Add_Complex(struct complex_numb C1, struct complex_numb C2){ 

struct complex_numb C3; 

C3.real = C1.real + C2.real; 
C3.imaginary = C1.imaginary + C2.imaginary; 

return (C3); 

}; 

我们还没有使用typedef。

我认为这会是这样的,但它不工作。

#include <stdio.h> 

struct complex_numb Add_Complex(struct complex_numb C1, struct complex_numb C2); 

int main(){ 

struct complex_numb{ 
    float real; 
    float imaginary; 
}; 

Add_Complex(1,2,3,4); 

printf("%f %f", C3.real, C3.imaginary); 

} 

struct complex_numb Add_Complex(struct complex_numb C1, struct complex_numb C2){ 

struct complex_numb C3; 
C3.real = C1.real + C2.real; 
C3.imaginary = C1.imaginary + C2.imaginary; 


return (C3); 

}; 
+1

为什么在Add_Complex中传入4个参数作为参数? –

+1

您并未创建C1和C2结构,并将它们传递给'Add_Complex()'。你正在调用未定义的行为,你的编译器应该对你尖叫。如果不是,则需要打开更多编译警告(或者获得更好/更新的编译器)。 –

+0

不会有四个数字,因为有2个实数和2个虚数?这是我的逻辑,我不确定如何把它放在一起,因为我仍然在学习功能和结构。 – beginner

回答

0

创建C1和C2,这些值添加到您的结构里面的属性,并创建complex_numb其称为“C3”你的回报对象,并有=的函数调用发生在C1的结果和C2。使用typedef更改了你的结构并将它移出了main。这是一个编译和工作版本:

#include <stdio.h> 

typedef struct { 
     float real; 
     float imaginary; 
    }complex_numb; 

complex_numb Add_Complex(complex_numb C1, complex_numb C2); 

    int main() 
    { 
     complex_numb C1; 
     C1.real = 1; 
     C1.imaginary = 2; 
     complex_numb C2; 
     C2.real = 3; 
     C2.imaginary = 4; 

    //Add_Complex(1,2,3,4); 
    complex_numb C3; 
    C3 = Add_Complex(C1,C2); 
    printf("%f %f", C3.real, C3.imaginary); 

    } 

complex_numb Add_Complex(complex_numb C1, complex_numb C2){ 

    complex_numb C3; 
    C3.real = C1.real + C2.real; 
    C3.imaginary = C1.imaginary + C2.imaginary; 


    return (C3); 

    } 
0

您的实际和形式参数不匹配。而当您返回c3时,在您尝试打印其内容之前,您不会存储该结构。