没有的笑也
2015-12-05 11:35
帮我看一下这个程序用指针引用结构怎么写,谢谢啦
我也是初学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;
}
注释写得比较简单,不懂的可以问我
C语言入门
927893 学习 · 21542 问题
相似问题