Problem L: 循环交换
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 595 Solved: 456
[ Submit][ Status][ Web Board]
Description
输入三个数,循环交换他们的位置。
编写一个函数swp()来实现这个功能,函数调用格式见append.cc。
Input
输入第一行为三个整数a、b、c,后接多行,每行一个整数k。若k=0,则向左循环交换一次位置(abc->bca),否则,为向右交换k次。当k=1时,向右交换一次(abc->cab)。
Output
从输入的第二行开始,每行对应输出三个整数,为交换后的结果。
Sample Input
1 10 1000321
Sample Output
10 100 1 10 100 1 100 1 10 10 100 1
HINT
Append Code
int main()
{
int a, b, c, k;
cin >> a >> b >> c;
while(cin >> k)
{
if(k == 0)
swp(a, b, c);
else
swp(a, b, c, k);
cout << a << " " << b << " " << c << " " << endl;
}
}
{
int a, b, c, k;
cin >> a >> b >> c;
while(cin >> k)
{
if(k == 0)
swp(a, b, c);
else
swp(a, b, c, k);
cout << a << " " << b << " " << c << " " << endl;
}
}
#include <bits/stdc++.h>
using namespace std;
/*void swp(int &a, int &b, int &c)
{
int p = a;
a = b;
b = c;
c = p;
}//交换值用取地址&符,int一个常量就好,*/
int swp( int &a, int &b, int &c, int k=0)
/*不让k=0的话就需要多写一个上边的swp()*/
{
if(k == 0)
{
int p = a;
a = b;
b = c;
c = p;
return 0;
}
int p = c;
c = b;
b = a;
a = p;
while((k--)!=1)//已经交换一次,所以不用到0
{
//cout<<"交换第"<<k<<"次"<<endl;
return swp(a, b, c, k);
}
}
int main()
{
int a, b, c, k;
cin >> a >> b >> c;
while(cin >> k)
{
if(k == 0)
swp(a, b, c);
else
swp(a, b, c, k);
cout << a << " " << b << " " << c << " " << endl;
}
}