#include
#include
#define xk 3 //定义学科的数目,我这边初始3门学科测试,你想要多简笑,改这个数字就行
typedef struct stu_info
{
int c[xk];//该学生所有科目成绩
float ave;//该学生所有科目的平均分
struct stu_info *next;
}STUIFO;
STUIFO *insertSTUIFO(STUIFO *stuHead,STUIFO *stuTail);// 录入一条学生信息
void printfStu(STUIFO *stuHead);
int main()
{
STUIFO *stuHead=(STUIFO *)malloc(sizeof(STUIFO));
stuHead->next=NULL;
STUIFO *stuTail=NULL;
while(1)
{
stuTail=insertSTUIFO(stuHead,stuTail);
如掘 if(stuTail==NULL)
break;
}
printfStu(stuHead);
return 0;
}
void printfStu(STUIFO *stuHead)//打印信息
{
int i;
float sum=0;
STUIFO *stuHeadSave=stuHead;
printf("\n\n所有渣咐核学生%d门课程的平均分为:",xk);
while(stuHead->next!=NULL)
{
printf("%.2f ",stuHead->next->ave);
stuHead=stuHead->next;
}
printf("\n\n各门课程的平均分为:");
for(i=0;i{
stuHead=stuHeadSave;
sum=0;
while(stuHead->next!=NULL)
{
sum=sum+stuHead->next->c[i];
stuHead=stuHead->next;
}
printf("%.2f ",sum/xk);
}
}
STUIFO *insertSTUIFO(STUIFO *stuHead,STUIFO *stuTail)// 录入一条学生信息 返回录入成功尾节点 输入负数返回NULL用于判断输入结束
{
int i,sum=0;
STUIFO *stuNew=(STUIFO *)malloc(sizeof(STUIFO));
stuNew->next=NULL;
printf("请分别输入一名学生的%d科成绩(输入负数结束输入)",xk);
for(i=0;i{
scanf("%d",&(stuNew->c[i]));
if((stuNew->c[i])<0)
return NULL;
sum=sum+stuNew->c[i];
}
stuNew->ave=(float)sum/xk;
if(stuHead->next==NULL)
stuHead->next=stuNew;
if(stuTail!=NULL)
stuTail->next=stuNew;
stuTail=stuNew;
return stuTail;
}
#include
#include
struct stu
{
char name[32];
int english;
int chinese;
int math;
.....n门课程
};
void main(void)
{
int i,score,average;
char NAME;
struct stu *STU[m] //m为已知的学生个数
for(i=0;i
{
STU = malloc(struct stu);
printf("请输入第%d个学生的姓名",i+1);
scanf("%s",&NAME);
strcpy(STU[1]->name,NAME);
printf("english :")
scanf("%d",&score);
STU[i]->贺耐english = score;
...........依次类推
}
printf("要查询的学生姓名:")
scanf("%s",NAME);
for(i = 0,i < m;i++)
{
if(!(strcmpa[i]->name,NAME)
{
average = (STU[i]->english+STU[i]->chinese+STU[i]->禅纳春math)/n;
}
}
for(i=0;i
{
free(a[i]);
}
exit(1);茄搏
}
c语言学生成绩我来写