c语言函数如何返回两个值或多个值(结合 小飞 电梯调度算法)

本文介绍了在C语言中如何实现一个函数返回两个或多个值,包括全局变量法、变量指针法(数组指针法)和结构体指针法,并通过小飞的电梯调度算法作为示例分析了各种方法的优缺点。建议使用变量指针法或结构体指针法来避免全局变量的风险。
摘要由CSDN通过智能技术生成


正常思维:使用return 语句,但每调用一次函数 return 语句只能返回一个值 。这是C语言语法规则。

该怎么实现一个函数返回两个值或是多个值?,可以采用“间接方法”。大概有三种方法:全局变量法、变量指针法、结构体指针法等。

1. 全局变量法

  全局变量法,顾名思义,将需要的变量X设为全局变量 ,在调用应用函数后,X 被附上值 ,可以直接使用X变量值。

代码分析:(编程之美 小飞 电梯调度算法

// 全局变量法 :返回多个值 
//但毕竟全局变量应用过程中有很多危险,要慎重使用。  
#include<stdio.h>
/* 问题描述*/
 /** 
     * 编程之美 小飞 电梯调度算法 
     * 在繁忙的时间,每次电梯从一层往上走时,我们只允许电梯停在其中的某一层。 
     * 所有乘客都从一楼上电梯,到达某层楼后,电梯听下来,所有乘客再从这里爬楼梯到自己的目的层。 
     * 在一楼时,每个乘客选择自己的目的层,电梯则自动计算出应停的楼层。 
     * 问:电梯停在哪一层楼,能够保证这次乘坐电梯的所有乘客爬楼梯的层数之和最少? 
      
        思路:当电梯停靠在第i层时,乘客所要爬的总的楼梯数为Y. 
        假设有N1个乘客要到达的层数<i,有N2个乘客要到达的层数==i,有N3个乘客要到达的层数>i. 
        所以有: 
        (1)当电梯改停在i-1,则 Y+(N2+N3-N1) 
        (2)当电梯改停在i+1,则 Y+(N1+N2-N3) 
        所以当后面那部分的值<0时(如(2)的N1+N2<N3),则加上负数后总的楼梯数比原来的小,即更优解. 
        因此,我们可以从第一层开始,用以上策略,考察N1,N2,N3的值,依次调整以得到最优解. 
     */  
     
     
   	int  targartfloor;
	int sumstars;
void  getMinFloors(int N ,int * nperson)
{
	//int nperson[i]   //  到达i层下的总人数  
	//int  targartfloor;
	//int sumstars;
	int N1;
  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值