试着写了一个,还请大家多挑毛病。
程序代码:#include
#include
#include
#define N 100
int cmp(const void *a,const void *b)/*排序函数中的比较函数*/
{
return (*(char *)a-*(char *)b);
}
void input(char *a)/* 输入 */
{
printf("input a[]:\n");
scanf("%s",a);
}
void _sort(char *a) /* 排序 */
{
qsort(a,strlen(a),sizeof(a[0]),cmp);
}
void _del(char *a) /*删除相同字符的函数 */
{
int i,j,t;
char b[N]; /* 定义个字符型数组,用于拷贝 */
t=strlen(a); /* 得出字符串 a 的长度+1 */
for(i=0;i
for(j=i+1;j
if(a[i]==a[j]) /* 当发现相同的两个字符时 */
{
while(a[j]==a[j+1]) /* 往下比较,直到发现不相同的字符 */
j++;
strcpy(b,a); /* 拷贝字符串 a 到 b 中 */
b[i]=0; /* 截取发现相同字符的位置 */
strcat(b,&a[j]); /*把中间相同的字符舍弃,然后把字符串 a 接到 b 上*/
strcpy(a,b); /* 把新的字符串 b 拷贝到 a 上*/
t=strlen(a); /* 测出新的 a 串的长度+1 */
break; /* 跳出本次循环 */
}
}
int main(void)
{
int i=0,j,k;
char a[N];
char Char[N],num[N];
input(a); /* 输入字符串 */
for(k=j=0;i
{
if((a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z'))
Char[j++]=a[i]; /* 当发现字符时,存入存储字符的字符串 */
if(a[i]>='0'&&a[i]<='9')
num[k++]=a[i]; /* 当发现数字时,存入存储数字的字符串 */
}
Char[j]=num[k]=0; /* 添加结束标记 */
_sort(Char);
_sort(num); /* 排序 */
_del(Char);
_del(num); /* 删除相同的字符 */
puts("char="); /* 输出 */
puts(Char);
puts("num=");
puts(num);
return 0;
}