这是代码
//5.设学生数据包括学号、姓名和成绩,从键盘输入3个学生的数据(假设按学号的升序进行输入),//要求输出学生数据,并输出所有学生的平均成绩。//2)采用动态数据结构。建立一个包括3个学生数据的单向链表,实现指定的操作。#include<stdio.h>#include<stdlib.h>#define N 3struct student{ int num; char name; float score; struct student *next;};int main(){ struct student *creat(struct student *head,int n); void print(struct student *head); struct student *head=NULL; //定义表头指针 head=creat(head,N); print(head); return 0;}struct student *creat(struct student *head,int n) //申请节点空间{ struct student *p,*q; int i; for(i=1;i<=n;i++) { q=(struct student *)malloc(sizeof(struct student)); printf("请输入第%d位学生的学号、姓名和成绩:\n",i); scanf("%d %s %f",&q->num,q->name,&q->score); q->next=NULL; //给q指针的指针域赋值NULL if(head==NULL) head=q; //将q的地址赋给head(新节点作为表头结点插入链表) else p->next=q; //新结点作为表尾结点插入链表 p=q; } return head;}void print(struct student *head){ struct student *p=head; //N次分别为第n个数据域 float sum=0.0,average; printf("学号 姓名 成绩 "); while(p!=NULL) { printf("%d %s %f\n",p->num,p->name,p->score); sum=sum+p->score; p=p->next; //p指向下一个节点 } average=sum/3.0; printf("所有学生的平均成绩为:%f",average);}
char name[20];姓名是个字符串,不是一个字符
print函数中
printf("%s\n","学号 姓名 成绩");