#include <stdio.h> #include <stdlib.h> void min(char num[]); int main() { char num[100]; printf("Input five countries' names:\n"); gets(num); min(num); printf("The minimum is:%s\n",num[0]); return 0; } void min(char num[]) { int i,b; for(i=0;num[i]!='\0';i++) { if(strcmp(num[i],num[i+1])) { b=num[i]; num[i]=num[i+1]; num[i+1]=b; } } }
时间: 2024-03-08 17:51:32 浏览: 55
这段代码存在一些问题,可能会导致程序运行错误。具体来说:
1. 使用了不安全的函数gets(),可能会导致缓冲区溢出问题。应该使用更安全的fgets()。
2. 函数min()中的参数num应该为char*类型,而不是char[]类型。
3. 在min()函数中,比较字符串应该使用strcmp()函数,而不是直接比较字符。
4. 在printf()函数中,应该使用格式化字符%s,而不是单个字符。
考虑到这些问题,我给出了修改后的代码如下:
```
#include <stdio.h>
#include <stdlib.h>
#include #include <string.h>
void min(char* num);
int main() {
char num[100];
printf("Input five countries' names:\n");
fgets(num, 100, stdin);
min(num);
printf("The minimum is:%s\n", num);
return 0;
}
void min(char* num) {
int i, b;
for(i = 0; num[i + 1] != '\0'; i++) {
if(strcmp(&num[i], &num[i + 1]) > 0) {
b = num[i];
num[i] = num[i + 1];
num[i + 1] = b;
}
}
}
```
以上是我对你提供代码的修改建议,希望对你有所帮助。
阅读全文