输入一个日期(用8位字符表示),输出其中的年份部分。 例如: 输入:20241106 输出:2024 使用C语言数组
时间: 2024-12-11 08:17:11 浏览: 5
在C语言中,你可以通过创建一个动态数组并解析输入字符串的方式来提取年份部分。这里是一个简单的示例,假设输入始终是"YYYYMMDD"格式:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char input[10];
int year;
// 获取用户输入的日期
printf("请输入日期(格式:YYYYMMDD): ");
fgets(input, sizeof(input), stdin);
// 去掉换行符
input[strcspn(input, "\n")] = '\0'; // 或者使用 fgets_s if using Visual Studio
// 提取年份到整数变量year
sscanf(input, "%d", &year);
// 输出年份
printf("年份: %d\n", year);
return 0;
}
```
在这个程序中,`sscanf`函数用于从字符串中读取整数值,格式说明符"%d"告诉它这是一个整数。这个函数会直接将年份部分赋值给`year`。
相关问题
c语言编程序实现:输入任意一个年份、月份,输出该月份的公历日历(要求用循环控制打印)。 提示: 1.先求出从公元1年1月1日到这个月的1日总共有多少天,并求出这个月的1日是星期几。 2.可以将每个月的天数存入一个数组中,但是不需要将一个月的每一天存入数组中。 输入格式: 输入年份、月份,数据之间以空格分隔。 输出格式: 每项数据占4个字符宽度,右对齐。
以下是C语言编写的程序实现所述功能:
```c
#include <stdio.h>
int main() {
int year, month, days, weekDay, i, j, k, count;
int daysOfMonth[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
char week[7][4] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
printf("Please input the year and month: ");
scanf("%d%d", &year, &month);
// 计算该月第一天是星期几,并计算该月总天数
days = 0;
for (i = 1; i < year; i++) {
if ((i % 4 == 0 && i % 100 != 0) || i % 400 == 0) {
days += 366;
} else {
days += 365;
}
}
for (i = 0; i < month - 1; i++) {
days += daysOfMonth[i];
if (i == 1 && ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)) {
days++; // 闰年二月多一天
}
}
weekDay = (days + 1) % 7; // 公元1年1月1日是星期一,需要加1
// 打印日历
printf("%4s%4s%4s%4s%4s%4s%4s\n", "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat");
count = 0;
for (i = 0; i < weekDay; i++) {
printf(" "); // 打印月份第一天之前的空格
count++;
}
for (i = 1; i <= daysOfMonth[month - 1]; i++) {
printf("%4d", i);
count++;
if (count == 7) {
printf("\n");
count = 0;
}
}
if (count != 0) {
for (i = count; i < 7; i++) {
printf(" "); // 打印月份最后一天之后的空格
}
printf("\n");
}
return 0;
}
```
程序首先通过输入年份和月份,计算出该月第一天是星期几以及该月总天数。接着,程序打印出日历表头,并根据该月第一天是星期几打印出该月第一天之前的空格。然后,程序循环打印出该月的每一天,每打印一天计数器加1,当计数器等于7时换行。最后,程序判断该月最后一天之后是否有空格需要打印,并输出换行符。
C语言输入身份证号数组,输出出生日期、年龄、性别
在C语言中,处理身份证号并从中提取出生日期、年龄和性别通常涉及到字符串处理和一些规则判断。由于中国的身份证号码格式复杂,前六位代表地区编码,接下来八位是出生日期,倒数第二位代表性别(奇数表示男性,偶数表示女性),最后一位是校验码。以下是简单的步骤:
```c
#include <stdio.h>
#include <string.h>
// 函数用于解析身份证号
void parse_id_card(char id[], char* birth_date, int* age, char* gender) {
char date[9];
*birth_date = id[6]; // 提取出生月
date[1] = id[7]; // 提取出生日
date[0] = id[8]; // 前置0补全出生年份(四位)
sscanf(date + 2, "%d", &age); // 提取年份
*gender = id[17]; // 根据第17位确定性别
}
int main() {
char id[] = "11010119900101001X"; // 示例身份证号
char birth_date[4], gender[2];
int age;
parse_id_card(id, birth_date, &age, gender);
printf("出生日期: %s\n", birth_date);
printf("年龄: %d岁\n", age);
printf("性别: %s\n", gender);
return 0;
}
```
阅读全文