用函数求三个数中的最大值,最小值,中间值,并排序

青城山下游 2019-05-22 03:36:36
运行结果为什么是不正确的数和两个随机数,求大佬指导解答
...全文
1056 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
CaptainXue 2019-05-23
  • 打赏
  • 举报
回复
引用 5 楼 weixin_42485719 的回复:
[quote=引用 4 楼 weixin_42485719的回复:][quote=引用 2 楼 袁君元的回复:]我写了一下程序,代码如下:

#include<iostream>
using namespace std;

int main() {
int a,b,c;
int qmax(int a,int b,int c);
int qmin(int a,int b,int c);
scanf("%d%d%d",&a,&b,&c);
int max=qmax(a,b,c);
int min=qmin(a,b,c);
int mid=a+b+c-(max+min);
printf("最大值为:%d,中间值为:%d,最小值为:%d\n",max,mid,min);
printf("排序后:\n");
printf("%d %d %d\n",max,mid,min);
return 0;
}
int qmax(int a,int b,int c){
int max;
max=(a>b)?(a>c?a:c):(b>c?b:c);
return max;
}
int qmin(int d,int e,int f){
int min;
min=(d<e)?(d<f?d:f):(e<f?e:f);
return min;
}

运行的结果如图:

你的程序这样看来没有问题

#include<stdio.h>
int main()
{
int x,y,z,max,middle,min;
int qmax(int a,int b,int c);
int qmin(int a,int b,int c);
printf("请输入3个数字:");
scanf("%d,%d,%d",&x,&y,&z);
max=qmax(x,y,z);
min=qmin(x,y,z);
middle=(x+y+z)-(max+min);
printf("最大值=%d,中间值=%d,最小值=%d\n",max,middle,min);
printf("\n");
printf("排序:%d,%d,%d",max,middle,min);
return 0;
}
int qmax(int a,int b,int c)
{
int max;
max=(a>b)?(a>c?a:c):(b>c?b:c);
return max;
}
int qmin(int d,int e,int f)
{
int min;
min=(d<e)?(d<f?d:f):(e<f?e:f);
return min;
}[/quote]
运行结果还是不对呀,和我之前发的结果一样[/quote]

之所以不对,是因为你的scanf格式控制中有逗号,而你输入数据的时候,数字之间没有逗号,你应该输入:9,4,5 这样才对!

青城山下游 2019-05-23
  • 打赏
  • 举报
回复
引用 3 楼 早打大打打核战争的回复:
这题唯一的小技巧是直接排序:

#include <stdio.h>

void sort(int &a, int &b, int &c)
{
if (b > c) c += b -= c, b = c - b;
if (a > b) b += a -= b, a = b - a;
if (b > c) c += b -= c, b = c - b;
}

int main()
{
int a, b, c;

puts("enter 3 numbers:");
scanf("%d%d%d", &a, &b, &c);
sort(a, b, c);
printf("max = %d, min = %d, median = %d\n", c, a, b);

return 0;
}
之前我也想调用函数的 但不知道怎么操作,谢谢啦
青城山下游 2019-05-23
  • 打赏
  • 举报
回复
引用 6 楼 袁君元的回复:
[quote=引用 5 楼 weixin_42485719 的回复:]
[quote=引用 4 楼 weixin_42485719的回复:][quote=引用 2 楼 袁君元的回复:]我写了一下程序,代码如下:

#include<iostream>
using namespace std;

int main() {
int a,b,c;
int qmax(int a,int b,int c);
int qmin(int a,int b,int c);
scanf("%d%d%d",&a,&b,&c);
int max=qmax(a,b,c);
int min=qmin(a,b,c);
int mid=a+b+c-(max+min);
printf("最大值为:%d,中间值为:%d,最小值为:%d\n",max,mid,min);
printf("排序后:\n");
printf("%d %d %d\n",max,mid,min);
return 0;
}
int qmax(int a,int b,int c){
int max;
max=(a>b)?(a>c?a:c):(b>c?b:c);
return max;
}
int qmin(int d,int e,int f){
int min;
min=(d<e)?(d<f?d:f):(e<f?e:f);
return min;
}

运行的结果如图:

你的程序这样看来没有问题

#include<stdio.h>
int main()
{
int x,y,z,max,middle,min;
int qmax(int a,int b,int c);
int qmin(int a,int b,int c);
printf("请输入3个数字:");
scanf("%d,%d,%d",&x,&y,&z);
max=qmax(x,y,z);
min=qmin(x,y,z);
middle=(x+y+z)-(max+min);
printf("最大值=%d,中间值=%d,最小值=%d\n",max,middle,min);
printf("\n");
printf("排序:%d,%d,%d",max,middle,min);
return 0;
}
int qmax(int a,int b,int c)
{
int max;
max=(a>b)?(a>c?a:c):(b>c?b:c);
return max;
}
int qmin(int d,int e,int f)
{
int min;
min=(d<e)?(d<f?d:f):(e<f?e:f);
return min;
}[/quote]
运行结果还是不对呀,和我之前发的结果一样[/quote]

之所以不对,是因为你的scanf格式控制中有逗号,而你输入数据的时候,数字之间没有逗号,你应该输入:9,4,5 这样才对!

[/quote] 哦,这样呀,真的非常感谢了
青城山下游 2019-05-22
  • 打赏
  • 举报
回复
引用 4 楼 weixin_42485719的回复:
[quote=引用 2 楼 袁君元的回复:]我写了一下程序,代码如下:

#include<iostream>
using namespace std;

int main() {
  int a,b,c;
  int qmax(int a,int b,int c);
   int qmin(int a,int b,int c);
  scanf("%d%d%d",&a,&b,&c);
  int max=qmax(a,b,c);
  int min=qmin(a,b,c);
  int mid=a+b+c-(max+min);
  printf("最大值为:%d,中间值为:%d,最小值为:%d\n",max,mid,min);
  printf("排序后:\n");
  printf("%d %d %d\n",max,mid,min);
	return 0;
}
int qmax(int a,int b,int c){
	int max;
	max=(a>b)?(a>c?a:c):(b>c?b:c);
	return max;
}
int qmin(int d,int e,int f){
	int min;
	min=(d<e)?(d<f?d:f):(e<f?e:f);
	return min;
}
运行的结果如图: 你的程序这样看来没有问题
#include<stdio.h> int main() { int x,y,z,max,middle,min; int qmax(int a,int b,int c); int qmin(int a,int b,int c); printf("请输入3个数字:"); scanf("%d,%d,%d",&x,&y,&z); max=qmax(x,y,z); min=qmin(x,y,z); middle=(x+y+z)-(max+min); printf("最大值=%d,中间值=%d,最小值=%d\n",max,middle,min); printf("\n"); printf("排序:%d,%d,%d",max,middle,min); return 0; } int qmax(int a,int b,int c) { int max; max=(a>b)?(a>c?a:c):(b>c?b:c); return max; } int qmin(int d,int e,int f) { int min; min=(d<e)?(d<f?d:f):(e<f?e:f); return min; }[/quote] 运行结果还是不对呀,和我之前发的结果一样
青城山下游 2019-05-22
  • 打赏
  • 举报
回复
引用 2 楼 袁君元的回复:
我写了一下程序,代码如下:

#include<iostream>
using namespace std;

int main() {
  int a,b,c;
  int qmax(int a,int b,int c);
   int qmin(int a,int b,int c);
  scanf("%d%d%d",&a,&b,&c);
  int max=qmax(a,b,c);
  int min=qmin(a,b,c);
  int mid=a+b+c-(max+min);
  printf("最大值为:%d,中间值为:%d,最小值为:%d\n",max,mid,min);
  printf("排序后:\n");
  printf("%d %d %d\n",max,mid,min);
	return 0;
}
int qmax(int a,int b,int c){
	int max;
	max=(a>b)?(a>c?a:c):(b>c?b:c);
	return max;
}
int qmin(int d,int e,int f){
	int min;
	min=(d<e)?(d<f?d:f):(e<f?e:f);
	return min;
}
运行的结果如图: 你的程序这样看来没有问题
#include<stdio.h> int main() { int x,y,z,max,middle,min; int qmax(int a,int b,int c); int qmin(int a,int b,int c); printf("请输入3个数字:"); scanf("%d,%d,%d",&x,&y,&z); max=qmax(x,y,z); min=qmin(x,y,z); middle=(x+y+z)-(max+min); printf("最大值=%d,中间值=%d,最小值=%d\n",max,middle,min); printf("\n"); printf("排序:%d,%d,%d",max,middle,min); return 0; } int qmax(int a,int b,int c) { int max; max=(a>b)?(a>c?a:c):(b>c?b:c); return max; } int qmin(int d,int e,int f) { int min; min=(d<e)?(d<f?d:f):(e<f?e:f); return min; }
CaptainXue 2019-05-22
  • 打赏
  • 举报
回复
我写了一下程序,代码如下:

#include<iostream>
using namespace std;

int main() {
  int a,b,c;
  int qmax(int a,int b,int c);
   int qmin(int a,int b,int c);
  scanf("%d%d%d",&a,&b,&c);
  int max=qmax(a,b,c);
  int min=qmin(a,b,c);
  int mid=a+b+c-(max+min);
  printf("最大值为:%d,中间值为:%d,最小值为:%d\n",max,mid,min);
  printf("排序后:\n");
  printf("%d %d %d\n",max,mid,min);
	return 0;
}
int qmax(int a,int b,int c){
	int max;
	max=(a>b)?(a>c?a:c):(b>c?b:c);
	return max;
}
int qmin(int d,int e,int f){
	int min;
	min=(d<e)?(d<f?d:f):(e<f?e:f);
	return min;
}
运行的结果如图: 你的程序这样看来没有问题
CaptainXue 2019-05-22
  • 打赏
  • 举报
回复
你还是直接粘贴代码吧!难道还要我们再写一遍代码
  • 打赏
  • 举报
回复
这题唯一的小技巧是直接排序:

#include <stdio.h>

void sort(int &a, int &b, int &c)
{
if (b > c) c += b -= c, b = c - b;
if (a > b) b += a -= b, a = b - a;
if (b > c) c += b -= c, b = c - b;
}

int main()
{
int a, b, c;

puts("enter 3 numbers:");
scanf("%d%d%d", &a, &b, &c);
sort(a, b, c);
printf("max = %d, min = %d, median = %d\n", c, a, b);

return 0;
}

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧