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;
}
您好,请采纳
#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;
}
不知道你这个问题是否已经解决, 如果还没有解决的话: