void likai(struct student *head) { FILE *fp; struct student *p1, *p2; double money; char num[30]; int hour, minute, second, flag = 0, dif; printf("输入学号:"); scanf("%s", &num); p1 = head; while (p1) { if (strcmp(p1->num, num) == 0) { printf("输入正确\n"); flag++; break; } p1 = p1->next; } if (flag == 0) { printf("该学号不存在!\n"); getchar(); printf("---按任意键返回主菜单---\n"); getchar(); return; } else { t_end = time(NULL); printf ("已对您停止计时!\n"); printf ("您上机前的余额为: %.2f\n", p1->money); dif = difftime(t_end, t_start); hour = dif / 3600; minute = (dif % 3600) / 60; second = dif % 60; if (minute <= 30) { money = p1->money - (2 * hour + 1); } if (minute > 30 && minute < 60) { money = p1->money - 2 * (hour + 1); } } printf ("\n您上机的时间为%d: %d: %d\n", hour, minute, second); printf ("\n您的余额为%.2f\n", money); p1->money = money; p2 = head->next; printf ("---请按任意键继续---\n"); getchar(); }
时间: 2024-01-19 08:05:12 浏览: 58
用Python编程实现控制台爱心形状绘制技术教程
好的,下面是对这段代码的注释:
```
void likai(struct student *head) { // 定义函数 likai,参数为学生信息链表的头指针
FILE *fp; // 定义文件指针 fp
struct student *p1, *p2; // 定义学生信息指针 p1 和 p2
double money; // 定义双精度浮点型变量 money,用于存储计算后的余额
char num[30]; // 定义字符串类型变量 num,用于存储输入的学号
int hour, minute, second, flag = 0, dif; // 定义整型变量 hour、minute、second、flag 和 dif,用于计算上机时间和判断学号是否存在
printf("输入学号:"); // 提示用户输入学号
scanf("%s", &num); // 读取用户输入的学号
p1 = head; // 将 p1 指向学生信息链表的头节点
while (p1) { // 遍历学生信息链表
if (strcmp(p1->num, num) == 0) { // 如果找到输入的学号
printf("输入正确\n"); // 提示用户输入正确
flag++; // 标记学号存在
break; // 跳出循环
}
p1 = p1->next; // 指向下一个学生信息节点
}
if (flag == 0) { // 如果学号不存在
printf("该学号不存在!\n"); // 提示用户该学号不存在
getchar(); // 清空缓冲区
printf("---按任意键返回主菜单---\n"); // 提示用户按任意键返回主菜单
getchar(); // 等待用户按键
return; // 返回函数调用处
} else { // 如果学号存在
t_end = time(NULL); // 记录计时结束时间
printf("已对您停止计时!\n"); // 提示用户计时已停止
printf("您上机前的余额为: %.2f\n", p1->money); // 输出上机前的余额
dif = difftime(t_end, t_start); // 计算上机时间
hour = dif / 3600; // 计算小时数
minute = (dif % 3600) / 60; // 计算分钟数
second = dif % 60; // 计算秒数
if (minute <= 30) { // 如果上机时间不足30分钟
money = p1->money - (2 * hour + 1); // 扣除余额
}
if (minute > 30 && minute < 60) { // 如果上机时间超过30分钟但不足1小时
money = p1->money - 2 * (hour + 1); // 扣除余额
}
}
printf("\n您上机的时间为%d: %d: %d\n", hour, minute, second); // 输出上机时间
printf("\n您的余额为%.2f\n", money); // 输出计算后的余额
p1->money = money; // 更新学生信息链表中的余额信息
p2 = head->next; // 将 p2 指向第一个学生信息节点
printf("---请按任意键继续---\n"); // 提示用户按任意键继续
getchar(); // 等待用户按键
}
```
阅读全文