题目描述
知道如何创建链表了。
本题继续要求用链表完成。输入同学成成绩后,现在再输入1个同学的姓名,输出该同学的成绩。
输入
输入一些学生的信息,每个学生信息一行,分别为学号、姓名和成绩,中间用空格隔开,其中学号和成绩均为整数,姓名为不超过15个仅包含大小写字母的字符。
如果输入的一行是非正整数时,表示结束
在成绩结束后,输入一行,为一个同学的姓名
输出
输出一个整数,表示该同学的成绩
样例输入 Copy
1001 xiangwang 90 1002 xiaoli 85 1003 xiaohong 97 1004 xiaoma 76 -1 xiaoli
样例输出 Copy
85
提示
如果班上有重名,则只需输出按输入顺序的第一个该名字同学的成绩
这个题目其实和上面一个链表题目没有太大的差别,所以就是主函数上面有一些变化,但是strcpy还是要注意,如果要过测试就用strcpy,但是如果要在vs上编译就用strcpy_s,其他的看情况
#include<iostream>
#include<malloc.h>
#include<cstring>
using namespace std;
struct node
{
int number;
char name[16];
float score;
struct node* next;
};
struct node* Create_Stu_Doc();
int main()
{
char na[16];
struct node* p;
struct node* head;
head = Create_Stu_Doc();
cin >> na;
p = (struct node*)malloc(sizeof(struct node));
for (p = head; p != NULL; p = p->next)
{
if (strcmp(p->name,na)==0)
{
printf("%.0f\n", p->score);
break;
}
}
return 0;
}
struct node* Create_Stu_Doc()
{
int number;
char name[16];
float score;
struct node* head = NULL, * tail = NULL;
while (true)
{
cin >> number;
if (number == -1)
{
break;
}
cin >> name >> score;
struct node* q = (struct node*)malloc(sizeof(struct node));
q->next = NULL;
q->number = number;
q->score = score;
strcpy(q->name, name);
if (head == NULL)
{
head = q;
}
else
{
tail->next = q;
}
tail = q;
}
return head;
}