C语言 练习6-分离字符串,使前面是数字,后面是字母,不改变顺序

test

思想:

1、指:指针数组指向字符数组;
2、排:从p[0]到p[n]挨个判断,如果是数字就移到第count(初始为0 每移动一次数字+1)个位置,如果是\0就结束排序。

#include <stdio.h>
#include <stdlib.h>

void exchange(char *p1,char *p2)
{
	int temp;
	temp=*p1;
	*p1=*p2;
	*p2=temp;
}

void sort(char *p)
{
	int i,j,count=0;
	for(i=1; i<100; i++) //排序 遇到数字就往前排
	{
		if(48<=p[i] && p[i]<=57)
		{
			if(p[i]=='\0') break;
			for(j=i; j>count; j--)
			{
				exchange(&p[j-1],&p[j]);
			}
			count++;
		}
	}
}

int main()
{
	char c[100];
	char *p;
	int i;
	while(gets(c))
	{
		p=(char*)malloc(sizeof(char*)*100);
		for(i=0; i<100; i++) //初始化所有指针
		{
			p[i]=c[i];
		}
		sort(p);
		puts(p);
	}

	system("pause");
}

在这里插入图片描述

发布了35 篇原创文章 · 获赞 2 · 访问量 923

猜你喜欢

转载自blog.csdn.net/qq_45735810/article/details/102991213