#include <stdio.h> #include <string.h> int main() { int num,size,target=-1,max=0; scanf("%d",&num); char ch[40]; for(int i=0;i<num;i++){ scanf("%s",ch); size=strlen(ch); if(max==0){max=size;target=i;} else if(size>max){max=size;target=i;} } printf("%s",ch[target]); }
时间: 2024-03-16 13:42:52 浏览: 81
这段代码存在两个问题:
1. 变量`ch`的大小只有40个字符,如果输入的字符串长度超过40,就会导致程序崩溃。
2. 变量`target`的初值为-1,当输入的第一个字符串长度为0时,变量`target`的值仍然为-1,这可能导致程序输出错误的结果。
为了解决第一个问题,可以将变量`ch`定义为二维字符数组,第二维的大小可以根据需要设置得更大一些,例如:
```
char ch[num][100];
```
这样就可以避免输入字符串长度超过40的问题。
为了解决第二个问题,可以将变量`target`的初值设为0,这样就可以避免输入的第一个字符串长度为0时导致的问题。
修改后的代码如下:
```
#include <stdio.h>
#include <string.h>
int main() {
int num, size, target = 0, max = 0;
scanf("%d", &num);
char ch[num][100];
for (int i = 0; i < num; i++) {
scanf("%s", ch[i]);
size = strlen(ch[i]);
if (size > max) {
max = size;
target = i;
}
}
printf("%s", ch[target]);
return 0;
}
```
这样就可以避免输入字符串长度超过40和变量初值问题导致的错误。
阅读全文