F无上 发表于 2018-9-24 12:58:25

大佬们帮忙把这个程序改成函数版(C语言)

帮忙把赋值 冒泡 输出改为一个独立的函数

#include <stdio.h>
#include <malloc.h>

struct Student
{
        int age;
        float score;
        char name;
};

main(void)
{
        int i,j;
        int len;
        struct Student * pArr;
        struct Student t;
        printf("请输入您学生的个数:\n");

        printf("len=");
        scanf("%d",&len);
        pArr = (struct Student *)malloc(sizeof(struct Student) * len);

    //赋值
        for(i=0;i<len;i++)
        {
                printf("请输入您第%d个学生的信息\n",i+1);
                printf("age=");
                scanf("%d",&pArr.age);
                printf("score=");
                scanf("%f",&pArr.score);
                printf("name=");
                scanf("%s",pArr.name);
        }
    //冒泡排序
        for(i=0;i<len-1;i++)
        {
                for(j=0;j<len-i-1;j++)
                {if(pArr.score<pArr.score)
                        {
                        t=pArr;
                        pArr=pArr;
                        pArr=t;

                        }
                }       
        }

    //输出
        for(i=0;i<len;i++)
        {
                printf("\n");


                printf("这是您您第%d个学生的信息\n",i+1);

                printf("age=%d\n",pArr.age);

                printf("score=%f\n",pArr.score);
       
                printf("name=%s\n",pArr.name);
        }

return 0;
}

claws0n 发表于 2018-9-24 13:32:16

本帖最后由 claws0n 于 2018-9-24 13:36 编辑

你的好像不是真正的冒泡排序,多跑了。
#include <stdio.h>
#include <malloc.h>

struct Student
{
    int age;
    float score;
    char name;
};

void sort_struct(struct Student *Array, int len)
{
    for(int i = 0; i < len-1; i++)
    {
      for(int j = 0 ; j < len-i-1; j++)
      {
          if(Array.score < Array.score)
            {
                    struct Student t = Array;
                    Array = Array;
                    Array = t;
            }
      }      
    }
}

int main(void)
{
    int i,j;
    int len;
    struct Student * pArr;
    struct Student t;
    printf("请输入您学生的个数:\n");

    printf("len = ");
    scanf("%d",&len);
    pArr = (struct Student *)malloc(sizeof(struct Student) * len);

    //赋值
    for(i = 0; i < len; i++)
    {
      printf("请输入您第%d个学生的信息\n", i+1);
      printf("age = ");
      scanf("%d", &pArr.age);
      printf("score = ");
      scanf("%f", &pArr.score);
      printf("name = ");
      scanf("%s", pArr.name);
    }
    //冒泡排序
    sort_struct(pArr, len);

    //输出
    for(i=0;i<len;i++)
    {
      printf("\n");
      printf("这是您您第%d个学生的信息\n",i+1);
      printf("age=%d\n",pArr.age);
      printf("score=%.2f\n",pArr.score);    // 格式化 2 位小数
      printf("name=%s\n",pArr.name);
    }

        return 0;
}
页: [1]
查看完整版本: 大佬们帮忙把这个程序改成函数版(C语言)