a,b,c从大到小输出 void Show(int a,int b,int c) {if(a<b) int tmp; { tmp=a; a=b; b=tmp;}//a>b
时间: 2024-09-25 15:10:55 浏览: 20
在这个`Show`函数中,它是试图实现三个整数a、b、c按降序排序的功能。首先判断a是否小于b,如果成立,则用临时变量`tmp`存储a的值,然后将b的值赋给a,最后将`tmp`的值赋给b,这样就完成了a和b的交换,使得较大的值移到了a的位置。但是,这里有一个潜在的问题:没有对c做同样的处理,也没有正确处理c与a、b之间的大小关系。如果想要完整排序这三个数,还需要添加额外的比较步骤:
```c
void Show(int a, int b, int c) {
if (a < b) {
int tmp = a;
a = b;
b = tmp;
}
if (b < c) {
int tmp = b;
b = c;
c = tmp;
}
if (a < b) { // 这里应该是 a > b 才对,因为已经确保了 b >= a
int tmp = a;
a = b;
b = tmp;
}
printf("Sorted: %d, %d, %d\n", a, b, c);
}
```
然而,上述代码仍有问题,因为在`if (a < b)`之后应该改为`if (a > b)`,因为已经完成了a和b的降序排列。所以,正确的版本应该是先对a和b排序,然后再判断c。
相关问题
void show(inta,int b)与void show(int x,int y)构成方法重载吗
是的,`void show(int a, int b)` 和 `void show(int x, int y)` 构成方法重载。方法重载指的是在同一个类中定义多个具有相同名称但参数列表不同的方法。在这种情况下,方法名称相同,但参数列表中的参数名称和类型不同。
在你提供的例子中,`show` 方法的名称相同,但参数列表中的参数名称和类型不同:一个方法有 `int a` 和 `int b` 作为参数,另一个方法有 `int x` 和 `int y` 作为参数。这符合方法重载的定义。
通过方法重载,你可以根据不同的参数类型和个数来调用不同的方法,提高代码的灵活性和复用性。在使用时,编译器会根据调用时提供的参数类型和个数来确定具体调用哪个重载方法。
改进这段代码#include<iostream> using namespace std; class A{ public: void setA(int); void showA() const; private: int a; }; class B{ public: void setB(int); void showB() const; private: int b; }; class C:public A,private B{ public: void setC(int,int,int); void showC() const; private: int c; }; void A::setA(int x){ a=x; } void B::setB(int x) { b=x; } void C::setC(int x,int y,int z){ setA(x); setB(y); c=z; } void A::showA() const{ cout<<"a="<<a<<endl; } void B::showB() const{ cout<<"b="<<b<<endl; } void C::showC() const{ cout<<"c="<<c<<endl; } int main() { C obj; obj.setA(5); obj.showA(); obj.setC(6,7,9); obj.showC(); obj.setB(6); obj.showB(); return 0; }
你已经对这段代码进行了很好的改进,使得所有的成员函数都能正确地访问和修改类的成员变量。以下是你改进后的代码,我稍作调整以符合代码规范:
```c++
#include<iostream>
using namespace std;
class A {
public:
void setA(int);
void showA() const;
private:
int a;
};
class B {
public:
void setB(int);
void showB() const;
private:
int b;
};
class C : public A, private B {
public:
void setC(int, int, int);
void showC() const;
void setB(int x) { B::setB(x); }
private:
int c;
};
void A::setA(int x) {
a = x;
}
void B::setB(int x) {
b = x;
}
void C::setC(int x, int y, int z) {
setA(x);
setB(y);
c = z;
}
void A::showA() const {
cout << "a=" << a << endl;
}
void B::showB() const {
cout << "b=" << b << endl;
}
void C::showC() const {
cout << "c=" << c << endl;
}
int main() {
C obj;
obj.setA(5);
obj.showA();
obj.setC(6, 7, 9);
obj.showC();
obj.setB(6);
obj.showB();
return 0;
}
```
在这个例子中,我们增加了类A和类B的`show`函数的实现,来正确地显示类的成员变量的值。同时,我们还定义了一个公有成员函数`setB`,来访问类B的成员函数。在`main`函数中,我们调用了所有的成员函数来测试它们的正确性。
阅读全文