| 
 | 
 
 
 楼主 |
发表于 2021-7-1 11:43:53
From FishC Mobile
|
显示全部楼层
 
 
 
wp231957 发表于 2021-7-1 10:03 
  
不用i的话,测试年龄会有错过没过生日的问题,而且会整个会报错 
[Warning] passing argument 1 of 'ageJudge2' makes pointer from integer without a cast 
 
#include<stdio.h> 
#include<time.h> 
  
void genderJudge(int num) //性别判定函数  
{ 
        if (num % 2 == 1) { 
                printf("性别:男\n"); 
        } 
        else { 
                printf("性别:女\n"); 
        } 
} 
 
int ageJudge1(char *ID)//18位年龄判定函数  
{ 
        int year, month, day; 
        int age; 
        time_t t; 
        struct tm *lt; 
        time(&t);  
        lt = localtime(&t); 
        year = (ID[6] - '0') * 1000 + (ID[7] - '0') * 100 + (ID[8] - '0') * 10 + (ID[9] - '0'); 
        month = (ID[10] - '0') * 10 + (ID[11] - '0'+1); 
        day = (ID[12] - '0') * 10 + (ID[13] - '0'); 
        age = lt->tm_year + 1900 - year; 
        if ((lt->tm_mon + 1) < month)  
        { 
        age--; 
        } 
        if((lt->tm_mon + 1) == month) 
        {  
        if((lt->tm_mday) <= day) 
        { 
        age--; 
        } 
        } 
        printf("年龄:%d岁\n",age); 
        return age; 
} 
int ageJudge2(char *ID)//15位年龄判定函数  
{ 
        int year, month, day; 
        int age; 
        time_t t; 
        struct tm *lt; 
        time(&t);  
        lt = localtime(&t); 
        year = 1900+ (ID[6] - '0') * 10 + (ID[7] - '0'); 
        month = (ID[8] - '0') * 10 + (ID[9] - '0'+1); 
        day = (ID[10] - '0') * 10 + (ID[11] - '0'); 
        age = lt->tm_year + 1900 - year; 
        if ((lt->tm_mon + 1) < month)  
        { 
        age--; 
        } 
        if((lt->tm_mon + 1) == month) 
        {  
        if((lt->tm_mday) <= day) 
        { 
        age--; 
        } 
        } 
        printf("年龄:%d岁\n",age); 
        return age; 
} 
 
int main() 
{ 
         
        int n; 
        printf("请问身份证是多少位?\n"); 
        scanf("%d",&n); 
        if(n==18) 
        { 
        char ID[19] = {"\0"}; 
        printf("请输入身份证号:\n"); 
        scanf("%s",&ID); 
    genderJudge(ID[16]); 
    ageJudge1(&ID); 
    }  
    if(n==15) 
        { 
        char ID[16] = {"\0"}; 
        printf("请输入身份证号:\n"); 
        scanf("%s",&ID); 
    genderJudge(ID[14]);  
    ageJudge2(&ID); 
    }  
        return 0; 
} |   
 
 
 
 |