回 帖 发 新 帖 刷新版面

主题:新手求助。。这道题中complex类型的结构体为什么放在main函数中就出错??

这是个用结构体来实现复数的加减乘运算的程序
问题见标题 
求解答~~~!
#include<iostream.h>
struct complex
{
    float real,image;
}s1,s2;
void add(complex a,complex b)
{
    complex c;
    c.image=a.image+b.image;
    c.real=a.real+b.real;
    cout<<c.real<<" "<<c.image;
}
void minus(complex a,complex b)
{
    complex c;
    c.image=a.image-b.image;
    c.real=a.real-b.real;
    cout<<c.real<<" "<<c.image;
}
void times(complex a,complex b)
{
    complex c;
    c.real=a.real*b.real-a.image*b.image;
    c.image=a.real*b.image+b.real*a.image;
    cout<<c.real<<" "<<c.image;
}
void main()
{

    complex s1,s2;
    cout<<"please enter the 2 complex:"<<endl;
    cin>>s1.real>>s1.image>>s2.real>>s2.image;
 add(s1,s2);
 minus(s1,s2);
 times(s1,s2);
}

回复列表 (共4个回复)

沙发

struct complex
{
    float real,image;
}s1,s2; 你这里不是定义了两个complex类型的s1,s2了吗,你的main函数里怎么又定义一次啊?!
void main()
{

    complex s1,s2;
}
这个complex s1,s2;重复定义了,去掉,直接使用全局的s1,s2

板凳


哦  那个是我搞错了 我本来意思是如果main中complex s1,s2去掉了,把开头声明complex的换到main中 为什么错啊

3 楼

你的意思是把
struct complex
{
    float real,image;
}s1,s2;
 放到main函数里来声明?!!!肯定错的嘛?你在main里声明的这个结构体complex是局部变量,只能在main函数里可见,出了main函数就不能用了,你那些main函数外面的add(),times()函数是全局函数,但是对complex不可见,用不了complex,所以当然会出错咯

4 楼

原来如此。。。谢谢啊~~!~~

我来回复

您尚未登录,请登录后再回复。点此登录或注册