#include<stdio.h> #include<string.h> int main() { char city[5][20],city1[20]; int i,j; for(i=0;i<5;i++) { scanf("%s",city[i]); } for(i=1;i<5;i++) { for(j=0;j<5-i;j++) { if(strcmp(city[j],city[j+1]>0)) { strcpy(city1,city[j]); strcpy(city[j],city[j+1]); strcpy(city[j+1],city1); } } } for(i=0;i<5;i++) { printf("%s\n",city[i]); } return 0; }以上代码无法正常运行,分析原因
时间: 2024-03-03 15:51:29 浏览: 20
可以看出,该程序中if语句的条件判断部分有问题,应该将strcmp(city[j],city[j+1]>0)改为strcmp(city[j],city[j+1])>0,即比较两个字符串的大小关系。另外,程序中的printf语句中缺少一个右括号,应该是printf("%s\n",city[i])。修改后的程序如下:
```
#include<stdio.h>
#include<string.h>
int main()
{
char city[5][20],city1[20];
int i,j;
for(i=0;i<5;i++)
{
scanf("%s",city[i]);
}
for(i=1;i<5;i++)
{
for(j=0;j<5-i;j++)
{
if(strcmp(city[j],city[j+1])>0)
{
strcpy(city1,city[j]);
strcpy(city[j],city[j+1]);
strcpy(city[j+1],city1);
}
}
}
for(i=0;i<5;i++)
{
printf("%s\n",city[i]);
}
return 0;
}
```