.程序改错调试,将5个字符串从小到大排序后输出。(第二次指针课上完后再做)源程序(有错误的程序)#include<stdio.h>#include<string.h>voidfsort(charcname[][6],intn){intk,j;chartmp[6];for(k=1;k<n;k++)/*调试时设置断点*/for(j=0;j<n-k;j++)if(cname[j]>cname[j+1]){t=cname[j];cname[j]=cname[j+1];cname[j+1]=t;}}intmain(){inti;charcname[5][6]={“wang”,”li”,”zhang”,”jin”,”xian”};fsort(cname,5);for(i=0;i<5;i++)printf(“%s\n”,cname[i]);}
时间: 2024-03-11 20:46:39 浏览: 99
好的,下面是修改后的代码:
```c
#include <stdio.h>
#include <string.h>
void fsort(char cname[][6], int n) {
int k, j;
char tmp[6];
for (k = 1; k < n; k++) /*调试时设置断点*/
for (j = 0; j < n - k; j++)
if (strcmp(cname[j], cname[j + 1]) > 0) {
strcpy(tmp, cname[j]);
strcpy(cname[j], cname[j + 1]);
strcpy(cname[j + 1], tmp);
}
}
int main() {
int i;
char cname[5][6] = {"wang", "li", "zhang", "jin", "xian"};
fsort(cname, 5);
for (i = 0; i < 5; i++)
printf("%s\n", cname[i]);
return 0;
}
```
主要修改如下:
1. 函数 `fsort` 中,变量 `tmp` 的类型应该是 `char` 数组。
2. 在 `fsort` 函数中,比较两个字符串的大小应该使用 `strcmp` 函数,而不是直接使用 `>` 进行比较。
3. 在 `fsort` 函数中,交换两个字符串的位置应该使用 `strcpy` 函数,而不是直接赋值语句 `=`。
4. 在 `main` 函数中,字符串数组的初始化应该使用双引号 `"`,而不是中文的引号 `“`。
修改后的代码中,我们使用了 `strcmp` 函数来比较两个字符串的大小,使用 `strcpy` 函数来交换两个字符串的位置,确保了排序的正确性。
阅读全文