为了账号安全,请及时绑定邮箱和手机立即绑定

学生信息管理系统

http://img1.sycdn.imooc.com//56625ad80001881d06720397.jpg帮我看一下这个程序用指针引用结构怎么写,谢谢啦

正在回答

1 回答

我也是初学C语言,无聊就个你写一个吧

按照的你要求用了结构体和指针

还带的些输入判断结构,其实不捣乱的输入是用不到,再学生时代不用考虑,但是出来真正做程序,就要考虑比较多

亲,给个好评吧

#include <stdio.h>
#include <windows.h>
#include <malloc.h>
#define CN 2 //课程数
typedef struct Node
{
	char	name[11];
	int		sex;
	float	score[CN];
	Node	*next;
}stu;//学生结构体成员
int Intput(stu *&L, char course[CN][15])//初始化并输入学生信息
{
	int num, i = 0, cn = 0;
	stu *p, *q = NULL;
	do
	{
		printf("请输入学生人数:\n");
		fflush(stdin);//清除键盘缓冲区
		scanf("%6d", &num);
	} while (num <= 0);
	while (i < num)
	{
		p = (stu *)malloc(sizeof(stu));
		if (i)
			q->next = p;
		else
			L = p;
		p->next = NULL;
		printf("请输入学生%d姓名:\n", i + 1);
		fflush(stdin);
		scanf("%10s", &p->name);//读取10个字符,10个留个'\0'
		do
		{
			printf("请输入学生%d性别(男:1,女:0):\n", i + 1);
			fflush(stdin);
			scanf("%d", &p->sex);
		} while (p->sex != 0 && p->sex != 1);
		for (cn = 0; cn < CN; cn++)
		{
			do
			{
				printf("请输入学生%d的%s成绩:\n", i + 1, course[cn]);
				fflush(stdin);
				scanf("%f", &p->score[cn]);
			} while (p->score[cn] < 0 || p->score[cn] > 100);
		}
		q = p;//连接成链表
		i++;//下一个学生
	}
	return num;
}
void DisList(stu *L, int num, char course[CN][15])//处理统计信息(学生链表,学生人数,课程列表)
{
	int i;
	stu *p;
	p = L;
	float sum[CN], max[CN], min[CN], avg[CN];//分别保存每科的信息
	while (p != NULL)
	{
		for (i = 0; i< CN; i++)
		{
			if (p == L)
			{
				sum[i] = 0.0;
				max[i] = 0.0;
				min[i] = 100.0;
			}
			sum[i] += p->score[i];
			max[i] = max[i]>p->score[i] ? max[i] : p->score[i];
			min[i] = min[i]<p->score[i] ? min[i] : p->score[i];
		}
		p = p->next;
	}
	//打印统计结果
	printf("科目 \\ 项目\t总平均成绩\t\t最高分\t\t最低分\n");
	for (i = 0; i < CN; i++)
		printf("%s\t\t%10.2f\t\t%.2f\t\t%.2f\n", course[i], sum[i] / num, max[i], min[i]);
}
int main()
{
	char course[CN][15] = { "C语言","微积分" };//写成字符串数组方便添加删除科目
	int num;
	stu *L;
	printf("=============================================================\n");
	printf("\n\t\t\t学生信息管理系统\n\n");
	printf("==============================================================\n");
	num = Intput(L, course);
	DisList(L, num, course);
	system("pause");//dos暂停函数
	return 0;
}


注释写得比较简单,不懂的可以问我

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

学生信息管理系统

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信