Description 输入两个正整数A和B,使用赋值语句交换A、B的值(使A的值等于B,B的值等于A)。 Input 输入两个正整数 Output 输出交换后的值 Sample Input 1 2 Sample Output 2 1
就是这题。
怎么样?很简单吧?
进入正题
1.首先是最简单的办法:
#include <iostream> using namespace std; int main(int argc, char** argv) { int a, b, c; cin >> a >> b; c = a; a = b; b = c; cout << a << " " << b; return 0; }
2.使用函数:
#include <iostream> using namespace std; void doit(int &a, int &b) { int c; c = a; a = b; b = c; return; } int main(int argc, char** argv) { int a, b; cin >> a >> b; doit(a, b); cout << a << " " << b; return 0; }
3.还有一种指针:
#include <iostream> using namespace std; void doit(int *a, int *b) { int c; c = (*a); (*a) = (*b); (*b) = c; return; } int main(int argc, char** argv) { int a, b; cin >> a >> b; doit(&a, &b); cout << a << " " << b; return 0; }
4.swap()是个好东西:
#include <iostream> using namespace std; int main(int argc, char** argv) { int a, b; cin >> a >> b; swap(a, b); cout << a << " " << b; return 0; }
5.投机取巧:
#include <iostream> using namespace std; int main(int argc, char** argv) { int a, b; cin >> a >> b; cout << b << " " << a; return 0; }
6.大材小用:
#include<cstddef> #include<limits> #include<climits> #include<cfloat> #include<typeinfo> #include<exception> #include<ciso646> #include<cstdarg> #include<csetjmp> #include<csignal> #include<iostream> #include<iomanip> #include<ios> #include<istream> #include<ostream> #include<sstream> #include<fstream> #include<iosfwd> #include<streambuf> #include<cstdio> #include<cwchar> #include<stdexcept> #include<cassert> #include<cerrno> #include<utility> #include<functional> #include<memory> #include<ctime> #include<string> #include<cctype> #include<cwctype> #include<cstring> #include<cwchar> #include<vector> #include<list> #include<deque> #include<queue> #include<stack> #include<map> #include<set> #include<bitset> #include<iterator> #include<algorithm> #include<ciso646> #include<complex> #include<valarray> #include<numeric> #include<cmath> #include<cstdlib> #include<locale> #include<clocale> #include<windows.h> #include<string> #define SPACE 0 #define BARRIER 1 #define DIAMOND 2 #define CHECKPOINT 3 #define LINED 4 #define END 5 #define NOTSTART 0 #define RUNNING 1 #define DEAD 2 #define WIN 3 #define UP 0 #define RIGHT 1 #define DOWN 2 #define LEFT 3 #define __DL_SIZE 10001 #define standarddir 0,1,0,1 using namespace std; class dl { public: int dmap[__DL_SIZE][__DL_SIZE]; int __stadus; int linex; int liney; int dir; bool usedir[4]; int dirs[2]; int diamonds; int checkpointx; int checkpointy; void clear(void); void setdir(bool __up, bool __down, bool __left, bool __right); void move(void); int stadus(void); void start(int __x, int __y); void setmap(int __n, int __m); void turn(void); }; void dl::clear(void) { memset(dmap, 0, sizeof (dmap)); memset(usedir, 0, sizeof (usedir)); memset(dirs, 0, sizeof (dirs)); dir = UP; checkpointx = 0; checkpointy = 0; diamonds = 0; __stadus = NOTSTART; return; } void dl::setdir(bool __up, bool __down, bool __left, bool __right) { int k = 0; memset(usedir, 0, sizeof (usedir)); if (__up) { usedir[UP] = true; if (k < 2) { dirs[k++] = UP; } } if (__down) { usedir[DOWN] = true; if (k < 2) { dirs[k++] = DOWN; } } if (__left) { usedir[LEFT] = true; if (k < 2) { dirs[k++] = LEFT; } } if (__right) { usedir[RIGHT] = true; if (k < 2) { dirs[k++] = RIGHT; } } dir = dirs[0]; return; } void dl::move(void) { int temp; switch (dir) { case UP: linex--; break; case DOWN: linex++; break; case LEFT: liney--; break; case RIGHT: liney++; break; } temp = dmap[linex][liney]; if (temp == BARRIER) { __stadus = DEAD; return; } if (temp == DIAMOND) { diamonds++; } if (temp == CHECKPOINT) { checkpointx = linex; checkpointy = liney; } if (temp == END) { __stadus = WIN; } dmap[linex][liney] = LINED; return; } int dl::stadus(void) { return __stadus; } void dl::start(int __x, int __y) { diamonds = 0; checkpointx = __x; checkpointy = __y; linex = __x; liney = __y; __stadus = RUNNING; dir = dirs[0]; dmap[__x][__y] = LINED; return; } void dl::setmap(int __n, int __m) { int i, j; for (i = 0; i < __n; i++) { for (j = 0; j < __m; j++) { std::cin >> dmap[i][j]; } } return; } void dl::turn(void) { if ((dir != dirs[0]) && (dir != dirs[1])) { return; } if (dir == dirs[0]) { dir = dirs[1]; return; } dir = dirs[0]; return; } dl d; int main(int argc, char** argv) { cin >> d.linex >> d.liney; swap(d.linex, d.liney); cout << d.linex << " " << d.liney; return 0; }
7.宏操作:
#include <iostream> #define doit(a,b) {int c; c = a; a = b; b = c;} using namespace std; int main(int argc, char** argv) { int a, b; cin >> a >> b; doit(a, b); cout << a << " " << b; return 0; }
8.异或大法好(老师说的,我还没有弄明白【捂脸】):
#include <iostream> using namespace std; int main(int argc, char** argv) { int a, b; cin >> a >> b; a = a ^ b; b = a ^ b; a = a ^ b; cout << a << " " << b; return 0; }
9.五马分尸:
#include <iostream> #define c9(_,__,___,____,_____,______,_______,________,_________) _##__##___##____##_____##______##_______##________##_________ #define c6(_,__,___,____,_____,______) _##__##___##____##_____##______ #define c5(_,__,___,____,_____) _##__##___##____##_____ #define c4(_,__,___,____) _##__##___##____ #define c3(_,__,___) _##__##___ #define c2(_,__) _##__ c2(c, 5(u, s, i, n, g)) c2(c, 9(n, a, m, e, s, p, a, c, e)) c2(c, 3(s, t, d)); c2(c, 3(i, n, t)) c2(c, 4(m, a, i, n))(c2(c, 3(i, n, t)) c2(c, 4(a, r, g, c)), c2(c, 4(c, h, a, r))** c2(c, 4(a, r, g, v))) { c2(c, 3(i, n, t)) a, b; c2(c, 3(c, i, n)) >> a >> b; c2(c, 4(s, w, a, p) (a, b)); c2(c, 4(c, o, u, t)) << a << " " << b; c2(c, 6(r, e, t, u, r, n)) 0; }