各位帮帮忙
楼主您看符不符合要求#include <stdio.h>
#include <malloc.h>
struct Student
{
int age;
char name;
float score;
};
int len;
struct Student *pArr;
void InputStudent();
void SortStudent();
void OutputStudent();
int main()
{
InputStudent();
SortStudent();
OutputStudent();
return 0;
}
void InputStudent()
{
printf("请输入学生个数:\n");
printf("len =");
scanf("%d", &len);
pArr = (struct Student *)malloc(len * sizeof(struct Student));
for(int i = 0; i < len; i++)
{
printf("请输入第%d个学生的信息:\n", i + 1);
printf("age =");
scanf("%d", &pArr.age);
printf("name =");
scanf("%s", pArr.name);
printf("score =");
scanf("%f", &pArr.score);
}
}
void SortStudent()
{
int i, j;
struct Student t;
for(i = 0; i < len; i++)
{
for(j = 0; j < len-1-j; j++)
{
if(pArr.score > pArr.score)
{
t = pArr;
pArr = pArr;
pArr = t;
}
}
}
}
void OutputStudent()
{
printf(" \n\n学生的信息是:\n");
for(int i = 0; i < len; i++)
{
printf("第%d个学生的信息:\n", i + 1);
printf("age = %d\n", pArr.age);
printf("name = %s\n", pArr.name);
printf("score = %f\n", pArr.score);
printf(" \n");
}
free(pArr);
}
#include <stdio.h>
#include <malloc.h>
struct Student
{
int age;
char name;
float score;
};
int main()
{
int len;
struct Student *pArr;
int i, j;
struct Student t;
printf("请输入学生个数:\n");
printf("len =");
scanf("%d", &len);
pArr = (struct Student *)malloc(len * sizeof(struct Student));
for(i = 0; i < len; i++)
{
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; i++)
{
for(j = 0; j < len-1-j; j++)
{
if(pArr.score > pArr.score)
{
t = pArr;
pArr = pArr;
pArr = t;
}
}
}
printf(" \n\n学生的信息是:\n");
for(i = 0; i < len; i++)
{
printf("第%d个学生的信息:\n", i + 1);
printf("age = %d\n", pArr.age);
printf("name = %s\n", pArr.name);
printf("score = %f\n", pArr.score);
printf(" \n");
}
return 0;
}
各位能不能帮我改一下这个程序
输入用InputStudent();
排序用SortStudent();
输出用OutputStudent();
这三个子程序代替
main函数里面就只用
int main()
{
....
InputStudent();
SortStudent();
OutputStudent();
return 0;
} 你这个代码 子函数没有形参么?
小酒酒呢 发表于 2018-12-26 13:19
楼主您看符不符合要求
你这个代码 子函数没有形参么
190155801 发表于 2018-12-26 13:59
你这个代码 子函数没有形参么
楼上给你的代码不需要形参的,数据获取都是通过命令行输入数据生成。如 printf("请输入学生个数:\n");
printf("len =");
scanf("%d", &len);
这个完全符号你的要求。 190155801 发表于 2018-12-26 13:59
你这个代码 子函数没有形参么
如果必须要参数列表的话也是可以的呀 楼主可以试着在代码上自己改改看 如果有问题的话欢迎追问哦 小酒酒呢 发表于 2018-12-26 16:10
如果必须要参数列表的话也是可以的呀 楼主可以试着在代码上自己改改看 如果有问题的话欢迎追问哦
怎么显示这个错误 这个是因为楼主的编译器版本太低了。不支持c99可以这样解决。
int i;
for(i = 0; i < len; i++) 小酒酒呢 发表于 2018-12-26 17:04
这个是因为楼主的编译器版本太低了。不支持c99可以这样解决。
OK 这下对了 谢谢 不过我想问一下 是因为用了malloc我们才能这样写代码 子程序才可以不用形参么 参数列表本就很灵活。愿意怎么写都可以。不过为了一些程序可读性,或者是功能要求 需要加相应的返回值和参数列表。这和malloc没有什么直接关系。没有malloc一样可以写成无参函数。另外值得一说的是,参数列表在调试程序的时候也可以发挥一些作用。 小酒酒呢 发表于 2018-12-26 17:24
参数列表本就很灵活。愿意怎么写都可以。不过为了一些程序可读性,或者是功能要求 需要加相应的返回值和 ...
那如果没有malloc实现动态内存分配的话 InputStudent这个子程序里面的东西 不是会自动释放么 下面的程序 不是就无法进行了么
对的,楼主说的没有错。奥 我明白了,楼主的意思是 没有malloc就要传递指针是吧。对的,这个是解决方案,函数参数传结构体的指针。 小酒酒呢 发表于 2018-12-26 17:47
对的,楼主说的没有错。奥 我明白了,楼主的意思是 没有malloc就要传递指针是吧。对的,这个是解决方案,函 ...
嗯 谢谢你了 能加个好友么 以后有什么不懂得想请教你{:5_109:} 190155801 发表于 2018-12-26 17:49
嗯 谢谢你了 能加个好友么 以后有什么不懂得想请教你
我也不是什么大神,有问题你发帖就可以了。论坛里的大神多的是呢{:10_279:}我们加个论坛好友吧 小酒酒呢 发表于 2018-12-26 18:01
我也不是什么大神,有问题你发帖就可以了。论坛里的大神多的是呢我们加个论坛好友吧
No Problem 小酒酒呢 发表于 2018-12-26 18:01
我也不是什么大神,有问题你发帖就可以了。论坛里的大神多的是呢我们加个论坛好友吧
不好意思。我的等级还不够,等我等级够了我就同意{:10_266:}
页:
[1]