| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 9725 人关注过本帖
标题:请问如何使自定义的一个函数能返回两个值
只看楼主 加入收藏
睂幽冥
Rank: 2
等 级:论坛游民
帖 子:11
专家分:18
注 册:2013-3-17
结帖率:100%
收藏
已结贴  问题点数:30 回复次数:14 
请问如何使自定义的一个函数能返回两个值
我自己根据书上“计算某日是该年的第几天”,改写为“计算某年的某天是几月几日”,在自定义一个函数后不能同时返回月和日,只能定义两个函数分别计算月和日。
我想问一下能不能通过一个函数就能得到月和日。
#include "stdio.h"
int leap(int y)
{
    if(y%4==0&&y%100!=0||y%400==0)
        return 1;
    else
        return 0;
}
int month(int y,int n)
{
    int i;
    int a[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};
    int b[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    if(leap(y)==1)
        for(i=0;n>0;i++)
            n-=a[i];
    else
        for(i=0;n>0;i++)
            n-=a[i];
        return i;
}
int day(int y,int n)
{
    int j,d;
    int a[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};
    int b[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    if(leap(y)==1)
        for(j=0;n>0;j++)
        {  d=n;
        n-=a[j];}
    else
        for(j=0;n>0;j++)
        {  d=n;
        n-=a[j];}
            return d;
}
void main()
{
    int y,n,i,d;
    printf("请输入年数、天数:\n");
    scanf("%d%d",&y,&n);
    i=month(y,n)-1;
    d=day(y,n);
    printf("%d %d\n",i,d);
}

搜索更多相关主题的帖子: include return 如何 
2013-03-20 23:28
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:3 
可以的,可以通过实参带回来,或者把返回值封装成结构体,多少个都可以

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2013-03-20 23:37
czzdcn123
Rank: 7Rank: 7Rank: 7
来 自:江西
等 级:黑侠
威 望:3
帖 子:258
专家分:510
注 册:2013-3-7
收藏
得分:3 
来学习
2013-03-20 23:47
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:3 
用指针  返回几个都无所谓

DO IT YOURSELF !
2013-03-21 06:12
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
收藏
得分:3 
用结构体封装不同类型数据,或者用数组表示同类型数据,然后返回结构体指针或者数组名,本质都是用指针来返回多个参数

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2013-03-21 06:20
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:3 
方法一:设置全局变量,这样你在形参中改变全局变量,在实参中也会有效。所以你可以在形参中改变多个全局变量的值,那么在实参中就相当于返回多个值。方法二:如果你用数组名作为形参,那么你改变数组内容,比如排序,或者进行加减运算,回到实参时依然是有效的。这样也会返回一组值。方法三:可以利用指针变量,这个原理和方法二是一样的,因为数组名本身就是数组首元素的地址。就不多说了。方法四:如果你学过C++,可以引用参数

Maybe
2013-03-21 08:14
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:3 
1...std::pair,或者std::tuple
2...参数写指针

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-03-21 08:23
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:0 
以下是引用peach5460在2013-3-21 08:23:02的发言:

1...std::pair,或者std::tuple
2...参数写指针

耶...忘了,这是c板块
用第二种吧

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-03-21 08:23
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:3 
这种小代码,还不如直接用全局变量


[fly]存在即是合理[/fly]
2013-03-21 10:29
睂幽冥
Rank: 2
等 级:论坛游民
帖 子:11
专家分:18
注 册:2013-3-17
收藏
得分:0 
回复 9楼 azzbcc
我才刚学c语言不到一周啊,老师才教完for,while和do while语句,上面说的基本没几个认识的
2013-03-21 12:28
快速回复:请问如何使自定义的一个函数能返回两个值
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018622 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved