#define n 2
int remember[n];
for(i=0;i<n;i++)
remember[i]=i;
remember[n]=\0
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
if(h[remember[i]].score<h[j].score)
k=remember[i];
remember[i]=remember[j];
remember[j]=k;
} // 用冒泡排序方法,用辅助数组记住头结点下标
for(i=0;i<n;i++)
{
printf("\n\n*****学校编号:%d\n",h[remember[i]].schoolnum);
printf("*****学校总分:%d\n" ,h[remember[i]].score);
printf("*****男团总分:%d\n",h[remember[i]].mscore);
printf("*****女团总分: %d\n\n\n",h[remember[i]].wscore);
int remember[n];
下标范围是0..n-1,没有n,你下面有
remember[n]=\0
显然下标越界了,另,这句里\0是否因为显示问题而缺少引号?否则这样好像语法有问题。
按数组操作,没有必要赋值 remember[n]=\0
一般只有将数组当成字符串操作时,才会考虑在最后一个下标赋零,防止字符串没有结束符。但前提是不能越界!
如果一定要赋零零值,可以考虑定义时增加一个元素,如:int remember[n + 1];
骚年,编程的时候要仔细,a[k++]=c;你的k的初值是多少啊?
你没给k赋初值,计算机怎么知道a[k++]在那里啊?当然会抛出异常了!根据你这个题目的意思,在函数头加个int k=0.就好了。
remember[n]=\0,数组越界,破坏了程序
你Debug下调试一下,看看,确保你的h[remember[i]]数组下标没有越界。
int remember[n];这是声明,没有初始化。仍然是数组越界