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

青城山下游 2019-05-22 03:36:36
运行结果为什么是不正确的数和两个随机数,求大佬指导解答
...全文
1199 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;
}

内容概要:本文围绕“可再生能源发电与电动汽车的协同调度策略”展开硕士论文级别的研究与复现工作,基于Matlab平台构建了高比例可再生能源接入背景下电力系统与电动汽车(EV)之间的多时间尺度协同优化模型。研究重点在于应对风光发电不确定性,充分利用电动汽车作为移动储能单元的灵活充放电能力(含V2G技术),实现电网削峰填谷、提升新能源消纳效率与系统运行经济性。文中综合考虑了异质电动车集群特性、V2G过程中的损耗约束以及随机因素影响,采用如深度确定性策略梯度(DDPG)强化学习、混合整数线性规划(MILP)等先进优化算法进行解,并通过基准模型对比验证了所提自适应调度策略在提升电网稳定性、降低运行成本方面的有效性。; 适合人群:具备一定电力系统基础知识、优化理论背景及Matlab编程能力的研究生、科研人员,以及从事新能源并网、智能电网调度、车网互动(V2G)等方向的工程技术人员。; 使用场景及目标:①学习并复现已发表高水平硕士论文中的协同调度建模方法与仿真流程;②掌握将深度强化学习(如DDPG)应用于虚拟电厂、电动汽车集群调度等复杂非线性决策问题的技术路径;③为开展新能源消纳、需侧响应、微电网优化运行等相关课题的研究提供可复用的代码框架与创新思路参考。; 阅读建议:建议读者结合文中提供的完整Matlab代码与技术文档,深入理解模型构建逻辑、算法实现细节与参数设置依据,优先在Simulink/Matlab环境中运行并调试仿真案例,通过调整场景参数与算法超参,探究不同策略对调度效果的影响,从而深化对协同调度机制与智能优化方法应用的理解。

13,872

社区成员

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

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