| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 428 人关注过本帖
标题:身份证信息推算程序
只看楼主 加入收藏
逍风
Rank: 2
来 自:中国 江西
等 级:论坛游民
帖 子:88
专家分:84
注 册:2015-3-7
结帖率:90.91%
收藏
 问题点数:0 回复次数:0 
身份证信息推算程序
纠结了好长时间 但今天终于成功把这个程序写了出来
程序代码:
/* 计算身份证相关信息 */
#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
*/
一个有点小实用的程序 见笑了 还希望能够提出建议 .
搜索更多相关主题的帖子: 身份证 color 信息 
2015-03-21 13:35
快速回复:身份证信息推算程序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021439 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved