我想例用函数编写一个 学生信息“系统”,请大神帮忙看看哪里出错,具体内容在里面
这道题我把所有算法写在主函数里面能够成功运行,但是我想利用函数,却有错误我的思路是
主函数 【里面只调用函数,不写具体算法】
{
输入函数();
输出函数();
排序函数();
return 0;
}
输入函数()
{
具体算法;
}
输出函数()
{
具体算法;
}
排序函数()
{
具体算法;
}
希望各位大神能够告诉我是思路错误,还是编码的错误,多谢!
代码如下:
#include<stdio.h>
#include<malloc.h>
struct Student //定义结构类型
{
int age;
int score;
char name[100];
};
int len; //想输出元素个数(我把所有变量定义在前面,这样主函数和其他函数都可以调用)
int i;
struct Student *parr;
void input(struct Student *parr, int len); //声明输入函数
void output(struct Student *parr, int len); //声明输出函数
void sort(struct Student *parr, int len); //声明排序函数
int main(void) //主函数
{
parr=(struct Student *)malloc(len*sizeof(struct Student));
input(&parr,len);
output(&parr,len);
sort(&parr,len);
return 0;
}
void input(struct Student *parr, int len) //定义输入函数
{
printf("请输入您所要输入的元素个数,len= ");
scanf("%d",&len);
for(i=0;i<len;i++)//输入
{
printf("请输入第%d个学生的信息\n",i+1);
printf("age= ");
scanf("%d",&parr[i].age);
printf("score= ");
scanf("%d",&parr[i].score);
printf("name= ");
scanf("%s",parr[i].name);//name是数组名,所以前面不加取地址符//
}
}
void output(struct Student *parr, int len) //定义输出函数
{
for(i=0;i<len;i++)//输出
{
printf("第%d个学生的信息\n",i+1);
printf("age=%d\n",parr[i].age);
printf("score=%d\n",parr[i].score);
printf("name=%s\n",parr[i].name);
printf("\n");
}
}
void sort(struct Student *parr, int len)//定义排序函数
{
for(i=0;i<len-1;i++)//冒泡排序
{
for(j=0;j<len-i-1;j++)
{
if(parr[j].score>parr[j+1].score)//升序用大于号表示 (从小到大), 降序用小于号表示 (从大到小)
t=parr[j];
parr[j]=parr[j+1];
parr[j+1]=t;
}
}
}