#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void insert_func(void);
//void sort_func(void);
void delete_func(void);
void display_func(void);
void modify_func(void);
//void anykey_func(void);
struct student {
char name[20];
int score;
struct student *next;
};
struct student *ptr, *head, *current, *prev;
int main()
{
int i;
head = (struct student *) malloc(sizeof(struct student));
head->next = NULL;
while (1) {
printf("\n");
printf("*********************\n");
printf(" 1.insert\n");
printf(" 2.delete\n");
printf(" 3.display\n");
printf(" 4.modify\n");
printf(" 5.quit\n");
printf("**********************\n");
printf("Enter your choice (1-5): ");
scanf("%d", &i);
printf("\n");
switch(i) {
case 1:
insert_func();
break;
case 2:
delete_func();
break;
case 3:
display_func();
break;
case 4:
modify_func();
break;
case 5:
printf("\n");
return 0;
}
}
}
/*添加是以分数的高低加以排序*/
void insert_func(void)
{
ptr = (struct student *) malloc(sizeof(struct student));
printf("Student name : ");
scanf("%s\n", ptr->name);
printf("Student score : ");
scanf("%d\n", &ptr->score);
prev = head;
current = head->next;
while ((current != NULL) && (current->score > ptr->score)) {
prev = current;
current = current->next;
}
ptr->next = current;
prev->next =ptr;
}
/*删除是以姓名为键值*/
void delete_func(void)
{
char del_name[20], ans;
printf("Delete student name : ");
scanf("%s\n", del_name);
prev = head;
current = head->next;
while ((current != NULL) && (strcmp(current->name, del_name) != 0))
{
prev = current;
current = current->next;
}
if (current != NULL) {
/*确认是否要删除*/
printf("Are you sure? ");
scanf("%s\n", ans);
if (ans == 'Y' || ans == 'y'){
prev->next = current->next;
free (current);
printf("Student %s has been deleted\n", del_name);
}
}
else
printf("Student %s not found\n", del_name);
}
void modify_func(void)
{
char n_temp[20];
int s_temp;
printf("Modify student name : ");
scanf("%s", n_temp);
current = head->next;
while ((current != NULL) && (strcmp(current->name, n_temp) != 0))
{
prev = current;
current = current->next;
}
if (current != NULL) {
printf("*****************************");
printf("Student name : %s\n", current->name);
printf("Student score : %d\n", current->score);
printf("******************************");
printf(" Please enter new score : ");
scanf("%d", &s_temp);
current->score = s_temp;
printf(" Student %s has been modified\n", n_temp);
}
else
printf(" Student %s not found\n", n_temp);
}
void display_func (void)
{
int count = 0;
if (head->next == NULL) {
printf("No student record\n");
}
else {
printf("\n");
printf(" NAME SCORE\n");
printf("*************************\n");
current = head->next;
while (current != NULL) {
printf(" %-10s %3d\n", current->name, current->score);
count++;
current = current->next;
}
printf("**************************\n");
printf("Total %d record(s) found\n", count);
}
}
输出尝试:
全选复制放进笔记./a.out
*********************
1.insert
2.delete
3.display
4.modify
5.quit
**********************
Enter your choice (1-5): 1
Student name : er
成这样子了
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。