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

为什么这个我在VC上能运行,可到这就不行呢

#include <stdio.h>


int total(int score[]);

int high(int score[]);

int low(int score[]);

int average(int score[]);

void sorting(int score[]);

int main()

{

    const int N=10;

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

    printf("total:%d\n",total(score));

    printf("high:%d\n",high(score));

printf("low:%d\n",low(score));

 printf("average:%d\n",average(score));

 sorting(score);

    return 0;

}

int total(int score[])

{

    

    int i,sum=0;

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

    {

           sum+=score[i];

        }

    return sum;

}

int high(int score[])

{

    int i,max=score[0];

    for(i=1;i<10;i++)

    {

       if(score[i]>max)

       {

           max=score[i];

       }

    }

  return max;

}

int low(int score[])

{

    int i,min=score[0];

    for(i=1;i<10;i++)

    {

        if(score[i]<min)

        {

            min=score[i];

        }

    }

   return min;

}

int average(int score[])

{

    int i,sum=0,Ave;

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

    {

        sum+=score[i];

    }

    Ave=sum/10;

  return Ave;

    }

    void sorting(int a[])

    {

        int i,j, t;

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

    {

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

        {

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

            {

                 t=a[j];

                a[j]=a[j+1];

                a[j+1]= t;

                }

        }

        }

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

        {

            printf("%d\t",a[i]);

        }

    }


正在回答

3 回答

我在VC上咋不行呢,你把 int score[N]={67,98,75,63,82,79,81,91,66,84};这句话,换成 int score[10]={67,98,75,63,82,79,81,91,66,84};就应该可以了

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

qq_豌豆公主_0 提问者

已经成功了,灰常感谢
2015-02-27 回复 有任何疑惑可以回复我~

稍微多说一点:

C语言:

在传统的C中,数组的大小必须能在编译时确定

所以在定义数组时如果指定大小只能使用大于0的整型常量(字面量、枚举常量)。在C中用const修饰的变量并不被视作“常量”,const只是向编译器强调该变量不能修改。

要么就是不写大小,而用初始化列表来定义数组,这样编译器就根据你提供的列表中元素的个数来确定数组大小,显然这个数在编译时是可以确定的。

或者也可以同时指定大小和提供初始化列表,不过列表中的元素个数不能超过你指定的数组大小。

在函数参数列表中声明的数组还有更多的规定,不过通常不会写这么复杂的,你先不用管它。

后来C99标准引入了“变长数组”(VLA),允许在定义数组时用变量指定大小,但只限于局部作用域定义的数组(在global scope定义的数组不行)。顺便说一句,引入这个特性争议极大。


C++语言:

C++并没有变长数组的概念。不过const修饰的变量被视作“常量”,所以可以用const修饰的变量来指定数组大小。


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

在C语言中,用变量来确定大小的这种数组,在定义的同时不能被初始化。

不过在C++中可以,所以你是不是用VC++来编译了?

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

qq_豌豆公主_0 提问者

原来如此,我前面已经用const定义了N,居然也不行,谢谢了
2015-02-27 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么这个我在VC上能运行,可到这就不行呢

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