【PTA】找最长的字符串

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;
}

猜你喜欢

转载自blog.csdn.net/jiangxiaoshan123/article/details/81746685