c语言 字符去重复以及冒泡排序

本文介绍了一种基于双层循环的字符串去重算法,通过比较字符串中每个字符与其后的所有字符来移除重复项,并在此基础上实现了字符的升序排序。该方法适用于小规模数据集,有助于理解基本的字符串操作和排序原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

核心去重的思想:
将字符串下标n数组元素与n+1的的所有元素判断是否相等,如果真,则将后面所有元素向前挪动一位,完毕后再次判断n是否等于n+1.以此完成去重

#include<stdio.h>

void main(){
//code start

	printf("###输入字符串#标识结束:\n");
	printf("\n");

	//声明字符数组长度101并初始化
	char str[101] = {'\0'};
	
	//循环赋值直到下标99并判断遇到#结束, 留个元素给系统防止越界
	
	for(int l = 0; l < 100;l++){
		scanf("%c",&str[l]);
		if(str[l] == '#'){str[l] = '\0';break;}
	}
	
	printf("\n");
	printf("###输入结束\n");
	printf("\n");
	
	printf("###输入的字符串是: %s\n",str);
	printf("\n");

  	
	//循环比对去重复
	for(int i =0; str[i] != '\0';i++){
		for(int k = 1+i; str[k] != '\0';k++){
			int w = k;
			while(str[i] == str[k]){
				str[w] = str[w+1];
				w++;
				if(str[w] == '\0'){k-=1;break;}
			}
			
			
		}
	}
	printf("###字符去重复后: %s\n",str);

	printf("\n");
	printf("###根据字符小到大排序\n");
		
	//排序
	for(int z = 0; z < 100; z++){
		if(str[z] == '\0'){
			for(int x = 0; x < z;x++){
				for(int g =0 ; g < z -x-1;g++){
					if(str[g] > str[g+1]){
						int temp = str[g];
						str[g] = str[g+1];
						str[g+1] = temp;
					}
				}
			}
			break;
		}
	}

	printf("%s\n",str);
	printf("\n");

	printf("###程序运行完毕\n");

//code end
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值