如何用C语言编写一个程序,来生成并显示包含姓名、身份(学生、教师或其他人员),学号(或职工号)、手机号和身份证号码的人物身份信息,以及出入学校的时间记录?程序应确保这些信息的随机性,并能正确地录入和展示每个个体的相关数据?
时间: 2025-01-05 08:41:53 浏览: 74
在C语言中编写这样的程序需要使用一些库函数来处理字符串、字符数组和随机数生成。这里是一个简单的示例,展示了如何创建一个结构体来存储个人信息,并利用`srand()` 和 `rand()` 函数生成随机值:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h> // 使用时间作为随机数种子
// 定义人物信息结构体
typedef struct {
char name[50];
char identity[20]; // 可以为枚举如"学生", "教师", "其他"
int id_number; // 学号/职工号
char phone_number[20];
char id_card[20]; // 身份证号 (这里只是一个简单的示例,实际应用中可能需要更严谨的方式)
time_t entry_time; // 入校时间
time_t exit_time; // 出校时间
} Person;
void generate_random_data(Person* person) {
// 设置随机数种子,确保每次运行结果都不同
srand(time(0));
// 随机生成数据
strncpy(person->name, "随机姓名", sizeof(person->name));
strncpy(person->identity, "随机身份", sizeof(person->identity)); // 你可以添加一个枚举来选择具体身份
person->id_number = rand() % 10000; // 生成一个0到9999之间的随机数
strncpy(person->phone_number, "138*****", sizeof(person->phone_number)); // 假设格式
strncpy(person->id_card, "110101**********1234", sizeof(person->id_card)); // 假设格式
person->entry_time = time(NULL); // 当前时间作为入校时间
}
void display_person_info(const Person* person) {
printf("姓名: %s\n", person->name);
printf("身份: %s\n", person->identity);
printf("学号/职工号: %d\n", person->id_number);
printf("手机号: %s\n", person->phone_number);
printf("身份证号码: %s\n", person->id_card);
printf("入校时间: %ld\n", person->entry_time);
printf("出校时间: %ld\n", person->exit_time); // 这里假设程序只记录一次入校时间,出校时间可以为空
}
int main() {
Person student;
generate_random_data(&student);
display_person_info(&student);
return 0;
}
阅读全文