C++ 接受两个数并交换两数值

来源:百度知道 编辑:UC知道 时间:2024/06/16 21:56:10
#include<iostream.h>
void Accept(int,int);
void Display(int,int );
int main()
{
int iNum1,iNum2,iTemp;
Accept(iNum1,iNum2);
iTemp=iNum1;
iNum1=iNum2;
iNum2=iTemp;

Display(iNum1,iNum2);
return 0;
}
void Accept(int Num1,int Num2)
{
cout<<"请输入第一个数:\n";
cin>>Num1;
cout<<"请输入第二个数:\n";
cin>>Num2;
}
void Display(int iNumber1,int iNumber2)
{
cout<<"iNum1="<<iNumber1<<endl;
cout<<"iNum2="<<iNumber2;
}
输入iNum1=10,iNum2=20但是运行结果为:
iNum1=-858993460
iNum2=-858993460
请问:这是怎么回事?错在哪?请高手指点?

要用指针交换,那是局部变量,不会影响iNum1,iNum2的值.

accept函数改成
void Accept(int&,int&);
void Accept(int &Num1,int &Num2) //引用传递
{
cout<<"请输入第一个数:\n";
cin>>Num1;
cout<<"请输入第二个数:\n";
cin>>Num2;
}

可以看看2楼的

把Accept(iNum1,iNum2)函数去掉,
直接在main()中写入
cin>>iNUM1>>iNUM2;
就可以得到你想要的结果。

下面来分析一下你的代码中的错误:
#include<iostream.h>
void Accept(int,int);
void Display(int,int );
int main()
{
int iNum1,iNum2,iTemp;
Accept(iNum1,iNum2); //错误,不能将没有初始化的变量作为函数参数
iTemp=iNum1;
iNum1=iNum2;
iNum2=iTemp;

Display(iNum1,iNum2);
return 0;
}
void Accept(int Num1,int Num2)
{ //函数的参数是用来将函数所需要的值传给函数的
cout<<"请输入第一个数:\n"; //怎么能cin>>Num1(Num1是这个函数的参数)
cin>>Num1;
cout<<"请输入第二个数:\n";
cin>>Num2;