帮我看一下我的代码有什么问题#include<stdio.h> #include<string.h> int main() { char a[100][100],t[100]; int i=0,j=0,n; while(scanf("%s",&a[i])==1)i++; n=i; for(i=0;i<n;i++) { for(j=0;j<n;j++) { if(strcmp(a[i],a[j])) { strcpy(t,a[i]); strcpy(a[i],a[j]); strcpy(a[j],t); } } } for(i=0;i<n;i++) { printf("%s\n",a[i]); } }
时间: 2024-03-22 11:39:41 浏览: 36
我写的代码,谁能帮我解决问题
3星 · 编辑精心推荐
你的代码有一个小问题,就是在使用 `scanf("%s",&a[i])` 时,应该把 `&` 去掉,因为 `a[i]` 已经是一个字符数组,可以直接作为参数传递给 `scanf` 函数。修改后的代码如下:
```c
#include <stdio.h>
#include <string.h>
int main() {
char a[100][100], t[100];
int i = 0, j = 0, n;
while (scanf("%s", a[i]) == 1) i++;
n = i;
for (i = 0; i < n; i++) {
for (j = 0; 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++) {
printf("%s\n", a[i]);
}
return 0;
}
```
另外,你的排序逻辑也有问题,应该使用 `strcmp(a[i], a[j]) < 0` 作为判断条件,表示如果 `a[i]` 小于 `a[j]`,则交换它们的位置。
阅读全文