请帮我看一下这程序
#include "iostream.h"
struct complex{
double r;
double i;
};
complex add(complex c1, complex c2);
void out(complex &c);
void main(){
complex tmp, c0={1,2},cA[5]={{3,6},{-3,-2},{2,-8},{-5,-8},{1,0}};
for(int i=0; i<5; i++){
tmp=add(c0,cA[i]);
out(tmp);
}
}
complex add(complex c1, complex c2){
int i;
c2[i].r=c1.r+c2[i].r;
c2[i].i=c1.i+c2[i].i;
return(c2);
}
void out(complex &c){
for(int i=0; i<5; i++)
cout<<"("<<c[i].r<<","<<c[i].i<<")"<<endl;
}
[解决办法]
return(c2);
add函数改变的是c2的拷贝,出了函数后,其拷贝就销毁了
[解决办法]
struct complex{
double r;
double i;
};
complex add(complex c1, complex c2);
void out(complex &c);
void main(){
complex tmp, c0={1,2},cA[5]={{3,6},{-3,-2},{2,-8},{-5,-8},{1,0}};
for(int i=0; i <5; i++){
tmp=add(c0,cA[i]);
out(tmp);
}
}
complex add(complex c1, complex c2){
// int i;
c2.r=c1.r+c2.r;
c2.i=c1.i+c2.i;
return(c2);
}
void out(complex &c){
for(int i=0; i <5; i++)
cout <<"("<<c.r <<"," <<c.i << ")" <<endl;
}
[解决办法]
你的out函数的实现给弄丢了
[解决办法]
#include "stdafx.h"
#include <iostream.h>
struct complex
{
double r;
double i;
};
complex add(complex c1, complex c2);
void out(complex &c);
void main()
{
complex tmp, c0={1,2},cA[5]={{3,6},{-3,-2},{2,-8},{-5,-8},{1,0}};
for(int i=0; i <5; i++)
{
tmp=add(c0,cA[i]);
out(tmp);
}
}
complex add(complex c1, complex c2)
{
int i;
c2.r=c1.r+c2.r;
c2.i=c1.i+c2.i;
return(c2);
}
void out(complex &c)
{
for(int i=0; i <5; i++)
cout <<"(" <<c.r <<"," <<c.i <<")" <<endl;
}
[解决办法]
是啊是啊,void out(complex &c)函数声明了但是没有写实现呀~
- C/C++ code
// test.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
using namespace std;
struct complex{
double r;
double i;
};
complex add(complex c1, complex c2);
void out(complex &c);
int _tmain(int argc, _TCHAR* argv[])
{
complex tmp, c0={1,2},cA[5]={{3,6},{-3,-2},{2,-8},{-5,-8},{1,0}};
for(int i=0; i <5; i++)
{
tmp=add(c0,cA[i]);
out(tmp);
}
cin.get();
return(0);
}
complex add(complex c1, complex c2){
// int i;
c2.r=c1.r+c2.r;
c2.i=c1.i+c2.i;
return(c2);
}
void out(complex &c)
{
cout < < "(" < < c.i < < "," < < c.r < < ") " ;
}
这样就好了~~VS2005通过