求大佬解决C语言问题

2024年11月28日 17:38
有1个网友回答
网友(1):

题目要求用指针函数,既返回值为指针类型的函数。

在主函数接收返回值并输出打印。

从输入的学生中找出有不及格的学生,并输出其不及格的课目成绩。(在打印所有学生的同时就筛选出存在不及格的学生,可减少循环次数,本题只有3个学生,败慧假设更多的话)。

下面是代码:

#include

#include

#define JG 60//及格分数线

#define MS 3//学生人数

#define MC 4//课程数量

int **input();

int main()

{

    int i,j,*p[MS]={NULL},cnt=0;

    int **stus=NULL;

    printf("输入的%d个学生%d科成绩分别为:\n",MS,MC);

    stus=input();//1、输入

    if(!stus) return 1;

    for(i=0;i

    {

        for(j=1,printf("学生编号%d:",stus[i][0]);j

            if(stus[i][j]

        if(p[cnt]!=NULL) cnt++;

    }

    for(i=0,printf("\n其中存在课程不及格的学生:\n");i

    {

        for(j=1,printf("学生编号%d,不及格的课程有:\n",p[i][0]);j

            if(p[i][j]

        printf("\n");

    }

    //malloc申请的内存需要手动释放,这里可写free释放,因为程序到此结束,自动释放    察察答   了,我就不写了。

    return 0;

}

int **input()

{

    static int id=1;//stus数组第1列为学生编号(唯一的),id是学生编号自增序列

    int **stus=NULL,*p=NULL,i,j;

    p=(int *)malloc(sizeof(int)*MS*(MC+1));

    if(!p) return NULL;

    stus=(int **)malloc(sizeof(int *)*MS);

    if(!stus) return NULL;

    for(i=0;i

   没散 {

        stus[i]=p,p+=MC+1;

        printf("请输入学生的%d科成绩:\n",MC);

        for(j=1,stus[i][0]=id++;j

    }

    printf("\n");

    return stus;

}