c语言问题 用户调查用户

1.用户输入6位数的出生日期 (年份与月份),并用数组储存。根据用户输入的出生日期,使用指针实现用户出生年份的提取
2.计算用户年龄,并判断用户属于哪个年龄阶段。
小于30岁 年轻用户
31-55 中年
56以上 老年

我的思路如下:

1、首先,使用一个字符数组存储输入的出生日期;

2、然后,使用字符指针访问这个字符数组前4位,将它们存储于另一个字符数组;

3、接着,使用函数atoi()将其转为出生年份对应的整数;

4、再使用今年的年份减去出生的年份得出年龄,最后根据年龄打印用户所属的年龄阶段即可。

代码如下:

参考链接:


#include <stdio.h> 
#include <stdlib.h>  // atoi()

int main(void){
    
    char birthday[10];  //使用字符数组存储6位数的出生日期 
    char yearStr[5];   //用于存储出生年份 
    
    printf("请输入你的出生日期(6位数字表示):");
    scanf("%s",birthday); // 获取6位数字的出生日期,存于字符数组birthday中 
    
    char * p = birthday;   // 让字符指针指向存储出生日期的字符数组 
    int i;
    // 提取出生日期字符数组前4位的年份,存储到字符数组yearStr 
    for(i=0;i<4;i++,p++){
        yearStr[i]=*p;
    }
    yearStr[i]='\0';
//    printf("yearStr=%s\n",yearStr);
    
    // https://baike.baidu.com/item/atoi/10931331?fr=aladdin
    // 使用atoi函数将数字字符串转为对应的整数 
    int year = atoi(yearStr);
//    printf("year=%d\n",year);
    int thisYear=2023; //今年的年份 
    int age = thisYear-year;  // 使用今年的年份减去出生年份计算得出年龄 
//    printf("age=%d\n",age);
    
    //根据不同年龄,打印用户所属的年龄阶段 
    if(age<=30){
        printf("年轻用户\n");
    }else if(age>=31&&age<=55){
        printf("中年用户\n");
    }else if(age>=56){
        printf("老年用户\n");
    }
    
    
    
    
    return 0;
     
}

img

您好,请采纳



#include <stdio.h>

int main(){
    int birth[6];
    int age;
    int *year;
    printf("请输入您的出生日期:\n");
    for (int i = 0; i < 6; i++) {
        scanf("%d", &birth[i]);
    }
    year = &birth[0];
    age = 2020 - *year;
    printf("您的年龄为:%d\n", age);
    if (age < 30) {
        printf("您是年轻用户。\n");
    } else if (age >= 31 && age <= 55) {
        printf("您是中年用户。\n");
    } else {
        printf("您是老年用户。\n");
    }
    return 0;
}

引用·:qa浪涛
代码有错误,我帮他改了一下

 
#include <stdio.h>
 
int main(){
    int birth[6];
    int age;
    int *year;
    printf("请输入您的出生日期:\n");
    for (int i = 0; i < 6; i++) {
        scanf("%d", &birth[i]);
    }
    int a=birth[0]*1000+birth[1]*100+birth[2]*10+birth[3];
    year = &a;
    age = 2023 - *year;
    printf("您的年龄为:%d\n", age);
    if (age < 30) {
        printf("年轻用户");
    } else if (age >= 31 && age <= 55) {
        printf("中年");
    } else {
        printf("老年");
    }
    return 0;
}

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^