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");
}