学生信息管理系统
帮我看一下这个程序用指针引用结构怎么写,谢谢啦
帮我看一下这个程序用指针引用结构怎么写,谢谢啦
2015-12-05
我也是初学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; }
注释写得比较简单,不懂的可以问我
举报