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;

		 }
	 }
 }




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章