点击打开链接
看下右边的代码,就知道这是一道交换数值的题目了。
确实,开始看起来,这道题目出得比较2。
但是我相信你在学习c和c++的时候对指针、引用的了解总会有一些误区的。
右边的代码写了5个小函数,目的是交换两个数。
麻烦你去主函数里面,把不能交换的代码注释掉。
比如说,你觉得swap3这个函数不能交换,那么请你注释掉这一行和他下面的那一行代码。直到你觉得剩下的代码都可以实现交换功能并输出哦~
请注意内存泄露、指针和引用的区别等情况~
这道题目简单吧?不要写人任何代码,只需要//就行了哈~
这道题目这么好玩,把样例输入输出写出来就太简单啦~
所以,这道题目的样例不要参考了哦 ~
样例输入
1 2 1 2 1 2 1 2 1 2
样例输出
2 1 2 1
题代码
#include <iostream>
using namespace std;
void swap1(int p, int q)
{
int temp;
temp = p;
p = q;
q = temp;
}
void swap2(int *p, int *q)
{
int *temp;
*temp = *p;
*p = *q;
*q = *temp;
}
void swap3(int *p, int *q)
{
int *temp;
temp = p;
p = q;
q = temp;
}
void swap4(int *p, int *q)
{
int temp;
temp = *p;
*p = *q;
*q = temp;
}
void swap5(int &p, int &q)
{
int temp;
temp = p;
p = q;
q = temp;
}
int main()
{
int a1, b1, a2, b2, a3, b3, a4, b4, a5, b5;
cin>>a1>>b1>>a2>>b2>>a3>>b3>>a4>>b4>>a5>>b5;
swap1(a1, b1);
cout<<a1<<" "<<b1<<endl;
swap2(&a2, &b2);
cout<<a2<<" "<<b2<<endl;
swap3(&a3, &b3);
cout<<a3<<" "<<b3<<endl;
swap4(&a4, &b4);
cout<<a4<<" "<<b4<<endl;
swap5(a5, b5);
cout<<a5<<" "<<b5<<endl;
return 0;
}
答案
#include <iostream>
using namespace std;
//void swap1(int p, int q)
//{
//int temp;
//temp = p;
//p = q;
//q = temp;
//}
//void swap2(int *p, int *q)
//{
//int *temp;
//*temp = *p;
//*p = *q;
//*q = *temp;
//}
//void swap3(int *p, int *q)
//{
//int *temp;
//temp = p;
//p = q;
//q = temp;
//}
void swap4(int *p, int *q)
{
int temp;
temp = *p;
*p = *q;
*q = temp;
}
void swap5(int &p, int &q)
{
int temp;
temp = p;
p = q;
q = temp;
}
int main()
{
int a1, b1, a2, b2, a3, b3, a4, b4, a5, b5;
cin>>a1>>b1>>a2>>b2>>a3>>b3>>a4>>b4>>a5>>b5;
//swap1(a1, b1);
//cout<<a1<<" "<<b1<<endl;
//swap2(&a2, &b2);
//cout<<a2<<" "<<b2<<endl;
//swap3(&a3, &b3);
//cout<<a3<<" "<<b3<<endl;
swap4(&a4, &b4);
cout<<a4<<" "<<b4<<endl;
swap5(a5, b5);
cout<<a5<<" "<<b5<<endl;
return 0;
}
初学者的数值交换误区。。