主题:[讨论]这个形参有什么问题?
zlinsc
[专家分:0] 发布于 2010-05-20 17:21:00
以上为测试。
void asnam(char nam[][N],int num[]) /*按姓名升序排列****/
{
void output(char nam[][N],int num[]);
int i,j,k,p,temp;
char ctemp[N];
for(i=0;i<pn-1;i++)
for(j=1;j<pn;j++)
for(k=0;k<N;k++)
{
if(nam[i][k]>nam[j][k])
{
for(p=0;p<N;p++)
{
ctemp[p]=nam[j][p];
nam[j][p]=nam[i][p];
nam[i][p]=ctemp[p];
}
temp=num[j];
num[j]=num[i];
num[i]=temp;
break;
}
if(nam[i][k]<nam[j][k])
break;
}
output(name,number);
}
最后更新于:2010-05-20 17:22:00
回复列表 (共6个回复)
沙发
雪光风剑 [专家分:27190] 发布于 2010-05-20 19:54:00
能写点注释么……没有完整代码的情况下看这个函数很费劲,也不好调试
板凳
雪光风剑 [专家分:27190] 发布于 2010-05-20 19:55:00
if(nam[i][k]<nam[j][k])
break;
这个判断的意图是什么,感觉很突兀
3 楼
zlinsc [专家分:0] 发布于 2010-05-20 22:30:00
完整代码很长,不便分析
4 楼
zlinsc [专家分:0] 发布于 2010-05-20 22:33:00
[quote]if(nam[i][k]<nam[j][k])
break;
这个判断的意图是什么,感觉很突兀[/quote]
该句所在循环是进行字母升序排列,当nam[i][k]<nam[j][k]时,以及是升序排列,直接跳出循环。
5 楼
雪光风剑 [专家分:27190] 发布于 2010-05-20 22:34:00
你注释掉这个判断试试看
6 楼
zlinsc [专家分:0] 发布于 2010-05-21 12:32:00
自己解决了,循环要j=i+1
我来回复