本题要求编写程序,针对输入的N个字符串,输出其中最长的字符串。
输入格式:
输入第一行给出正整数N;随后N行,每行给出一个长度小于80的非空字符串,其中不会出现换行符,空格,制表符。
输出格式:
在一行中用以下格式输出最长的字符串:
The longest is: 最长的字符串
如果字符串的长度相同,则输出先输入的字符串。
输入样例:
5
li
wang
zhang
jin
xiang
输出样例:
The longest is: zhang
正解:
#include<stdio.h>
#include<string.h>
int main()
{
int n;
scanf("%d",&n);
char a[n][80];
int i, j, k, max;
max=0;
for(i=0; i<n; i++){
scanf("%s",a[i]);
k=strlen(a[i]);
if(k>max){
max=k;
j=i;
}
}
printf("The longest is: %s\n",a[j]);
return 0;
}
之前的错误代码:
#include<stdio.h>
#include<string.h>
int main()
{
int n;
scanf("%d",&n);
char a[n][80];
int i, j, k, max;
max=0;
for(i=0; i<=n; i++){//数组的循环条件 i<=n,应该是 i<n,因为数组的索引是从0开始的,所以最大索引应该是n-1
scanf("%s",&a[i]);//在输入字符串时,不需要使用 & 操作符,因为数组名 a 本身就是一个指针
k=strlen(a[i]);
if(k>max){
max=k;
j=i;
}
}
printf("The longest is: %s\n",a[j]);
return 0;
}