oj 题(二)

句子翻转,单词翻转

// HuaweiOJ.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <string.h>

#include<iostream>

using namespace std;


int converse(char* str,char* end)
{
	if(NULL == str||NULL == end )
	{
		return -1;
	}

	char temp;

	// 逆序整个句子
	while(str < end)
	{
		temp   = *str;
		*str = *end;
		*end   = temp;	
		str++;
		end--;
	}
	return 0;
}


int converseWords(char* str)
{
	if(NULL == str)
	{
		return -1;
	}
	int len = strlen(str);
	 converse(str,str+len-1);

	 char * wordEnd;
	 char * wordStart;
	 wordStart = str ;
	 wordEnd   = str ;

	 while(*wordEnd!='\0')
	 {

		 while(*wordEnd!= ' '&& *wordEnd !='\0'  )
		 {
			 wordEnd++;
		 }

		 converse(wordStart,wordEnd-1);

		 if(*wordEnd !='\0'&&*wordEnd == ' ')
		 {
			 wordEnd ++;
			 wordStart = wordEnd;
		 }
	 }

}


int _tmain(int argc, _TCHAR* argv[])
{
	char str[] = "I am a boy";
	converseWords(str);
	cout<<"test:"<<str<<endl;

	return 0;
}

2 整数逆序不重复

int getNodupli()
{
	char a[100],b[100];
	gets(a);
	int len = strlen(a);
	for(int i =0;i<len/2;i++)
	{
		char temp  ;
		temp = a[i];
		a[i]=a[len-1-i];
		a[len-1-i]= temp;
	}

	b[0] = a[0];
	int j = 0;
	for(int i = 0;i<len;i++)
	{
		int flag =1;
		for(int k =0 ;k <j+1 ;k++)
		{
			if(a[i] == b[k])
			{
				flag = 0 ;
			}
		}
		if(flag )
		{
			j++;
			b[j]=a[i];
		}
	}

	int lenb = j+1;
	int sum  = 0;
	int quan = 1;
	for(int i = lenb-1;i>0;i--)
	{
		sum+= (b[i]-48)*quan;
	}




}

3  求质数因子

bool isZhishu(int inPutNum)
{
	int sqt = sqrt(inPutNum);
	int flag =0;

	for(int i=2;i<sqt;i++)
	{
		 flag = 1;
		 break;
	}
	return flag==0 ? true:false;
}

//求素数因子
void getFactors(int inPutNum)
 {

	 for(int i =2;i<=inPutNum;i++ )
	 {
		 while(inPutNum%i == 0 && inPutNum!=0)
		 {
				 cout<< i<<endl;
				 inPutNum /=i;

		 }
	 }
 }




猜你喜欢

转载自blog.csdn.net/libin88211/article/details/45459309