鱼C论坛

 找回密码
 立即注册
查看: 1267|回复: 16

[已解决]各位帮帮忙

[复制链接]
发表于 2018-12-26 12:46:11 | 显示全部楼层 |阅读模式
20鱼币
最佳答案
2018-12-26 12:46:12
楼主您看符不符合要求
  1. #include <stdio.h>
  2. #include <malloc.h>

  3. struct Student
  4. {
  5.         int age;
  6.         char name[100];
  7.         float score;
  8. };

  9. int len;
  10. struct Student *pArr;

  11. void InputStudent();
  12. void SortStudent();
  13. void OutputStudent();

  14. int main()
  15. {
  16.        
  17.         InputStudent();
  18.         SortStudent();
  19.         OutputStudent();

  20.         return 0;
  21. }

  22. void InputStudent()
  23. {
  24.        
  25.         printf("请输入学生个数:\n");
  26.         printf("len =");
  27.         scanf("%d", &len);
  28.        
  29.         pArr = (struct Student *)malloc(len * sizeof(struct Student));
  30.        
  31.         for(int i = 0; i < len; i++)
  32.         {
  33.                 printf("请输入第%d个学生的信息:\n", i + 1);
  34.                 printf("age =");
  35.                 scanf("%d", &pArr[i].age);
  36.                
  37.                 printf("name =");
  38.                 scanf("%s", pArr[i].name);
  39.                
  40.                 printf("score =");
  41.                 scanf("%f", &pArr[i].score);
  42.         }
  43. }
  44. void SortStudent()
  45. {
  46.         int i, j;
  47.         struct Student t;
  48.         for(i = 0; i < len; i++)
  49.         {
  50.                 for(j = 0; j < len-1-j; j++)
  51.                 {
  52.                         if(pArr[j].score > pArr[i].score)
  53.                         {
  54.                                 t = pArr[j];
  55.                                 pArr[j] = pArr[i];
  56.                                 pArr[i] = t;
  57.                         }
  58.                 }
  59.         }
  60. }

  61. void OutputStudent()
  62. {
  63.         printf(" \n\n学生的信息是:\n");
  64.         for(int i = 0; i < len; i++)
  65.         {
  66.                 printf("第%d个学生的信息:\n", i + 1);
  67.                 printf("age = %d\n", pArr[i].age);
  68.                 printf("name = %s\n", pArr[i].name);
  69.                 printf("score = %f\n", pArr[i].score);
  70.                
  71.                 printf(" \n");
  72.         }
  73.         free(pArr);
  74. }
复制代码

最佳答案

查看完整内容

楼主您看符不符合要求
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-12-26 12:46:12 | 显示全部楼层    本楼为最佳答案   
楼主您看符不符合要求
  1. #include <stdio.h>
  2. #include <malloc.h>

  3. struct Student
  4. {
  5.         int age;
  6.         char name[100];
  7.         float score;
  8. };

  9. int len;
  10. struct Student *pArr;

  11. void InputStudent();
  12. void SortStudent();
  13. void OutputStudent();

  14. int main()
  15. {
  16.        
  17.         InputStudent();
  18.         SortStudent();
  19.         OutputStudent();

  20.         return 0;
  21. }

  22. void InputStudent()
  23. {
  24.        
  25.         printf("请输入学生个数:\n");
  26.         printf("len =");
  27.         scanf("%d", &len);
  28.        
  29.         pArr = (struct Student *)malloc(len * sizeof(struct Student));
  30.        
  31.         for(int i = 0; i < len; i++)
  32.         {
  33.                 printf("请输入第%d个学生的信息:\n", i + 1);
  34.                 printf("age =");
  35.                 scanf("%d", &pArr[i].age);
  36.                
  37.                 printf("name =");
  38.                 scanf("%s", pArr[i].name);
  39.                
  40.                 printf("score =");
  41.                 scanf("%f", &pArr[i].score);
  42.         }
  43. }
  44. void SortStudent()
  45. {
  46.         int i, j;
  47.         struct Student t;
  48.         for(i = 0; i < len; i++)
  49.         {
  50.                 for(j = 0; j < len-1-j; j++)
  51.                 {
  52.                         if(pArr[j].score > pArr[i].score)
  53.                         {
  54.                                 t = pArr[j];
  55.                                 pArr[j] = pArr[i];
  56.                                 pArr[i] = t;
  57.                         }
  58.                 }
  59.         }
  60. }

  61. void OutputStudent()
  62. {
  63.         printf(" \n\n学生的信息是:\n");
  64.         for(int i = 0; i < len; i++)
  65.         {
  66.                 printf("第%d个学生的信息:\n", i + 1);
  67.                 printf("age = %d\n", pArr[i].age);
  68.                 printf("name = %s\n", pArr[i].name);
  69.                 printf("score = %f\n", pArr[i].score);
  70.                
  71.                 printf(" \n");
  72.         }
  73.         free(pArr);
  74. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-12-26 12:46:58 | 显示全部楼层
#include <stdio.h>
#include <malloc.h>

struct Student
{
        int age;
        char name[100];
        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[i].age);
               
                printf("name =");
                scanf("%s", pArr[i].name);
               
                printf("score =");
                scanf("%f", &pArr[i].score);
        }
        
        for(i = 0; i < len; i++)
        {
                for(j = 0; j < len-1-j; j++)
                {
                        if(pArr[j].score > pArr[i].score)
                        {
                                t = pArr;
                                pArr[j] = pArr[i];
                                pArr[i] = t;
                        }
                }
        }
        
        printf(" \n\n学生的信息是:\n");
        for(i = 0; i < len; i++)
        {
                printf("第%d个学生的信息:\n", i + 1);
                printf("age = %d\n", pArr[i].age);
                printf("name = %s\n", pArr[i].name);
                printf("score = %f\n", pArr[i].score);
               
                printf(" \n");
        }
        
        return 0;
}

各位能不能帮我改一下这个程序
输入用InputStudent();
排序用SortStudent();
输出用OutputStudent();
这三个子程序代替
main函数里面就只用

int main()
{
        ....
        
        InputStudent();
        SortStudent();
        OutputStudent();

        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-12-26 13:44:17 | 显示全部楼层
你这个代码 子函数没有形参么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-12-26 13:59:13 | 显示全部楼层
小酒酒呢 发表于 2018-12-26 13:19
楼主您看符不符合要求

你这个代码 子函数没有形参么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-12-26 15:29:39 | 显示全部楼层
190155801 发表于 2018-12-26 13:59
你这个代码 子函数没有形参么

楼上给你的代码不需要形参的,数据获取都是通过命令行输入数据生成。如
  1.         printf("请输入学生个数:\n");
  2.         printf("len =");
  3.         scanf("%d", &len);
复制代码

这个完全符号你的要求。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-12-26 16:10:42 From FishC Mobile | 显示全部楼层
190155801 发表于 2018-12-26 13:59
你这个代码 子函数没有形参么


如果必须要参数列表的话  也是可以的呀 楼主可以试着在代码上自己改改看   如果有问题的话欢迎追问哦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

怎么显示这个错误
QQ图片20181226164451.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-12-26 17:04:26 | 显示全部楼层
这个是因为楼主的编译器版本太低了。不支持c99  可以这样解决。
  1. int i;
  2. for(i = 0; i < len; i++)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

OK 这下对了 谢谢 不过我想问一下 是因为用了malloc我们才能这样写代码 子程序才可以不用形参么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-12-26 17:24:55 | 显示全部楼层
参数列表  本就很灵活。愿意怎么写都可以。不过为了一些程序可读性,或者是功能要求 需要加相应的返回值和参数列表。这和malloc没有什么直接关系。没有malloc一样可以写成无参函数。另外值得一说的是,参数列表在调试程序的时候也可以发挥一些作用。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

那如果没有malloc实现动态内存分配的话 InputStudent这个子程序里面的东西 不是会自动释放么 下面的程序 不是就无法进行了么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-12-26 17:47:35 | 显示全部楼层
对的,楼主说的没有错。奥 我明白了,楼主的意思是 没有malloc就要传递指针是吧。对的,这个是解决方案,函数参数传结构体的指针。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

嗯 谢谢你了 能加个好友么 以后有什么不懂得想请教你
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-12-26 18:01:29 | 显示全部楼层
190155801 发表于 2018-12-26 17:49
嗯 谢谢你了 能加个好友么 以后有什么不懂得想请教你

我也不是什么大神,有问题你发帖就可以了。论坛里的大神多的是呢我们加个论坛好友吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

No Problem
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

不好意思。我的等级还不够,等我等级够了我就同意
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 06:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表