题目
本题要求实现一个swap函数,swap函数接收3个引用类型的参数,可交换3个整数a,b,c的值。将a的值存入b,b的值存入c,c的值存入a, 并且返回三个整数中最大的数的值。例如a,b,c的值为1,2,3,则交换后,a,b,c的值为3,1,2,所返回的值为3。
在主函数中声明三个变量 a, b, c并赋值。a的值为1, b为2, c为3
本程序无需键盘输入(10分)
题目内容:
在主函数中声明三个变量 a, b, c并赋值。a的值为1, b为2, c为3;
以a、b、c作为实参,调用swap函数;
最后输出a、b、c三个整数中最大的值,以及三个整数;
变量定义时均应赋初值0。
不得使用C语言中的输入输出函数
函数接口定义:
int swap ( int& x, int& y, int& z); //三个参数均为引用类型
swap()函数接收3个引用类型的参数,可交换3个整数a,b,c的值。将a的值存入b,b的值存入c,c的值存入a。
swap()在交换三个整数的值后,返回x,y,z中最大的数的值
输入格式:
无需输入
输出格式:
用单个空格分隔的四个整数
最大数 a的值 b的值 c的值
输入样例:
输出样例:
3 3 1 2
说明:
第1个3是输入的三个数的最大值,
第二个3是交换后a的值,
1是交换后b的值,
2是交换后c的值
注意1:输出的最后一个整数之后没有空格,也没有换行
注意2:
在主函数中,不要使用
cout << swap(a,b,c) << a << b << c;
这种连续输出的语句,会产生副作用。
要将函数的调用单独作为一条语句,不要与输出语句放在一起。
想问各位大佬们个问题
连续输出的语句有什么副作用?
#include <iostream>
#include <array>
int swap(int&,int&,int&);
int max(int,int,int);
int main()
{
auto a{0},b{0},c{0};
a = 1;
b = 2;
c = 3;
int &rea = a,&reb = b,&rec = c;
auto max_return = swap(rea,reb,rec);
std::cout << max_return << " "
<< a << " "
<< b << " "
<< c;
return 0;
}
int swap(int& a,int& b,int& c)
{
int t,r;
t = b;
b = a;
r = c;
c = t;
a = r;
return max(a,b,c);
}
int max(int a,int b,int c)
{
auto max_element_self = a;
std::array<int,3> max_array{a,b,c};
for(auto i:max_array)
{
if(i > max_element_self)
max_element_self = i;
}
return max_element_self;
}