【发布时间】:2011-10-17 10:38:08
【问题描述】:
我正在使用选择排序对来自板球队的名单进行排序。
在首先重复一个名称 3 次后排序起作用,这从我正在排序的数组中消除了另外两个名称。
从数组输入(按顺序):
Clarke Watson Beer Copeland Haddin Harris Hughes Hussey Johnson Khawaja Lyon Marsh Pattinson Ponting Siddle Warner
排序后的输出:
啤酒 啤酒 啤酒 Copeland Haddin Harris Hughes Hussey Johnson Khawaja Lyon Marsh Pattinson Ponting
代码:
void sort_names (Team_t player[]) {
int pos;
int min;
int i, str_check;
char *temp = NULL;
for (pos = 0; pos < MAX_PLYR; pos++) {
min = pos;
for (i = (pos + 1); i < MAX_PLYR; i++) {
str_check = strcmp(player[i].pname, player[min].pname);
if (str_check < 0) {
min = i;
}
}
if (min != pos) {
temp = player[pos].pname;
strcpy(player[pos].pname, player[min].pname);
strcpy(player[min].pname, temp);
}
}
}
【问题讨论】:
-
您是否尝试过使用调试器(甚至笔和纸)单步执行代码以查看发生了什么?
-
我可能遗漏了一些东西,我已经在办公桌上检查了几次,然后断点了。
-
你的代码在喝了“啤酒”后喝醉了:-/
标签: c arrays string logic selection