输入学生信息后,然后进行排序,然后输入,为什么会出错
#include <stdio.h>#include <malloc.h>
struct Student//定义一个结构体
{
int age;
char name[100];
float score;
};
int main (void)
{
int len;
int i,j;
struct Student t; //parr[j]不是int类型,所以t不能是int类型
struct Student *parr; //定义一个struct Student *类型的指针变量 parr
printf("请输入有多少个学生\n");
printf("个数:");
scanf("%d",&len);
parr=(struct Student *)malloc(len*sizeof(struct Student)); //定义一个动态数组
for (i=0;i<len;i++) //for循环输入学生的信息
{
printf("请输入第%d个学生的信息:\n",i+1);
printf("age=");
scanf("%d",&parr.age);
printf("name=");
scanf("%s",parr.name);
printf("score=");
scanf("%f",&parr.score);
}
for (i=0;i<len-1;i++) //冒泡排序
{
for (j=0;i<len-1-i;j++)
{
if (parr[j].score > parr[j+1].score) //比较的是struct Student里的成绩,不是整个struct Student里的内容
{
t = parr[j]; //parr[j]不是int类型,所以t不能是int类型
parr[j] = parr[j+1];
parr[j+1] = t; //当成绩比较完后,把分数高的“整体”和分数低的“整体”互换
}
}
}
printf("\n\n学生的信息:\n");
for (i=0;i<len;i++) //for循环输出学生的信息
{
printf("以下是第%d学生的信息\n",i+1);
printf("age\n",parr.age);
printf("name\n",parr.name);
printf("score\n",parr.score);
}
return 0;
}
能不能把“for循环输入输出学生的信息”还有“排序”用函数去写?
变成
#include <stdio.h>
#include<malloc.h>
void for1()
{
}
void paixu()
{
}
void for2()
{
}
int main (void)
{
……………………
for1();
paixu();
for2();
return 0;
}