c语言 八字排盘_八字排盘代码_段small誉的博客-程序员秘密

技术标签: 笔记  

#include<stdio.h>
#include<math.h>
int main()
{
	int runnian(int y);
	int tianshu(int y, int m, int d);
	int wnl(int y, int m, int d);
	int year, month, date, hour, minute,shichen;
	float x, r=0;
	long long int Days,F1,F;
	int Bazi[2][4];
	scanf("%d/%d/%d/%d/%d", &year, &month, &date, &hour, &minute);
	if (hour >= 23)
		date += 1;
	Days = wnl(year, month, date);
	Bazi[0][2] = (Days + 5) % 10;           //日元
	Bazi[1][2] = (Days + 3) % 12;            //日支
	if (hour % 2 == 0)
		shichen = hour / 2 + 1;
	else shichen = hour / 2 + 2;
	Bazi[1][3] = shichen % 12;               //时支
	Bazi[0][3] = (Bazi[0][2] * 2 + Bazi[1][3] - 2) % 10;           //时干
	F1 = tianshu(year, month, date);
	x = (month - 1) * 2;
	for (int i = 1900;i < year;i++)
		if (runnian(i) == 1)
			r += 1;
	F = (int)(0.242 * (year * 1.0 - 1900) + 6.2 + 15.22 * x - 1.9 * sin(0.262 * x) - r);
	if (F1 >= F)
		month -= 1;
	else month -= 2;
	if (month <= 0)
	{
		year -= 1;
		month += 12;
	}
	Bazi[0][0] = (year + 7) % 10;       //年干
	Bazi[1][0] = (year + 9) % 12;        //年支
	Bazi[1][1] = (month + 2) % 12;         //月令
	Bazi[0][1] = (Bazi[0][0] * 2 + month) % 10;       //月干
	for (int i = 0;i < 2;i++)
	{
		for (int j = 0;j < 4;j++)
			if (i == 0)
				switch (Bazi[i][j])
				{
				case 1:printf("甲\t");break;
				case 2:printf("乙\t");break;
				case 3:printf("丙\t");break;
				case 4:printf("丁\t");break;
				case 5:printf("戊\t");break;
				case 6:printf("己\t");break;
				case 7:printf("庚\t");break;
				case 8:printf("辛\t");break;
				case 9:printf("壬\t");break;
				default:printf("癸\t");break;
				}
			else
				switch (Bazi[i][j])
				{
				case 1:printf("子\t");break;
				case 2:printf("丑\t");break;
				case 3:printf("寅\t");break;
				case 4:printf("卯\t");break;
				case 5:printf("辰\t");break;
				case 6:printf("巳\t");break;
				case 7:printf("午\t");break;
				case 8:printf("未\t");break;
				case 9:printf("申\t");break;
				case 10:printf("酉\t");break;
				case 11:printf("戌\t");break;
				default:printf("亥\t");break;
				}
		printf("\n");
	}
	return 0;
}
int runnian(int y)
{
	if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0))
		return 1;
	else return 0;
}
int wnl(int y, int m, int d)
{
	int tianshu(int y, int m, int d);
	int z,r=0;
	for (int i = 1900;i < y;i++)
		if (runnian(i) == 1)
			r += 1;
	z = (y - 1901) * 365 + r + tianshu(y, m, d);
	return(z);
	
}
int tianshu(int y, int m, int d)
{
	int days=0;
	for (int i = 0;i < m;i++)
	{
		if (i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10 || i == 12)
			days += 31;
		else if (i == 2)
			days += 28;
		else if (i==4||i==6||i==9||i==11)
			days += 30;
	}
	days += d;
	if (runnian(y) == 1 && m > 2) 
		days += 1;
	return(days);
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_48574790/article/details/106687542

智能推荐

为什么大部分的程序员成不了架构师?为什么?_互联网架构的博客-程序员秘密

小团队一般 10 人左右,其中常常是技术最牛的人做架构师(或TL)。所以,架构师在广大码农中的占比大概平均不到 10%。而架构师也可以分为初级、中级、高级三档,江湖上真正...

常见排序算法总结_xiao_nian的博客-程序员秘密

一、概述          我们在平时的开发中,排序算法可以说是最常用的算法之一,不同的排序算法,有着不一样的性能消耗,虽说前端开发对算法的要求没有那么高,但是对于一些常见的算法,我们还是要掌握的,它属于一个开发者的基本功,今天,我们就来总结一下常见的排序算法,请看下面这张表:下面排序都以由小到大排序为目的 二、冒泡排序1、基本思想:两个数比较大小,较大的往下沉,较小的冒上来...

字符串的展开(字符串处理)_字符串展开_背着代码的蜗牛的博客-程序员秘密

字符串的展开来源: NOIP 2007 提高第二题 题目描述: 在初赛普及组的“阅读程序写结果”的问题中,我们曾给出一个字符串展开的例子:如果在输入的字符串中,含有类似于“d-h”或者“4-8”的字串,我们就把它当作一种简写,输出时,用连续递增的字母获数字串替代其中的减号,即,将上面两个子串分别输出为“defgh”和“45678”。在本题中,我们通过增加一些参数的设置,使字符串的展开更为灵活。

java hmac digest_JAVA加密算法(2)- 消息摘要算法(MD5、SHA、HMAC)_SanSiro等100万人的博客-程序员秘密

消息摘要的概念对消息通过一个单向Hash算法进行计算,得到一个唯一的结果。每个消息对应一个唯一结果,所有结果的长度固定。消息摘要的分类(1)MD5(Message Digest)消息摘要算法(2)SHA(Secure Hash Algorithm)安全散列算法(3)MAC(Message Authentication Code)消息认证码算法,结合了MD5和SHA的优势,同时用密钥对摘要进行加密,...

docker 变量_具有组成变量替换功能的Docker桥和覆盖网络_danpob13624的博客-程序员秘密

docker 变量 Docker多主机联网允许您创建虚拟网络并将容器连接到它们,从而可以创建适合您的应用程序的网络拓扑。 可以为单个主机创建桥接网络,可以为多个主机创建覆盖网络。 创建特定于应用程序的网络可为容器提供完全隔离。 Docker Compose文件可以针对单个主机,并且--x-networking将创建该应用程序专有的桥接网络。 如果示例应用程序针对多个主机(例如使用Docke...

java连接数据库的工具类_java数据库连接工具类_断翅蝴蝶非的博客-程序员秘密

声明以下代码并非本人所写,也不是转载。只是参与项目中,总结出来的而已。public class DBHelper { private final static Log log = LogFactory.getLog(DBHelper.class.getClass()); //获得properties文件的各个参数 private static String driver =

随便推点

Unity Texture 下载、存储、使用_unity texture下载_木之子楠的博客-程序员秘密

网络下载图片IEnumerator DownloadTexture(string url){ WWW www = new WWW (url); yield return www; if (www.isDone) { texture = www.texture; }}保存图片到本地void SaveTexture(){ string ...

2016 ACM/ICPC亚洲区青岛站现场赛(部分题解)_aisebu7819的博客-程序员秘密

摘要  本文主要列举并求解了2016 ACM/ICPC亚洲区青岛站现场赛的部分真题,着重介绍了各个题目的解题思路,结合详细的AC代码,意在熟悉青岛赛区的出题策略,以备战2018青岛站现场赛。HDU 5984 Pocky 题意  给出一根棒子(可以吃的)的长度x和切割过程中不能小于的长度d,每次随机的选取一个位置切开,吃掉左边的一半,对右边的棒子同样操作,直至剩余...

kaggle上传慢_Kaggle使用:如何顺利上传和下载数据?_weixin_39860583的博客-程序员秘密

自从Kaggle被谷歌收购后,Kaggle上的数据下载和kernel使用到了很多的谷歌应用。与参赛选手强相关的是比赛数据集下载和文件的上传。如何顺利的上传和下载数据呢,本文将给出三种解决方案。修改DNS由于国内运营商网络管控的原因,导致国内访问国外的速度都非常慢,所以在下载Kaggle数据集时可以尝试修改系统DNS。这里比较推荐以下几个DNS:谷歌:8.8.8.8,8.8.4.4韩国:1...

python oss上获取指定bucket,指定时间范围内文件_persistencequxi的博客-程序员秘密

# -*- coding: utf-8 -*-import sysimport oss2import timeimport tracebackPREFIX = 'http://'class find_oss_file(): def __init__(self): pass # ossinfo { # ossinfo ={ACCESS_KEY_ID,ACCESS

java 类的对象比较大小以及排序实现方式_灵颖桥人的博客-程序员秘密

java中类的对象比较大小进行排序,不像C++那样可以重载运算符比较大小,java中需要实现特定的接口或者自己给类加上逻辑大小比较函数,个人认为有以下三种方式吧:一、类实现java.util.Comparator&amp;lt;T&amp;gt;接口Comparator中有个接口,如下: int compare(T o1, T o2);比较用来排序的两个参数。根据第一个参数小于、等于或大于第二个参数分别返回负整数...

推荐文章

热门文章

相关标签