用c语言写一个系统,功能包括1. 显示(系统)当前的日期 (年、月、日、星期)、时间(时、分、秒) 2. 初始化(空)链表(创建哨兵结点) 3. 显示用户(功能)选择菜单,并获得用 户的(功能)选择 5、创建一个有2022个节点的(无序)链 表,链表每个结点存放的数据为 11922,20251之问的日期 (年、月、日) 数据(随机产生) 6、输出链表的前n个结点或整个链表所 有结点的数据
时间: 2023-04-09 12:01:25 浏览: 83
用C语言写的一些程序
我可以回答这个问题。以下是用C语言编写一个系统的代码,实现了显示当前日期和时间、初始化链表、显示用户选择菜单、创建一个有2022个节点的无序链表并输出前n个结点或整个链表所有结点的数据:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// 定义链表结构体
typedef struct Node {
int year;
int month;
int day;
struct Node *next;
} Node;
// 显示当前日期和时间
void showDateTime() {
time_t now;
struct tm *tm_now;
now = time(NULL);
tm_now = localtime(&now);
printf("当前日期:%d年%d月%d日 星期%d\n", tm_now->tm_year + 1900, tm_now->tm_mon + 1, tm_now->tm_mday, tm_now->tm_wday);
printf("当前时间:%d:%d:%d\n", tm_now->tm_hour, tm_now->tm_min, tm_now->tm_sec);
}
// 初始化链表
Node *initList() {
Node *head = (Node *)malloc(sizeof(Node));
head->next = NULL;
return head;
}
// 显示用户选择菜单,并获得用户的选择
int showMenu() {
int choice;
printf("请选择功能:\n");
printf("1. 显示当前日期和时间\n");
printf("2. 初始化链表\n");
printf("3. 创建一个有2022个节点的无序链表并输出前n个结点或整个链表所有结点的数据\n");
printf("4. 退出程序\n");
scanf("%d", &choice);
return choice;
}
// 创建一个有2022个节点的无序链表
Node *createList() {
Node *head = initList();
Node *p = head;
int i;
for (i = 0; i < 2022; i++) {
Node *node = (Node *)malloc(sizeof(Node));
node->year = rand() % 100 + 1922;
node->month = rand() % 12 + 1;
node->day = rand() % 31 + 1;
node->next = NULL;
p->next = node;
p = p->next;
}
return head;
}
// 输出链表的前n个结点或整个链表所有结点的数据
void showList(Node *head, int n) {
Node *p = head->next;
int i;
for (i = 0; i < n && p != NULL; i++) {
printf("%d年%d月%d日\n", p->year, p->month, p->day);
p = p->next;
}
if (n == 0) {
while (p != NULL) {
printf("%d年%d月%d日\n", p->year, p->month, p->day);
p = p->next;
}
}
}
int main() {
srand((unsigned)time(NULL)); // 初始化随机数生成器
Node *head = NULL;
int choice = 0;
while (choice != 4) {
choice = showMenu();
switch (choice) {
case 1:
showDateTime();
break;
case 2:
head = initList();
printf("链表初始化成功!\n");
break;
case 3:
if (head == NULL) {
printf("请先初始化链表!\n");
break;
}
int n;
printf("请输入要输出的结点个数(输入0表示输出整个链表):");
scanf("%d", &n);
showList(head, n);
break;
case 4:
printf("程序已退出!\n");
break;
default:
printf("输入有误,请重新输入!\n");
break;
}
}
return 0;
}
```
阅读全文