c语言判断重复输入字母和中文,输入一个含若干字符的字符串,分别找出字母和数字,其余字符忽略,将重复的去掉后分别按从小到大的顺序输出。...

试着写了一个,还请大家多挑毛病。

21c92f7342edc52acb5684b0b88bdcec.png程序代码:#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;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值