c语言 用二维数组输入姓名并排序

#include<stdio.h>
#include<string.h>
void InputName(char Student[][8])
{
int i;
for(i=0;i<8;i++)
scanf("%s",Student[i]);
}
void BubbleSort(char Student[][8])
{
int i,j;
char *a;
for(i=0;i<8-1;i++)
{
for(j=0;j<8-1-i;j++)
if(strcmp(Student[j],Student[j+1])>0)
{
strcpy(a,Student[j]);
strcpy(Student[j],Student[j+1]);
strcpy(Student[j+1],a);
}
}
}
void outputName(char Student[][8])
{
int i;
for(i=0;i<8;i++)
printf("%s\n",Student[i]);
}
void main()
{
char Student[10][8];
InputName(Student);
BubbleSort(Student);
outputName(Student);

}

第1个回答  2012-12-14
然后呢,
你有什么需要都讲明白了呀,
这叫我们怎么帮你呢,
都不清楚你这是要干啥?
还有,
程序你该有几个注释吧,
这叫我们怎么看呢,
谁知道你定义那些变量什么意思呢,
函数值做什么的?
就这么给你一个程序,
你有那心情慢慢琢磨?追问

我就是想问我那些二维数组在各个地方的使用有么有错误?

追答

你那数组使用的没什么问题!!!
你不想知道你那个有什么其他问题吗?
原本以为你会追问呢!!!
你那个第二个函数里 定义的 a 使用是错误的
你定义了个指针却没有申请空间就对其使用,
不出错就怪了,
你可以malloc下
或者直接就换成数组 a[10];
ok?

追问

void SelectSort(char StudNo[][8],float Score[8])
{
int i,j,k;
float t;
char a[10];
for(i=0;iScore[i])
k=j;
if(k!=i)
{
strcpy(a,StudNo[i]);
strcpy(StudNo[i],StudNo[k]);
strcpy(StudNo[k],a);
t=Score[k];
Score[k]=Score[i];
Score[i]=t;
}

}
}
这个选择排序为什么不起作用?

追答

你看你那个 k 的值是有 i 得来的 ,
k 跟 i比 就相当于 i 跟 i 比
能有效果吗?

兄弟
你的问题解决了没?
如果我的回答你不满意那我没什么说的,
如果还可以,
那你就采纳了吧!!!!

本回答被提问者采纳
相似回答