思路:
一个一维字符数组拆成一个二维数组,二维数组看成多个一维数组。再比较二维数组中的每个一维数组的长度,初始化maxlen,把二维数组的str[0]的长度设为最大长度长度。再依次比较,找出长度最大的一维数组。
代码:
#include#include #define N 50 int main() { void result(char str1[]); char str1[N]; printf("请输入字符串:n"); //scanf("%s",str1); // scanf会以键盘输入空格为结束 gets(str1); // fgets(str1,N,stdin); result(str1); return 0; } void result(char str1[]) { int i,j,m,h,maxlen,max=0,len=strlen(str1); char str2[N][N]; printf("字符串长度len=%dn",len); printf("------------n"); for(i=0,j=0,h=0;i<=len;i++) { if(str1[i]!=' ') { str2[j][h]=str1[i]; h++; } else { //把连续的所有空格都换成' ',存在同一个str2[j]中,避免连续空格而新占一个str2[j] if(str1[i+1]==' ') { str2[j][h]=' '; h++; } else { str2[j][h]=' '; j=j+1; h=0; } } } maxlen=strlen(str2[0]); for(m=0;m<=j;m++) { int n=strlen(str2[m]); // printf("str2[%d]=%dn",m,n); if(n>maxlen) { maxlen=strlen(str2[m]); max=m; } //printf("%sn",str2[m]); printf("strlen(str2[%d])=%dn",m,strlen(str2[m])); } printf("------------n"); printf("运行结果为:n"); printf("%s",str2[max]); }
运行结果:



