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

2025-03-06 21:01:01
推荐回答(2个)
回答1:

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

 

#include
#include
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 {
  for(k=i+1;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 {
  puts(str[i]);
 }
}

回答2:

你可以先将是字符的提出来,保存在另外一个数组中,之后按照ascll 码的大小排序。