题目:用scanf()输入一些字符串,然后输出最长的字符串。
编写的这个程序,当最长字符串不在第一位时,输出的只能是最后输入的一个字符串,到底哪里错了,求解。
```c
#include<stdio.h>
#include<string.h>
int main()
{
char s1[10],s2[10],*p;
int n,i=0,j;
printf("Enter n:");
scanf("%d",&n);
printf("Enter %d strings:",n);
scanf("%s",&s1);
p=s1;
for(j=0;j<n-1;j++)
{
scanf("%s",&s2);
if(strlen(s2)>strlen(s1))
p=s2;
}
printf("%s",p);
return 0;
}
```
修改如下,供参考:
#include<stdio.h>
#include<string.h>
int main()
{
char s1[10], s2[10], * p;
int n, i = 0, j;
printf("Enter n:");
scanf("%d", &n);
printf("Enter %d strings:\n", n);
while (n--)
{
scanf("%s", s1);
j = strlen(s1);
if (j > i){
i = j;
strcpy(s2, s1);
}
}
printf("%s", s2);
return 0;
}