中国行政区划图高清版:又有一道C语言的题需要请教!

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/28 18:27:00
#include<stdio.h>
#define N 10
int arrange (int y[N]);
void main()
{
int st[N][2],i,j,x[N],list[N];
printf("请按循环方式输入学生的学号和成绩:\n");
for(i=0;i<N;i++)
{
scanf("%d",&st[i][0]);
for(j=1;j<2;j++)
{
scanf("%d",&st[i][j]);
}
}
for(i=0;i<N;i++)
x[i]=st[i][1];
list[N]=arrange(x);
printf("学生成绩从小到大的顺序为:\n");
for(i=0;i<N;i++)
printf("%d",list[i]);
printf("\n");
}
int arrange(int y[N])
{
int i,j,tmp;
for(i=0;i<N;i=i+1)
for(j=N-1;j>i;j=j-1)
if(y[j-1]>y[j])
{
tmp=y[j-1];
y[j-1]=y[j];
y[j]=tmp;
}
return y[N];
}
输入10个学生的学号和英语成绩,并且要把英语成绩排序

错误:函数不能返回一个数组,所以list[N]=arrange(x); 更是错了!如果学了指针,你就知道该怎么做了!
注意:数组作为函数形参的话,函数是不会重新去定义一个相同大小的数组的,数组还是原来的数组,因此,运行arrange函数的时候,数组x的值随函数中的数组y的改变而改变,所以直接在后面输出数组x,你也会看到经过排序的10个英语成绩!
#include<stdio.h>
#define N 10
void arrange(int y[N]);

void main()
{
int st[N][2],i,j,x[N];
printf("请按循环方式输入学生的学号和成绩:\n");
for(i=0;i<N;i++)
{
scanf("%d",&st[i][0]);
for(j=1;j<2;j++)
{
scanf("%d",&st[i][j]);
}
}
for(i=0;i<N;i++)
x[i]=st[i][1];
arrange(x);
printf("学生成绩从小到大的顺序为:\n");
for(i=0;i<N;i++)
printf("%d",x[i]);
printf("\n");
getch();
}

void arrange(int y[N])
{
int i,j,tmp;
for(i=0;i<N;i=i+1)
for(j=N-1;j>i;j=j-1)
if(y[j-1]>y[j])
{
tmp=y[j-1];
y[j-1]=y[j];
y[j]=tmp;
}
}

是改错吗?