190155801 发表于 2018-12-26 12:46:11

各位帮帮忙

小酒酒呢 发表于 2018-12-26 12:46:12

楼主您看符不符合要求
#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);
}

190155801 发表于 2018-12-26 12:46:58

#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;
}

190155801 发表于 2018-12-26 13:44:17

你这个代码 子函数没有形参么?

190155801 发表于 2018-12-26 13:59:13

小酒酒呢 发表于 2018-12-26 13:19
楼主您看符不符合要求

你这个代码 子函数没有形参么

行客 发表于 2018-12-26 15:29:39

190155801 发表于 2018-12-26 13:59
你这个代码 子函数没有形参么

楼上给你的代码不需要形参的,数据获取都是通过命令行输入数据生成。如       printf("请输入学生个数:\n");
      printf("len =");
      scanf("%d", &len);
这个完全符号你的要求。

小酒酒呢 发表于 2018-12-26 16:10:42

190155801 发表于 2018-12-26 13:59
你这个代码 子函数没有形参么

如果必须要参数列表的话也是可以的呀 楼主可以试着在代码上自己改改看   如果有问题的话欢迎追问哦

190155801 发表于 2018-12-26 16:46:14

小酒酒呢 发表于 2018-12-26 16:10
如果必须要参数列表的话也是可以的呀 楼主可以试着在代码上自己改改看   如果有问题的话欢迎追问哦

怎么显示这个错误

小酒酒呢 发表于 2018-12-26 17:04:26

这个是因为楼主的编译器版本太低了。不支持c99可以这样解决。
int i;
for(i = 0; i < len; i++)

190155801 发表于 2018-12-26 17:20:02

小酒酒呢 发表于 2018-12-26 17:04
这个是因为楼主的编译器版本太低了。不支持c99可以这样解决。

OK 这下对了 谢谢 不过我想问一下 是因为用了malloc我们才能这样写代码 子程序才可以不用形参么

小酒酒呢 发表于 2018-12-26 17:24:55

参数列表本就很灵活。愿意怎么写都可以。不过为了一些程序可读性,或者是功能要求 需要加相应的返回值和参数列表。这和malloc没有什么直接关系。没有malloc一样可以写成无参函数。另外值得一说的是,参数列表在调试程序的时候也可以发挥一些作用。

190155801 发表于 2018-12-26 17:40:14

小酒酒呢 发表于 2018-12-26 17:24
参数列表本就很灵活。愿意怎么写都可以。不过为了一些程序可读性,或者是功能要求 需要加相应的返回值和 ...

那如果没有malloc实现动态内存分配的话 InputStudent这个子程序里面的东西 不是会自动释放么 下面的程序 不是就无法进行了么

小酒酒呢 发表于 2018-12-26 17:47:35

对的,楼主说的没有错。奥 我明白了,楼主的意思是 没有malloc就要传递指针是吧。对的,这个是解决方案,函数参数传结构体的指针。

190155801 发表于 2018-12-26 17:49:46

小酒酒呢 发表于 2018-12-26 17:47
对的,楼主说的没有错。奥 我明白了,楼主的意思是 没有malloc就要传递指针是吧。对的,这个是解决方案,函 ...

嗯 谢谢你了 能加个好友么 以后有什么不懂得想请教你{:5_109:}

小酒酒呢 发表于 2018-12-26 18:01:29

190155801 发表于 2018-12-26 17:49
嗯 谢谢你了 能加个好友么 以后有什么不懂得想请教你

我也不是什么大神,有问题你发帖就可以了。论坛里的大神多的是呢{:10_279:}我们加个论坛好友吧

190155801 发表于 2018-12-26 18:02:31

小酒酒呢 发表于 2018-12-26 18:01
我也不是什么大神,有问题你发帖就可以了。论坛里的大神多的是呢我们加个论坛好友吧

No Problem

小酒酒呢 发表于 2018-12-26 18:03:10

小酒酒呢 发表于 2018-12-26 18:01
我也不是什么大神,有问题你发帖就可以了。论坛里的大神多的是呢我们加个论坛好友吧

不好意思。我的等级还不够,等我等级够了我就同意{:10_266:}
页: [1]
查看完整版本: 各位帮帮忙