设计算法,根据输入的学生人数和成绩建立一个单链表,并累计成绩不及格的人数。

**设计算法,根据输入的学生人数和成绩建立一个单链表,并累计成绩不及格的人数。
要求:(1)学生人数和成绩均从键盘输入;
(2)输出所有学生的成绩和不及格的人数。
**
先定义单链表节点类型,并根据题意将ElemType设为int型,然后设计一个算法用于输入学生人数和成绩,设计一个算法Count用于计算不及格人数,最后在主函数中调用实现算法函数

#include<iostream>
#include<malloc.h>
#include <iomanip>
using namespace std;
typedef int ElemType;
#define M 20
typedef struct LNode
{
	ElemType data;
	struct LNode* next;
}LNode,*LinkList;
void CreateLink(LinkList& h, ElemType a[], int n)
{
	LinkList s,tc; int i;
	h = (LinkList)malloc(sizeof(LinkList));
	tc =h;
	for(i=0;i<n;i++)
	{
		s = (LinkList)malloc(sizeof(LinkList));
		s->data = a[i];
		tc->next = s;
		tc = s;
	}
	tc->next = NULL;
}
int Count(LinkList sl)
{
	int k=0;
	LNode* p;
	if (sl->next == NULL)return 0;
	p =sl->next;
	while (p != NULL)
	{
		if (p->data <60) { k++; }
		p = p->next;
	}
	return k;
}
void main()
{
	int N;
	cout << "请输入学生人数:" << endl;
	cout << "学生人数为:";
	cin >> N;
	LinkList head;
	ElemType a[M];
	int i, k;
	cout << "请依次输入所有学生的成绩:" << endl;
	for (i = 0; i < N; i++)
		scanf_s("%d", &a[i]);
	cout << "所有学生的成绩依次为:" << endl;
	for(i=0;i<N;i++)
	{ cout << a[i] << setw(6); }
	cout << endl;
	CreateLink(head, a,N);//创建单链表
	k = Count(head);//调用求计数值的函数
	cout <<"所有学生的成绩中不及格的人数为:"<< k << "人";
	cout << endl;
}

猜你喜欢

转载自blog.csdn.net/qq_43554335/article/details/105577413