1、for循环应该是小于n,而不是小于等于,n个元素是从0~(n-1)一共n个所以应该是小于。
2、使用gets当for循环开始i=0的时候,gets获取到了空给a[0],所以能输入的个数是n-1个,排序之后输出的第一个也是空值。
3、建议使用scanf来获取输入给a[i],同时搭配system("cls"),清除上一次的缓存。代码参考如下:
int main() {
int n,i,j;
puts("请输入待排序的单词的个数");
scanf("%d", &n);
char a[n][11], t[11];
puts("请依次录入待排序的单词且与上方确认的单词数保持一致");
system("cls");
for (i = 0; i < n; i++) {
scanf("%s", a[i]);
}
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if (strcmp(a[i], a[j]) > 0) {
strcpy(t, a[i]);
strcpy(a[i], a[j]);
strcpy(a[j], t);
}
}
}
for (i = 0; i < n; i++) {
puts(a[i]);
}
return 0;
}
char a[n];
真的可以编译运行吗?