小憨憨你好憨 2021-06-21 23:43 采纳率: 100%
浏览 15
已采纳

请问为什么编译会出现这个错啊?

#include<stdio.h>
#include<stdlib.h>
#define M 20
#define N 3
typedef struct
{
    char name[M];
    int age;
    float score;
}Judge;

typedef struct cmpt
{
    Judge data;
    struct cmpt *next;
}competitor;

void input(competitor *head,int n);
competitor *max1(competitor *L);
competitor *min1(competitor *L);
void delete_score(competitor *L,float score);
float average(competitor *L);
void printL(competitor *L);

void input(competitor *L,int n)
{
    competitor *p1,*p2;
    int i=1;
    L->next=p1=p2=(competitor *)malloc(sizeof(competitor));
    printf("Please input name age score:\n");
    scanf("%s",p1->data.name);
    scanf("%d",&p1->data.age);
    scanf("%f",&p1->data.score);
    while(i<n)
    {
        p1=(competitor *)malloc(sizeof(competitor));
        p2->next=p1;
        p2=p1;
        scanf("%s",p1->data.name);
        scanf("%d",&p1->data.age);
        scanf("%f",&p1->data.score);
        i++;
    }
    p2->next=NULL;
}

competitor *max1(competitor *L)
{
    float max_score;
    competitor *q=L,*p=L->next;
    max_score=p->data.score;
    do
    {
        if(max_score<p->data.score)
        {
            max_score=p->data.score;
            q=p;
        }
        p=p->next;
    }while(p!=NULL);
    return q;
}
competitor *min1(competitor *L)
{
    float min_score;
    competitor *q=L,*p=L->next;
    min_score=p->data.score;
    do
    {
        if(min_score>p->data.score)
        {
            min_score=p->data.score;
            q=p;
        }
        p=p->next;
    }while(p!=NULL);
    return q;
}
void delete_score(competitor *L,float score)
{
    competitor *q=L,*p=L->next;
    int i=1,index=1;
    do{
        if(score!=p->data.score)
        {
            p=p->next;
            index++;
        }
        else
        {
            while(i++<index)
            q=q->next;
        q->next=p->next;
        free(p);
        break;
        }
    }while(p!=NULL);
}
float average(competitor *L)
{
    float ave=0; int i=0;
    competitor *p=L->next;
    if(p!=NULL)
        do{
            ave=ave+p->data.score;
            p=p->next;
            i++;
        }while(p!=NULL);
    ave=ave/i;
    return ave;
}
void printL(competitor *L)
{
    competitor *p=L->next;
    if(p!=NULL)
        do
        {
            printf("%s,%d,5f\n",p->data.name,p->data.age,p->data.score);
            p=p->next;
        }while(p!=NULL);
}
int main()
{
  competitor *L,*max_s,*min_s;
  int n;
  printf("请输入评委的人数:\n");
  scanf("%d",&n);
  L=(competitor *)malloc(sizeof(competitor));
  L->next=NULL;
  input(L,n);
  printL(L);
  max_s=max1(L);
  min_s=min1(L);
  printf("最大值的节点的评委信息为:姓名:%s 年龄:%d 所给的分数为:%f\n",max_s->data.name,max_s->data.age,max_s->data.score);
  printf("最小值的节点的评委信息为:姓名:%s 年龄:%d 所给的分数为:%f\n",min_s->data.name,min_s->data.age,min_s->data.score);
  delete_score(L,max_s->data.score);
  delete_score(L,min_s->data.score);
  printf("删除最大值和最小值后的数据为:\n");
  printL(L);
  printf("平均分为:%f\n",average(L));
  getchar();
  getchar();
  return 0;

}

 

  • 写回答

1条回答 默认 最新

  • qfl_sdu 2021-06-21 23:58
    关注

    造成这种问题的原因是编译器分配的内存超过了限制。
    给编译器增大内存限制。在project(工程)->setting(设置)->c/c++的project option(工程选项)中,添加/Zm#nn选项,#nn是一个数字,取值最大为2000。默认为100。
     

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 目详情-五一模拟赛详情页
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line