身份证信息推算程序
纠结了好长时间 但今天终于成功把这个程序写了出来
程序代码:/* 计算身份证相关信息 */
#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
*/一个有点小实用的程序 见笑了 还希望能够提出建议 .





