企业门户网站建设方案书,rest api 做网站,seo技巧课程,风景区网站建设项目建设可行性描述
给定三个整数#xff0c;请将它们按从小到大的顺序输出。
输入
输入为一行#xff0c;包含三个整数#xff0c;用空格分隔。
输出
输出为一行#xff0c;包含三个整数#xff0c;用空格分隔#xff0c;表示排序后的结果。
输入样例 1
9 3 7
输出样例 1
3 …描述
给定三个整数请将它们按从小到大的顺序输出。
输入
输入为一行包含三个整数用空格分隔。
输出
输出为一行包含三个整数用空格分隔表示排序后的结果。
输入样例 1
9 3 7
输出样例 1
3 7 9
代码一如下最普通的方法
#include iostream
using namespace std;
int main()
{int a, b, c;cin a b c;int t;if (a b){t a;a b;b t;}if (a c){t a;a c;c t;}if (b c){t b;b c;c t;}cout a b c;return 0;
}
代码二如下指针法
#include iostream
using namespace std;
void exchange(int*, int*);
int main()
{int a, b, c;cin a b c;int* p1 a, * p2 b, * p3 c;if (a b)exchange(p1, p2);if (a c)exchange(p1, p3);if (b c)exchange(p2, p3);cout a b c;return 0;
}
void exchange(int* a, int* b)
{int t *a;*a *b;*b t;
}
代码三如下返回值有两个
#include iostream
#include utility
using namespace std;
pairint, intexchange(int a,int b)
{int t a;a b;b t;pairint, intresult;result make_pair(a, b);return result;
}
int main()
{int a, b, c;cin a b c;if (a b){pairint, intresult exchange(a, b);a result.first;b result.second;}if (a c){pairint, intresult exchange(a, c);a result.first;c result.second;}if (b c){pairint, intresult exchange(b, c);b result.first;c result.second;}cout a b c;return 0;
}
代码四如下引用法
#include iostream
using namespace std;
void exchange(int, int);
int main()
{int a, b, c;cin a b c;if (a b)exchange(a, b); //实参为整型变量if (a c)exchange(a, c);if (b c)exchange(b, c);cout a b c;return 0;
}
void exchange(int x, int y) //形参是“引用”
{int t x;x y;y t;
}
问题点
①引用
对一个数据可以建立一个“引用”它的作用是为一个变量起一个别名。这是C对C的一个重要扩充。 // 假如有一个变量啊想给它起一个别名b可以这样写 int a; //定义a是整型变量 int ba; //声明b是a的“引用” // 以上声明了b是a的引用即b是a的别名。经过这样的声明后使用a或b的作用相同都代表同一变量。如果a的值是20则b的值也是20。 是引用声明符并不代表地址。不得理解为“把a的值赋给b的地址”。在数据类型名后面出现的是引用声明符在其他场合出现的都是地址符。 注意 1引用不是一种独立的数据类型。对引用只有声明没有定义。必须先定义一个变量然后声明对该变量建立一个引用别名。 2声明一个引用时必须同时使之初始化即声明它代表哪一个变量。当引用作为函数形参时不必在声明中初始化它的初始化是在函数调用时的虚实结合实现的即作为形参的引用是实参的别名。 3在声明一个引用后不能再使之作为另一变量的引用。 4不能建立引用数组。如 int a[5]; int b[5]a; // 错误不能建立引用数组 int ba[0]; // 错误不能作为数组元素的别名 5不能建立引用的引用。也没有引用的指针。 int a3; int ba; //声明b是a的别名正确 int cb; //试图建立引用的引用错误 int*pb; //不能建立指向引用的指针 6可以取引用的地址。如已声明b是a的引用则b就是变量a的地址a。 int *pt; ptb; //把变量a的地址a赋给指针变量pt 7区别引用声明符和地址运算符。 int ba; //声明b是a的引用 coutbendl; //输出b的地址此处b不是引用 在声明了引用后在使用它时不带而只用引用的名字如b而不是b。 关于引用的性质如果在程序中声明了b是变量a的引用实际上在内存中为b开辟了一个指针型的存储单元在其中存放变量a的地址输出引用b时就输出b所指向的变量a值相当于输出*b。引用其实就是一个指针常量它的指向不能改变只能指向一个指定的变量。所以引用的本质还是指针所有引用的功能都可以由指针实现。
C之所以增加引用机制主要是把它作为函数参数以扩充函数传递数据的功能。
以引用作为形参实参不是地址而是整型变量名由于形参是引用系统会自动将实参的地址传递给形参。注意此时传送的是实参变量的地址而不是实参变量的值。
将变量名作为实参和形参的函数调用 以及 使用指针变量作形参的函数调用实参是地址传递的是地址故仍然是传值方式不要误以为是传址方式都是传值方式以引用作为形参的函数调用实参是变量名而传递的是变量的地址时传址方式。