身份证信息推算程序
纠结了好长时间 但今天终于成功把这个程序写了出来 程序代码:
/* 计算身份证相关信息 */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <windows.h> char *String_cut(char *src, int s, int len);//指定字符串截取函数 void test(int n);//星座测试函数 int main() { char ID_NUM[20]; int age;//年龄 int sex;//性别 int zodiac;//属性 int benming;//本命年 char *ID_ADDRESS=NULL;//用户身份证前六位编码 char *YEAR=NULL;//年 char *MOUTH=NULL;//月 char *DATE=NULL;//日 char *SEX=NULL;//性别 sex % 2 != "男" else "女" system("title 推算身份证信息!"); system("color F9"); printf("身份证信息计算程序!\n"); printf("请输入您的18位身份证号码,回车结束!:"); scanf("%s",ID_NUM); while(strlen(ID_NUM)!=18){ system("cls"); printf("身份证信息计算程序!\n"); printf("输入有误\n"); printf("请重新输入正确的18位身份证号码,回车结束!:"); scanf("%s",ID_NUM); } YEAR=String_cut(ID_NUM,6,4); MOUTH=String_cut(ID_NUM,10,2); DATE=String_cut(ID_NUM,12,2); SEX=String_cut(ID_NUM,16,1); ID_ADDRESS=String_cut(ID_NUM,0,6); age=2015-atoi(YEAR);//atoi 这个好函数可以把字符串转换为整数类型. sex=atoi(SEX);//性别 zodiac=(atoi(YEAR)-1900)%12;//生肖 benming=age%12;//本命年 /* ------------------------------------------------ */ printf("您的身份证信息:\n"); printf("-----------------------------------\n"); printf("1.用户名:_\n"); printf("2.用户性别:"); { if(sex%2!=0) printf("男\n"); else printf("女\n"); } printf("3.用户出生日期:%s年/%s月/%s日!\n",YEAR,MOUTH,DATE); printf("4.当前用户年龄:%d岁!\n",age); printf("5.用户生肖属性:"); switch(zodiac){ /* 生肖排序:鼠 牛 虎 兔 龙 蛇 马 羊 猴 鸡 狗 猪 */ case 0: printf("属鼠!\n");break; case 1: printf("属牛!\n");break; case 2: printf("属虎!\n");break; case 3: printf("属兔!\n");break; case 4: printf("属龙!\n");break; case 5: printf("属蛇!\n");break; case 6: printf("属马!\n");break; case 7: printf("属羊!\n");break; case 8: printf("属猴!\n");break; case 9: printf("属鸡!\n");break; case 10: printf("属狗!\n");break; case 11: printf("属猪!\n");break; default: printf("未知或查询失败!\n");break; } printf("6.用户生日(公历生日):%s月%s日/每年!\n",MOUTH,DATE); printf("7.用户星座属性:"); test(atoi(strcat(MOUTH,DATE))); printf("8.用户本命年:"); { if(benming==0) printf("是!\n"); else printf("否!\n"); } printf("9.用户身份证地址编码:%s!\n",ID_ADDRESS); printf("10.用户身份证号:%s!\n",ID_NUM); printf("\n"); system("pause"); return 0; } char *String_cut(char *src, int s, int len) { int src_size = strlen(src) + 1; char *Cut_string = (char*)malloc(src_size); if (!Cut_string) return NULL; strncpy(Cut_string, src + s, len);// strncpy不会给你自动补上结束符号,要注意 Cut_string[len] = 0; return Cut_string;//返回成功截取的" Cut_string" 的值 ; } void test(int n) { if (n >= 101 && n <= 1230){ if (n >= 101 && n <= 119) printf("魔蝎座!\n"); else if (n >= 120 && n <= 218) printf("水瓶座!\n"); else if (n >= 219 && n <= 320) printf("双鱼座!\n"); else if (n >= 321 && n <= 419) printf("白羊座!\n"); else if (n >= 420 && n <= 520) printf("金牛座!\n"); else if (n >= 521 && n <= 621) printf("双子座!\n"); else if (n >= 622 && n <= 722) printf("巨蟹座!\n"); else if (n >= 723 && n <= 822) printf("狮子座!\n"); else if (n>=823 && n<=922) printf("处女座!\n"); else if (n >= 923 && n <= 1023) printf("天秤座!\n"); else if (n >= 1024 && n <= 1122) printf("天蝎座!\n"); else if (n >= 1123 && n <= 1221) printf("射手座!\n"); else if (n >= 1222 && n <= 1230) printf("魔蝎座!\n"); else printf("查询失败!\n"); } else printf("查询失败!\n"); } /* all right */一个有点小实用的程序 见笑了 还希望能够提出建议 .