输入一个含若干字符的字符串,分别找出字母和数字,其余字符忽略,将重复的去掉后分别按从小到大的顺序输出。
本人初学,望高人指点,谢过!!!
//程序还有问题,查不多来,随帮我分析下,谢谢.
#include <stdio.h>
void paixu(char a[],int n);
int del(char a[],int n);
void main()
{
char ch[100];
char num[100];
char str[200];
int n=0,c=0;
int line;
scanf("%s",str);
for(int i=0;str[i]!='\0';i++)
{
if((str[i]>=0x41 && str[i]<=0x5a) || (str[i]>=0x61 && str[i]<=0x7a))
{ch[c]=str[i];
c++;}
else
if(str[i]>=0x30 && str[i]<=0x39)
{num[n]=str[i];
n++;}
}
ch[c]='\0';
num[n]='\0';
c-=1;
n-=1;
paixu(num,n);
line=del(num,n);
for(i=0;i<line+1;i++)
printf("%c",num[i]);
printf("\n");
paixu(ch,n);
line=del(ch,n);
for(i=0;i<=line+1;i++)
printf("%c",ch[i]);
printf("\n");
}
void paixu(char a[],int n)
{
int i,j;
char t;
for(i=1;i<=n;i++)
for(j=0;j<=n-i;j++)
if(a[j]>a[j+1])
{ t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
int del(char a[],int n)
{
int x,y,t=0;
for(x=1;x<=n;x++)
for(y=0;y<=n-x;y++)
if(a[y]==a[y+1])
{for(t=y+1;t<=n-y;t++)
a[t]=a[t+1];
n-=1;}
a[n+1]='\0';
return n;
}
[[it] 本帖最后由 hokers 于 2008-11-12 22:49 编辑 [/it]]