qq_豌豆公主_0
2015-02-26 11:58
#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]);
}
}
我在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};就应该可以了
稍微多说一点:
C语言:
在传统的C中,数组的大小必须能在编译时确定。
所以在定义数组时如果指定大小只能使用大于0的整型常量(字面量、枚举常量)。在C中用const修饰的变量并不被视作“常量”,const只是向编译器强调该变量不能修改。
要么就是不写大小,而用初始化列表来定义数组,这样编译器就根据你提供的列表中元素的个数来确定数组大小,显然这个数在编译时是可以确定的。
或者也可以同时指定大小和提供初始化列表,不过列表中的元素个数不能超过你指定的数组大小。
在函数参数列表中声明的数组还有更多的规定,不过通常不会写这么复杂的,你先不用管它。
后来C99标准引入了“变长数组”(VLA),允许在定义数组时用变量指定大小,但只限于局部作用域定义的数组(在global scope定义的数组不行)。顺便说一句,引入这个特性争议极大。
C++语言:
C++并没有变长数组的概念。不过const修饰的变量被视作“常量”,所以可以用const修饰的变量来指定数组大小。
在C语言中,用变量来确定大小的这种数组,在定义的同时不能被初始化。
不过在C++中可以,所以你是不是用VC++来编译了?
C语言入门
926020 学习 · 20793 问题
相似问题