为了账号安全,请及时绑定邮箱和手机立即绑定

为什么不对呢

#include <stdio.h>

#define N 10

void MAX(int score[])

{

    int max=score[0];

    for(int i=1;i<N;i++)

    {

        if(max<score[i])

        max=score[i];

    }


    printf("最大值为%d\n",max);

}

void MIN(int score[])

{

    int min=score[0];

    for(int i=1;i<N;i++)

    {

        if(min>score[i])

        min=score[i];

    }


    printf("最小值为%d\n",min);

    

}

void SA(int score[])

{

    int sum=0;

    for(int i=0;i<N;i++)

    {sum+=score[i];}

    printf("总分为%d\n",sum);

    printf("均分为%d\n",sum/N);

    

}

void WANG(int score[])

{

    int i,j,temp;

    for(i=N-1;i>=0;i--)

      {for(j=0;j<i;j++)

      if(score[j]<score[j+1])

      temp=score[j];

      score[j]=score[j+1];

      score[j+1]=temp;

      }

  for(int k=0;k<N;k++)

  printf("%d",score[k]);

    

}

int main()

{

    int score[N]={67,98,75,63,82,79,81,91,66,84};

   MAX(score);

   MIN(score);

   SA(score);

   WANG(score);

    return 0;

}

错误的代码是 

/bin/bash: line 1: 18563 Segmentation fault      (core dumped) hello
最大值为98


正在回答

1 回答

你的那个WANG函数的最后排序i应该等于N,输出的时候加上括号或者右移,还有那个k,你直接用之前的那个i或者j就行,没必要再定义。而且你要看清楚它的要求,它要5个函数,你只有四个。还有在你比较大小,你最好不要改变他们原本的数据,最好做到交换。我的代码给你参考一下吧!

#include <stdio.h>

#include<math.h>

#define N 10

int total(int score[N])

{

    int sum,i;

    for(sum=0,i=0;i<N;i++)

        sum+=score[i];

    printf("总分是%d\n",sum);

    return sum;

}

int max(int score[N])

{

    int m,i;

    for(m=score[0],i=1;i<N;i++)

    {

        if(m<score[i])

        {

            int tmp=m;

            m=score[i];

            score[i]=tmp;

        }

        else

            continue;

    }

    printf("最大值是%d\n",m);

    return m;

}

int min(int score[N])

{

    int n,i;

    for(n=score[0],i=1;i<N;i++)

    {

        if(n>score[i])

        {

            int tmp=n;

            n=score[i];

            score[i]=tmp;

        }

        else

            continue;

    }

    printf("最小值是%d\n",n);

    return n;

}

int avg(int score[N])

{

    int i;

    double a;

    a=total(score)/N;

    printf("平均分是%lf\n",a);

    return a;

}

void order(int score[N])

{

    int i,j;

    for(i=N;i>=0;i--)

    {

        for(j=0;j<i;j++)

        {

            if(score[j]<score[j+1])

            {

                int tmp=score[j];

                score[j]=score[j+1];

                score[j+1]=tmp;

            }

            else

                continue;

        }

    }

    for(i=0;i<=N;i++)

    {

        printf("%d,",score[i]);

    }

}

int main()

{

    int score[N]={67,98,75,63,82,79,81,91,66,84};

    total(score);

    max(score);

    min(score);

    avg(score);

    order(score);

    return 0;

}


1 回复 有任何疑惑可以回复我~
#1

qq_世界五彩_我执纯白_0 提问者

非常感谢!
2018-02-24 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C语言入门
  • 参与学习       926290    人
  • 解答问题       20799    个

C语言入门视频教程,带你进入编程世界的必修课-C语言

进入课程

为什么不对呢

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信