大佬们好, 帮忙分析一下到底是错在哪里了 感谢
#include<stdio.h>#include<stdlib.h>
struct Student{
char name[20];
int age;
float score;
};
void InputStudent(int len,struct Student*p);// 输入函数声明
void BubbleSort(int len,struct Student*p); //排序函数声明
void OutputStudent(int len,struct Student*p);//输出函数声明
int main(int argc,const char*argv[]){
int len; //length 是长度的缩写,用于提示用户输入学生的个数
struct Student*p=NULL; //用于存放动态内存的首地址
printf("请输入学生的个数:len=");//动态数组的长度可以由用户指定
scanf("%d",&len);
p=malloc(len*sizeof*p);//动态构造一维数组
InputStudent(len,p);
BubbleSort(len,p);
OutputStudent(len,p);
return 0;
}
void InputStudent(int len,struct Student*p){ //输入学生信息
int i;
for(i=0;i<len;i++){
printf("请输入第%dge学生的信息:\n",i+1);
printf("name=");
scanf("%s",(p+i)->name); //name是数组名,本身就是数组第一个元素的地址,所以前面不需要加&
printf("age=");
scanf("%d",(p+i)->age);//age是int型的,所以前面不需要加&
printf("score=");
scanf("%f",&(p+i)->score);
} printf("\n");
return;
}
void BubbleSort(int len,struct Student*p){ //BubbleSort是冒泡排序的英文单词
struct Student buf;
int i;
int j;
for(i=0;i<len-1;i++){
for(j=0;j<len-1-i;j++){
if((p+j)->score<(p+j+1)->score){
buf=*(p+j)
*(p+j)=*(p+j+1);
*(p+j+1)=buf;
}
}
}
return;
}
void OutputStudent(int len;struct Student*p){ //输出学生信息
int i;
printf("按成绩高低输出学生的信息:\n\n");
for(i=0;i<len;i++){
printf("第%d个学生的信息是:\n",i+1);
printf("name=%s\n",(p+i)->name);
printf("age=%d\n",(p+i)->age);
printf("score=%f\n",(p+i)->score);
}
return;
}
/ 错误提示: *16 23 C:\Users\WP-S10\Desktop\未命名1.cpp [Error] invalid conversion from 'void*' to 'Student*' [-fpermissive]
43 5 C:\Users\WP-S10\Desktop\未命名1.cpp [Error] no match for 'operator*' (operand types are 'Student' and 'Student*')
50 27 C:\Users\WP-S10\Desktop\未命名1.cpp [Error] expected ')' before ';' token
50 44 C:\Users\WP-S10\Desktop\未命名1.cpp [Error] expected initializer before ')' token*/