将字符串中字符按出现自出升序输出

#include "asendbytimes.h"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>



int comp(const void*a, const void * b)
{
	return *(int*)a -*(int*)b;
}




bool asendbytimes(char * in, char*out)
{
	if(NULL == in || NULL ==out)
	{
		return false;
	}

	printf("\nIN=%s, OUT=%s", in, out);

	int arr[150]={0};
	int arr_b[150]={0};
	int i=0;
	int index =0;
	printf("\n==\n");
/*
	for(i=0; i<=149;i++)
	{
		printf("%d ",arr[i]+1);
	}
*/

	for(i=0; i< strlen(in); i++)
	{
		//index = (int)in[i];

		arr[in[i]]++;
		arr_b[in[i]]++;
		printf("\nindex=[%d],ch=%c,arr[in[i]]=%d)",i,in[i],arr[in[i]]);
	}

	for(i=0;i< 150; i++)
	{
		if(arr[i] != 0)
		{
			printf("\narr[%d]=%d",i,arr[i]);
		}
		
	}
	/*
_CRTIMP void __cdecl qsort(__inout_bcount(_NumOfElements * _SizeOfElements) void * _Base, 
	__in size_t _NumOfElements, __in size_t _SizeOfElements, 
	        __in int (__cdecl * _PtFuncCompare)(const void *, const void *));
			*/
	qsort(arr, 150, sizeof(int), comp );
	
	int k=0;
	bool c[150]={false};
	char string[10];
	char newout[200]={};
	int out_index=0;
	for(i=0;i< 150; i++)
	{
		for(k=0; k <150; k++)
		if(arr[i] != 0 && arr[i]==arr_b[k] && c[k] == false)
		{
			
			printf("\n arr[%d]=%d, k=%d,char=%c",i,arr[i],k,k);
			newout[out_index++]=k;
			c[k] =true;
		}
		
	}

	newout[out_index]='\0';
	printf("\nout=%s\n",newout);
	
	strcpy(out,newout);

	printf("\nout111111111=%s,%s",out,newout);

		return true;




}
/*

void CExampleTest::TestCase01()
{
	bool ret = false;
	char pInStr[200] = {"aAaAa"};
	char pOutStr[200]={};
	ret = asendbytimes(pInStr, pOutStr);

	CPPUNIT_ASSERT(true == ret);
	CPPUNIT_ASSERT(0 == strcmp(pOutStr, "Aa"));
}



void CExampleTest::TestCase02()
{
	bool ret = false;
	char pInStr[] = {"ddaAaAacc"};
	char pOutStr[200] = {};
	ret = asendbytimes(pInStr, pOutStr);
	printf("\npOUt=%s",pOutStr);
	char act[100]={"Acda"};
	CPPUNIT_ASSERT(true == ret);
	CPPUNIT_ASSERT(0 == strcmp(pOutStr, act));
}
*/

和回文数

#include "huiwenshu.h"
#include <stdio.h>
#include <string.h>
bool func(char * IN)
{
	if(NULL == IN)
	{
		return false;
	}
	printf("\nIN=%s", IN);
	int i=0,j=0;

	j=strlen(IN)-1;

	while(i<=j)
	{
		printf("\n%c,%c",IN[i], IN[j]);
		if(IN[i++] != IN[j--])
		{
			return false;
		
		}
	}

	return true;


}

/*
void CExampleTest::TestCase09()
{
	bool ret = false;
	char pInStr[] = {"1436341"};
	ret = func(pInStr);

	CPPUNIT_ASSERT(true == ret);
}

void CExampleTest::TestCase10()
{
	bool ret = false;
	char pInStr[] = {"AbCbA"};
	ret = func(pInStr);

	CPPUNIT_ASSERT(true == ret);
}


void CExampleTest::TestCase11()
{
	bool ret = false;
	char pInStr[] = {"ABCbA"};
	ret = func(pInStr);

	CPPUNIT_ASSERT(false == ret);
}

void CExampleTest::TestCase12()
{
	bool ret = false;
	char pInStr[] = {"788887"};
	ret = func(pInStr);

	CPPUNIT_ASSERT(true == ret);
}

void CExampleTest::TestCase13()
{
	bool ret = false;
	char pInStr[] = {"zxcdfe"};
	ret = func(pInStr);

	CPPUNIT_ASSERT(false == ret);
}

*/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值