| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 698 人关注过本帖
标题:转换公历至农历的一段小程序,尚需要进一步验证测试再测试<代码见6楼> ...
只看楼主 加入收藏
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
结帖率:99.76%
收藏
已结贴  问题点数:20 回复次数:12 
转换公历至农历的一段小程序,尚需要进一步验证测试再测试<代码见6楼>
话说

204.2除以29.5等于6余27.2  这用c代码咋写啊

换句话说  已知204.2  29.5  如何能够求出来27.2 进而获取27 这才是最终目标

[ 本帖最后由 wp231957 于 2012-12-8 21:44 编辑 ]
搜索更多相关主题的帖子: 测试 如何 
2012-12-08 21:02
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:15 
取模这个整数的运算,还真没听说过小数求模的。

不过老哥想要的功能可以实现。

做204.2 除以29.5

对结果取整

再用204.2减去29.5乘取整后的结果

最后再对结果取整即可。

这种截断取整直接将浮点值赋值给整型就好了,当然还可以强制转换或用取整函数等等。

重剑无锋,大巧不工
2012-12-08 21:19
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
我试试,这是公历转农历的公式 必须double类型啊

DO IT YOURSELF !
2012-12-08 21:24
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
收藏
得分:5 
程序代码:
#include <stdio.h>

int main(void)
{
    double result = 204.2;
    double number1 = 29.5;
    double value = 0.0;
    int buffer = 0;
    int temp = 0;

    buffer = number1*100;
    temp = result*100;
    value = temp % buffer;

    printf("%g\n",value/100);

    return 0;
}

转换那玩意真麻烦...

I have not failed completely
2012-12-08 21:25
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用神龙赖了在2012-12-8 21:25:05的发言:

#include  
 
int main(void)
{
    double result = 204.2;
    double number1 = 29.5;
    double value = 0.0;
    int buffer = 0;
    int temp = 0;
 
    buffer = number1*100;
    temp = result*100;
    value = temp % buffer;
 
    printf("%g\n",value/100);
 
    return 0;
}
转换那玩意真麻烦...
用杨兄弟的强制转换就可以  稍后 贴出代码

DO IT YOURSELF !
2012-12-08 21:42
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
转换公历至农历的一段小程序,尚需要进一步验证测试再测试
程序代码:
#include<stdio.h>
#define init_year 1977
int year_sumday(int year,int month,int day)
{
    int sum=0;
    int rui[12]={31,29,31,30,31,30,31,31,30,31,30,31};
    int ping[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    int ruiflag=0;
    if((year%4==0 &&year%100!=0) || year%400==0) ruiflag=1;
    for(int index=0;index<month-1;index++)
    {
        if(ruiflag==1) sum+=rui[index];else sum+=ping[index];
    }
    sum+=day;
    return sum;
}
int main()
{
    int day,month,year,sum=0;
    int q,r;
    int yldate,yldate2;
    printf("\nplease input year,month,day\n");
    scanf("%d %d %d",&year,&month,&day);
    sum=year_sumday(year,month,day);
    q=(year-init_year)/4;
    r=(year-init_year)%4;
    yldate2=(int)((14*q+10.6*(r+1)+sum)/29.5);
    yldate=(int)(14*q+10.6*(r+1)+sum-29.5*yldate2);
    printf("it is the %d th day.\n",yldate);
    return 0;
}

DO IT YOURSELF !
2012-12-08 21:43
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
如果是公农历转换,那小数点后只保留1位,老哥这精度可有点不够。

我以前也想过做这种转换,但我的天文知识不够也没找到更多资料,所以就放弃了。

农历的计算非常复杂,不是这么简单的公式就能搞定的

重剑无锋,大巧不工
2012-12-08 22:08
匹匹
Rank: 2
等 级:论坛游民
帖 子:2
专家分:10
注 册:2012-9-22
收藏
得分:0 
这样不可以么?
#include<stdio.h>
int main()
{
    double a,b,f;
    int k;
    scanf("%lf,%lf",&a,&b);
    k=a/b;
    f=a-k*b;
    printf("%d,%g",k,f);
}
2012-12-08 22:15
asd313346541
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-11-24
收藏
得分:0 
新手,正在研究中……
2012-12-08 22:33
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用beyondyf在2012-12-8 22:08:02的发言:

如果是公农历转换,那小数点后只保留1位,老哥这精度可有点不够。

我以前也想过做这种转换,但我的天文知识不够也没找到更多资料,所以就放弃了。

农历的计算非常复杂,不是这么简单的公式就能搞定的
多做一些测试就好了
至少目前还没有测到失败数据

DO IT YOURSELF !
2012-12-09 06:07
快速回复:转换公历至农历的一段小程序,尚需要进一步验证测试再测试<代码见6楼> ...
数据加载中...
 
   



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

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