句子翻转,单词翻转
// 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;
}
}
}