C语言实践项目:天干地支

C语言实践项目:天干地支

1、已知十天干和十二地支

天干:甲、乙、丙、丁、戊、己、庚、辛、壬、癸
地支:子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥
按顺序打印出六十甲子
甲子、乙丑、丙寅、丁卯、戊辰、己巳、庚午、辛未、壬申、癸酉、
甲戌、乙亥、丙子、丁丑、戊寅、己卯、庚辰、辛巳、壬午、癸未、
甲申、乙酉、丙戌、丁亥、戊子、己丑、庚寅、辛卯、壬辰、癸巳、
甲午、乙未、丙申、丁酉、戊戌、己亥、庚子、辛丑、壬寅、癸卯、
甲辰、乙巳、丙午、丁未、戊申、己酉、庚戌、辛亥、壬子、癸丑、
甲寅、乙卯、丙辰、丁巳、戊午、己未、庚申、辛酉、壬戌、癸亥

2、已知今年的纪年,输入21世纪任意年份,打印出对应的甲子。

3、已知今年的纪年,打印出21世纪所有年份的甲子。

4、已知小明同学的属相,推断出可能的年龄。

#include <stdio.h>
#include <stdbool.h>
#include <string.h> 
int main(){
    char* tiangan ="甲乙丙丁戊己庚辛壬癸";
    char* dizhi = "子丑寅卯辰巳午未申酉戌亥";
 
  /*  for(int i=0,j=0;i<10 && j<12 ;++i,++j){   //60甲子
        printf("%.3s%.3s ",tiangan+i*3,dizhi+j*3);
        if(i==9 && j!=11){
            i=-1;
            printf("\n");
        }
        if(i!=9 && j==11){
            j=-1;
        }
    }
    printf("\n");
 */
    char arr[60][7]= {0};//60甲子
    for(int i=0;i<60;++i){
        sprintf(arr[i],"%.3s%.3s",tiangan+i%10*3,dizhi+i%12*3);
    }
    printf("天干地支六十甲子如下:\n"); 
    for(int i=0;i<60;++i){
        printf("%s ",arr[i]);
        if((i+1)%10 == 0) printf("\n");
    }
    int start = 2019 - 35;//1984年是最近的一个甲子年
    // printf("%s",arr[2019-start]);    
    printf("请输入年份:");
    int y;
    scanf("%d",&y);
    printf("%d是%s年\n",y,arr[(y-start)%60]);
    int year=2000;
    printf("21世纪所有年份对应的甲子如下:\n");
    for(year;year<2100;year++)
    {
	printf("%d是%s年 ",year,arr[(year-start)%60]);
	if(year%6==1)
		printf("\n");

    }
    printf("\n");
    char str[4]={0};//属相
    char str2[][4]={"鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"};//12生肖
    printf("请输入你的属相:");
    scanf("%s",str);
    int i;
    for(i=0;i<12;i++)
    {
	   if(strcmp(str,str2[i])==0)//查找对应属相
               {
		       break;
	       }
    }
    i+=1924;//1924年是甲子年,属相鼠 i+1924是输入属相的最大年龄
    printf("你的年龄可能是:\n");
    while(i<=2019)
    {       printf("%d岁 ",2019-i);//打印岁数
	    i+=12;//岁数+12
    }
    printf("\n");
}
发布了55 篇原创文章 · 获赞 14 · 访问量 3363

猜你喜欢

转载自blog.csdn.net/weixin_41969690/article/details/103733771