内存:64  时间:1

题目描述

输入一行字符,分别归类出其中英文字母、空格、数字和其他字符,并分别按字母、空格、数字、其他字符输出。
要求:字母、数字字符要排序;空格的首尾用*标志;不删除重复字符。

输入

输出

样例输入

12 sd w$%^. ,/’;\’adfw

样例输出

addfsww
* *
12
$%^.,/’;\’

提示

代码如下

#include <stdio.h> 
#include <stdlib.h> 
#include<string.h> 
void sort(char str[],int n) 
{ 
    int i,j; 
    char t; 
    for(i=0;i<n;i++) 
    { 
        for(j=0;j<n-i-1;j++) 
        { 
            if(str[j]>str[j+1]) 
            { 
            	t=str[j]; 
            	str[j]=str[j+1]; 
           		str[j+1]=t; 
           }  
        } 
    } 
} 

int main() { 
    char str[100],str1[100],str2[100],str3[100],str4[100];
    int i=0,m=0,n=0,k=0,x=0;
	gets(str);
    for(i=0;str[i]!='\0';i++)
    {
    	if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z'))
    	{
    		str1[n++]=str[i];
    	}
    	else if(str[i]==' ')
    	{
    		str2[m++]=str[i];
    	}
    	else if(str[i]>='0'&&str[i]<='9')
    	{
    		str3[k++]=str[i];
    	}
    	else if((str[i]<'a'||str[i]>'z')&&(str[i]>'A'||str[i]<'Z')&&(str[i]<'0'||str[i]>'9')&&(str[i]!=' '))
    	{
    		str4[x++]=str[i];
    	}
    }
    str1[n]='\0';
    str3[k]='\0';
    str4[x]='\0';
    sort(str1,n);
    sort(str3,k);
    for(i=m;i>0;i--)
    {
    	str2[i]=str2[i-1];
    }
    str2[0]='*';
    str2[m+1]='*';
    str2[m+2]='\0';
    printf("%s\n",str1);
	printf("%s\n",str2);
	printf("%s\n",str3);
    printf("%s\n",str4);
    return 0; 
} 

代码来源于互联网,仅供参考!