C语言;输入一个不超过200个字符的字符串,其中字符串只包括字母、数字、空格三种字符

从字符串中提取所有连续字母,并且每段连续字母构成一个字符串。
对提取的所有字符串按从小到大排序,将排序结果输出。

这么看有点乱,你可以下载附件,内容一样

 

#include<stdio.h>
#include<string.h>
main()
{
 char s[200],temp[26];
 char str[100][26];
 int i=0,j=0,k=0;
 int flag=0;
 printf("please input : \n"); 
 scanf("%[^\n]s",s);    //注意这里"%[^\n]s",读到\n为止,也就是读一行
 while(s[i]!='\0')  //提取字符串
 { 
  if(('a'<=s[i]&&s[i]<='z')||('A'<=s[i]&&s[i]<='Z'))  //是字母
  {
   if(s[i]==s[i+1]-1)  //开始出现连续字母
   {
    flag=1;    //连续字母标记
    str[j][k]=s[i];
    i++;
    k++;
   }
   else if((s[i]!=s[i+1]-1)&&flag==1)  //从此处开始字母不再连续
   {
    flag=0;
    str[j][k]=s[i];
    str[j][k+1]='\0';
    k=0;
    i++;
    j++;
   }
   else if((s[i]!=s[i+1]-1)&&flag==0)  //前面没有连续字母,此处也没开始出现连续字母
    i++;
  }
  else     //不是字母
  {
   flag=0;
   k=0;
   i++;
  }
 }
 for(i=0;i<j;i++)    //排序
 {
  for(k=i+1;k<j;k++)
  {
   if(strcmp(str[i],str[k])>0)
   {
    strcpy(temp,str[i]);
    strcpy(str[i],str[k]);
    strcpy(str[k],temp);
   }
  }
 }
 for(i=0;i<j;i++)  //输出
 {
  puts(str[i]);
 }
}

追问

其实我的意思是连续的字母
举个例子:
输入asdfnjer2445656wdfw3fty5

输出asdfnjer wdfw fty
这样的。

追答

#include
#include
int letter(char c)
{
if(('a'0)
{
strcpy(temp,str[i]);
strcpy(str[i],str[k]);
strcpy(str[k],temp);
}
}
}
printf("output : \n");
for(i=0;i<j;i++) //输出
{
printf("%s ",str[i]);
}
printf("\n");
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-26
你可以先将是字符的提出来,保存在另外一个数组中,之后按照ascll 码的大小排序。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网