课堂练习“华为算法笔试”题目代码实现。

题目:输入一段字符串,输出最长的全字母字符串
一开始代码

#include
char a[100],b[100];
int main()
{
	int i,num=0,s,max=0,len;
	gets(a);
	for(i=0;a[i];i++)
	{
		if(a[i]>='a'&&a[i]<='z'||a[i]>='A'&&a[i]<='Z')
			num++;
		else
		{
			if(num>max)
			{
				s=i-num;
				max=num;
			}
			num=0;
		}
	}
	for(int j=s,k=0;k<max;j++,k++)
		b[k]=a[j];
	puts(b);
	getchar();getchar();
	return 0;
}

要考虑到最长字符串出现在最后一个字符串,
这个代码无法实现
改进后如下

#include
char a[100],b[100];
int main()
{
	int i,num=0,s,max=0,len;
	gets(a);
	if(a[0]>='a'&&a[0]<='z'||a[0]>='A'&&a[0]<='Z')
			num++;
	for(i=0;a[i];i++)
	{
		if(a[i+1]>='a'&&a[i+1]<='z'||a[i+1]>='A'&&a[i+1]<='Z')
			num++;
		else
		{
			if(num>max)
			{
				s=i-num+1;
				max=num;
			}
			num=0;
		}
	}
	if(max==0)
	{
		printf("无");
	    return 0;
	}
	for(int j=s,k=0;k<max;j++,k++)
		b[k]=a[j];
	puts(b);
	getchar();getchar();
	return 0;
}

那么改为当前字符的判断下一字符是否为字母但这样会忽视第一个字符a[0]
所以考虑到没有字母字符串,和字符串第一个字符为字母的情况

你可能感兴趣的:(作业)