C++编写一个程序,用来求2个或3个正整数中最大的数,不带默认参数?
发布网友
发布时间:2022-04-23 14:02
我来回答
共3个回答
热心网友
时间:2023-10-17 04:19
这个只能使用函数的重载做,注意函数名一样,但是参数个数不一样:
#include <iostream>
using namespace std;
//比较两个数,输出最大值
int compareNumbers(int numA,int numB){
return numA>numB?numA:numB;
}
//比较三个数,输出最大值
int compareNumbers(int numA,int numB,int numC){
int i,j,temp,num[3];
num[0]=numA;
num[1]=numB;
num[2]=numC;
for(i=0;i<3;i++){
for(j=0;j<3-i;j++){
if(num[j]<num[j+1]){
temp=num[j];
num[j]=num[j+1];
num[j+1]=temp;
}
}
}
return num[0];
}
//输入并输出两个数的比较结果
void compareTwoNums(){
int numA,numB;
cout<<"请输入第一个数:";
cin>>numA;
while(numA<0){
cout<<"数字必须大于0!\n"<<endl;
cout<<"请输入第一个数:";
cin>>numA;
}
cout<<"请输入第二个数:";
cin>>numB;
while(numB<0||numA==numB){
cout<<"数字必须大于0,且两个数不能相等!\n"<<endl;
cout<<"请输入第二个数:";
cin>>numB;
}
cout<<"这两个数中的最大的数是:"<<compareNumbers(numA,numB)<<endl;
}
//输入并输出三个数的比较结果
void compareThreeNums(){
int numA,numB,numC;
cout<<"请输入第一个数:";
cin>>numA;
while(numA<0){
cout<<"数字必须大于0!\n"<<endl;
cout<<"请输入第一个数:";
cin>>numA;
}
cout<<"请输入第二个数:";
cin>>numB;
while(numB<0||numA==numB){
cout<<"数字必须大于0,且三个数不能相等!\n"<<endl;
cout<<"请输入第二个数:";
cin>>numB;
}
cout<<"请输入第三个数:";
cin>>numC;
while(numC<0||numA==numB||numA==numC||numB==numC){
cout<<"数字必须大于0,且三个数不能相等!\n"<<endl;
cout<<"请输入第三个数:";
cin>>numC;
}
cout<<"这三个数中的最大的数是:"<<compareNumbers(numA,numB,numC)<<endl;
}
void main(){
int choose;
cout<<"1.输出两个数的最大值"<<endl;
cout<<"2.输出三个数的最大值"<<endl;
cout<<"请输入你的选择(1和2):";
cin>>choose;
while(choose>2||choose<1){
cout<<"只能输入1和2,请重新输入!\n"<<endl;
cout<<"请输入你的选择(1和2):";
cin>>choose;
}
if(choose==1){
compareTwoNums();
}else if(choose==2){
compareThreeNums();
}
}
热心网友
时间:2023-10-17 04:19
使用单链表找到n个数值中最大值思路;
输入格式:123 456 789 ... 回车,
创建一个结构体头结点,用一个指针指向头结点;
int i=0;
char ch;
while(ch=getchar())用一个char变量循环接收字符,
if(ch != ' ')
i = i*10+ch-'0';这样遇到空格时 i 的值就是123;
创建链表节点,并赋值;
i=0;i的值清零,
ch 的值为 '\n' 的时候break;跳出while循环;
使用头结点指针遍历链表找到最大值;
热心网友
时间:2023-10-17 04:20
按ctrl+Z中止输入
#include <iostream>
using namespace std ;
int main() {
int n,max;
cin>>n;
max=n;
while(cin>>n)
if(n>max) max=n;
cout<<"max="<<max<<endl;
}
热心网友
时间:2023-10-17 04:19
这个只能使用函数的重载做,注意函数名一样,但是参数个数不一样:
#include <iostream>
using namespace std;
//比较两个数,输出最大值
int compareNumbers(int numA,int numB){
return numA>numB?numA:numB;
}
//比较三个数,输出最大值
int compareNumbers(int numA,int numB,int numC){
int i,j,temp,num[3];
num[0]=numA;
num[1]=numB;
num[2]=numC;
for(i=0;i<3;i++){
for(j=0;j<3-i;j++){
if(num[j]<num[j+1]){
temp=num[j];
num[j]=num[j+1];
num[j+1]=temp;
}
}
}
return num[0];
}
//输入并输出两个数的比较结果
void compareTwoNums(){
int numA,numB;
cout<<"请输入第一个数:";
cin>>numA;
while(numA<0){
cout<<"数字必须大于0!\n"<<endl;
cout<<"请输入第一个数:";
cin>>numA;
}
cout<<"请输入第二个数:";
cin>>numB;
while(numB<0||numA==numB){
cout<<"数字必须大于0,且两个数不能相等!\n"<<endl;
cout<<"请输入第二个数:";
cin>>numB;
}
cout<<"这两个数中的最大的数是:"<<compareNumbers(numA,numB)<<endl;
}
//输入并输出三个数的比较结果
void compareThreeNums(){
int numA,numB,numC;
cout<<"请输入第一个数:";
cin>>numA;
while(numA<0){
cout<<"数字必须大于0!\n"<<endl;
cout<<"请输入第一个数:";
cin>>numA;
}
cout<<"请输入第二个数:";
cin>>numB;
while(numB<0||numA==numB){
cout<<"数字必须大于0,且三个数不能相等!\n"<<endl;
cout<<"请输入第二个数:";
cin>>numB;
}
cout<<"请输入第三个数:";
cin>>numC;
while(numC<0||numA==numB||numA==numC||numB==numC){
cout<<"数字必须大于0,且三个数不能相等!\n"<<endl;
cout<<"请输入第三个数:";
cin>>numC;
}
cout<<"这三个数中的最大的数是:"<<compareNumbers(numA,numB,numC)<<endl;
}
void main(){
int choose;
cout<<"1.输出两个数的最大值"<<endl;
cout<<"2.输出三个数的最大值"<<endl;
cout<<"请输入你的选择(1和2):";
cin>>choose;
while(choose>2||choose<1){
cout<<"只能输入1和2,请重新输入!\n"<<endl;
cout<<"请输入你的选择(1和2):";
cin>>choose;
}
if(choose==1){
compareTwoNums();
}else if(choose==2){
compareThreeNums();
}
}
热心网友
时间:2023-10-17 04:19
使用单链表找到n个数值中最大值思路;
输入格式:123 456 789 ... 回车,
创建一个结构体头结点,用一个指针指向头结点;
int i=0;
char ch;
while(ch=getchar())用一个char变量循环接收字符,
if(ch != ' ')
i = i*10+ch-'0';这样遇到空格时 i 的值就是123;
创建链表节点,并赋值;
i=0;i的值清零,
ch 的值为 '\n' 的时候break;跳出while循环;
使用头结点指针遍历链表找到最大值;
热心网友
时间:2023-10-17 04:20
按ctrl+Z中止输入
#include <iostream>
using namespace std ;
int main() {
int n,max;
cin>>n;
max=n;
while(cin>>n)
if(n>max) max=n;
cout<<"max="<<max<<endl;
}