7-61 找最长的字符串(15 分)
本题要求编写程序,针对输入的N个字符串,输出其中最长的字符串。
输入格式:
输入第一行给出正整数N;随后N行,每行给出一个长度小于80的非空字符串,其中不会出现换行符,空格,制表符。
输出格式:
在一行中用以下格式输出最长的字符串:
The longest is: 最长的字符串
如果字符串的长度相同,则输出先输入的字符串。
输入样例:
5
li
wang
zhang
jin
xiang
输出样例:
The longest is: zhang
思路:
- 题目相对简单,我写的思路是用一个二维的数组存放字符串,另外定义一个数组存放字符串的长度。找出最长的字符串长度的下标,输出该字符串。
- 去网上看了下网友的程序,还是觉得我会把事情想复杂了。网友只定义了两个字符串,一个用来存放当前输入的字符串,另一个暂存最长的字符串。将字符串的个数作为循环的控制条件,每输入一个字符串比较一次。
- 还是要多多学习啊
代码:
1.
#include <stdio.h>
const int num=81;
int main(int argc,const char *argv[])
{
int n;
scanf("%d",&n);
char a[n][num];//定义二维数组存放字符串
for(int ii=0;ii<n;ii++)
{
scanf("%s",&a[ii]);
}
int b[n];//定义整型数组存放每一行字符串的个数
for(int i=0;i<n;i++)
{
b[i]=0;
for(int j=0;a[i][j]!='\0';j++)//遍历数组得到每一个字符串的长度
{
b[i]++;
}
}
int max=b[0];
int cnt=0;
for(int k=0;k<n;k++)//找出最长的字符串
{
if(b[k]>max)
{
max=b[k];
cnt=k;
}
}
printf("The longest is: %s",a[cnt]);
return 0;
}
2.
#include <stdio.h>
#include <string.h>
#define max 81
int main()
{
int n, i;
//str1存储当前输入,str2暂存最长输入的字符串
char a[max], b[max];
scanf("%d",&n);
fgets(a,max,stdin);
strcpy(b, a);
for(i=1; i<n; i++)
{
fgets(a,max,stdin);
if(strlen(a)>strlen(b))
{
strcpy(b, a);
}
}
printf("The longest is: %s", str2);
return 0;
}
版权声明:本文为jiangxiaoshan123原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。