这是我正在进行的任务。我很确定这是我错过的一些小事,但是看到我在为其他课程学习后我正努力工作,我相信另一组眼睛可以帮助我。我应该有这样的事情:
please enter first value---> 5.2
please enter second value---> 1.0
please enter third value-->7.1
smallest value: 1.0
largest value: 7.1
然而,得到一些奇怪的数字,如002C128F为最小值,002C128A为最大值。
我将不胜感激任何反馈。我不是要求完成我的作业。我只是想得到一些指导,看到我被卡住了。也许我的if
陈述错了?感谢您的时间。
#include <iostream>
using namespace std;
double min2 (double &a, double &b,double &c)
{
double min=0;
if(a<b)
min= a;
else
min=b;
if (c<b)
min=c;
return min;
}
double max2(double &a, double &b, double &c)
{
double max=0;
if(a>b)
max=a;
else
max=b;
if (c>b)
max=c;
return max;
}
int main()
{
double a,b,c=0;
min2(a,b,c);
max2(a, b, c);
cout << "Author: Jose Soto.\n";
cout<<"enter first value: ";
cin>>a;
cout<<"enter second value: ";
cin>>b;
cout<<"enter third value:";
cin>>c;
cout<<"The smallest value is: "<<min2<<endl;
cout<<"The largest value is: "<<max2<<endl;
}
答案 0 :(得分:5)
从不使用min2
和max2
函数的返回值。您正在打印函数的地址。
也许你正在寻找:
// ...
cout << "The smallest value is: " << min2(a, b, c) << endl;
cout << "The largest value is: " << max2(a, b, c) << endl;
您必须在获得用户输入后调用这些函数,而不是之前。
答案 1 :(得分:1)
cout<<"The smallest value is: "<<min2<<endl;
打印函数的地址,它不会调用它。
将其更改为
cout<<"The smallest value is: "<<min2(a,b,c)<<endl;
答案 2 :(得分:1)
除了已经讲过的内容之外,您的功能也存在逻辑错误:
if (c<b)
min=c;
应该是
if (c<min)
min=c;
同样适用于最大
答案 3 :(得分:1)
你得到一些奇怪的数字,因为你传递给函数min2和max2未初始化的变量a和b。您只用0初始化变量c。
int main()
{ double a,b,c=0;
min2(a,b,c);
max2(a, b, c);
首先,您必须输入变量a,b,c的值,然后才能输入变量min2和max2。
他们自己的功能也是无效的。并且没有必要将它们的参数声明为引用。
在这些陈述中
cout<<"The smallest value is: "<<min2<<endl;
cout<<"The largest value is: "<<max2<<endl;
你没有调用这些功能。您输出他们的地址。
有效代码可以采用以下方式:
#include <iostream>
using namespace std;
double min( double a, double b, double c )
{
double min = a;
if ( b < min ) min = b;
if ( c < min ) min = c;
return min;
}
double max( double a, double b, double c )
{
double max = a;
if ( max < b ) max = b;
if ( max < c ) max = c;
return max;
}
int main()
{
double a, b, c;
cout << "Author: Jose Soto.\n";
cout << "enter first value: ";
cin >> a;
cout << "enter second value: ";
cin >> b;
cout << "enter third value:";
cin >> c;
cout << "The smallest value is: " << min( a, b, c ) << endl;
cout << "The largest value is: " << max( a, b, c ) << endl;
return 0;
}
考虑到标准C ++库已经具有std :: min和std :: max的功能。例如,您可以将它们称为
std::min( { a, b, c } );
std::max( { a, b, c } );
答案 4 :(得分:0)
试试这个
#include <iostream>
#include <string.h>
using namespace std;
int findMax(int a, int b, int c)
{
if(a > b)
{
if(a > c)
{
return a;
}
else
{
return c;
}
}
if( b > c)
{
return b;
}
else
{
return c;
}
}
main()
{
int a,b,c;
cout<<"enter first value: ";
cin>>a;
cout<<"enter second value: ";
cin>>b;
cout<<"enter third value:";
cin>>c;
cout<<"\nA : "<<a<<endl;
cout<<"\nB : "<<b<<endl;
cout<<"\nC : "<<c<<endl;
cout<<"\nMax : "<<findMax(a,b,c)<<endl;
}
答案 5 :(得分:-1)
以下两个功能:
double min2 (double &a, double &b,double &c)
double max2(double &a, double &b, double &c)
您已使用&
后跟变量名。&
用于通过地址调用函数调用(即它使用指针存储函数期间发送的参数的地址)呼叫。
有两种类型的函数调用:
1.Call by Value
2.致电地址
按值调用仅复制值,并且通常在所做的更改不会反映到原始变量时使用。
例如:
void increment(int a)
{
a++;
cout<<a;
}
int main()
{
int x=5;
cout<<x;
increment(x);
cout<<x;
return 0;
}
输出: 五 6 5
所以使用没有&
s