尾单词长度、1 3 9 27 81 实现1-121任意算法、去除重复字符并排序、拼音转数字、按要求分解字符串

尾单词长度、1 3 9 27 81 实现1-121任意算法、去除重复字符并排序、拼音转数字、按要求分解字符串。

1:尾单词长度

输入一行,获得单词,并且输出最后一个单词的长度(这里考虑了最后一个单词后有空格的情况)

//最后一个单词的长度  ok
#include<string>
void FunLastWordLength(void)
{
	char str[128];
	cin.getline(str,128);
	char word[20][20];     //最多存放20个长度为20的单词
	int i,j,k;
	i=0;
	j=0;
	while(str[i]!='\0')
	{
		k=0;    //当前单词定位到下标0
		if(str[i]==' ')
			i++;
		while((str[i]!='\0')&&(str[i]!=' '))
			word[j][k++]=str[i++];
		word[j][k]='\0';
		j++;
	}
	int n=0;
	int m;
	for(m=j-1;m>=0;m--)
	{
		if(strlen(word[m])!=0)
		{
			n=strlen(word[m]);
			break;
		}
	}
	cout<<n<<endl;
}
2、1 3 9 27 81 实现1-121任意算法:

void funcal()
{
	int a[3]={0,1,-1},b[3]={0,3,-3},c[3]={0,9,-9},d[3]={0,27,-27},e[3]={0,81,-81};
	int i,j,k,m,n,num,l,h=0;
	int p[5],q[5];
	
	cin>>num
	for(i=0;i<3;i++)
		for(j=0;j<3;j++)
			for(k=0;k<3;k++)
				for(m=0;m<3;m++)
					for(n=0;n<3;n++)
					{
						if (num==(a[i]+b[j]+c[k]+d[m]+e[n]))
							break;
					}

					p[0]=a[i];p[1]=b[j];p[2]=c[k];p[3]=d[m];p[4]=e[n];
					for(i=0;i<5;i++)
					{
					    if(p[i]!=0)
					    q[h++]=p[i];  //新数组里面不包含0的数
					}
					for(i=0;i<h;i++)   //按照输出的格式输出
						if(p[i]>0)
						{
						if(i==0)
						    cout<<q[i];
						else
						    cout<<"+"<<q[i];
						}
						else
						    cout<<q[i];	
}

3、去除重复字符并排序

//去除重复字符并排序


void delandsort(char *input)
{
	char *temp=new char[100];
	int i=0,len;

	cout<<"原始字符串为:"<<input<<endl;
	
	while(*input)
	{
		temp[i++]=input[0];
		len=strlen(input);
		for(int j=1; j < len; j++)		
		{
			if(input[0]==input[j])
			{
				for(int k=j;k<len;k++)
					input[k]=input[k+1];
			}
		}
		input++;
	}
	temp[i]='\0';	
	cout<<"删除重复字符后的字符串为:"<<temp<<endl;	

	char t;
	int l=strlen(temp);
	for(int m=0;m<l;m++)
	{
		for(int n=m+1;n<l;n++)
		{
			if(temp[m]>temp[n])
			{
				t=temp[m];temp[m]=temp[n];temp[n]=t;
			}
		}
	}
	cout<<"排序后的字符串为:"<<temp<<endl;
}

4、拼音转数字

/*
拼音转数字

输入是一个只包含拼音的字符串,请输出对应的数字序列。转换关系如下:
描述:      拼音        yi  er  san  si  wu  liu  qi  ba  jiu  ling
      阿拉伯数字        1   2   3    4   5   6    7   8   9    0
输入字符只包含小写字母,所有字符都可以正好匹配
*/
void pinyintonum(char *input,char *num)
{
	int j=0;

	while(*input)
	{
		switch(*input)
		{
		    case 'y':
				if(input[1]=='i')
					num[j++]='1';
				break;
			case 'e':
                if(input[1]=='r')
					num[j++]='2';
				break;
			case 's':
                if((input[1]=='a') && (input[2]=='n'))
					num[j++]='3';
				else
					if(input[1]=='i')
					   num[j++]='4';
				break;
           case 'w':
                if(input[1]=='u')
					num[j++]='5';
				break;
		   case 'l':
                if((input[1]=='i') && (input[2]=='u'))
					num[j++]='6';
				else
					if((input[1]=='i') && (input[2]=='n') && (input[3]=='g'))
					    num[j++]='0';
				break;
		   case 'q':
                if(input[1]=='i')
					num[j++]='7';
				break;
		   case 'b':
                if(input[1]=='a')
					num[j++]='8';
				break;
		   case 'j':
                if((input[1]=='i') && (input[2]=='u'))
					num[j++]='9';
				break;
		   default :
			   break;            
		}
		input++;
	}
	num[j]='\0';

	cout<<num<<endl;
}

5、按要求分解字符串。

/*
按要求分解字符串,输入两个数M,N;M代表输入的M串字符串,N代表输出的每串字符串的位数,
不够补0。例如:输入2,8, “abc” ,“123456789”,
则输出为“abc00000”,“12345678“,”90000000”
*/
void cut(int h,int l,char *s[])
{
	int len;
	char *temp;
	char *final[100];
	int a=0;
	for(int i=0;i<h;i++)
	{
		temp=s[i];
		len=strlen(temp);		
		if(len < l)
		{
			int j=len;
			while(j<l)
				temp[j++]='0';
			temp[j]='\0';
			cout<<temp<<endl;
			final[a++]=temp;
		}
		else if(len == l)
	    {			
		    cout<<temp<<endl;
			final[a++]=temp;
		}
	    else          //len>l
		{
			 char *t;
			 int k=len/l;
			 int p,q;		   
			 
			 for(p=0;p<k;p++)
			{
				t=new char[l];
				for(q=0;q<l;q++)
				{
				    t[q]=temp[q+p*l];
				}
				t[q]='\0';
			    cout<<t<<endl;
				final[a++]=t;				
			}	
            
			if(len%l != 0)
			{
                t=new char[l];
			    int n=0,y=len%l;
		        while(n < y)			  
			       t[n++]=temp[k*l+n];
			    while(y < l)
			       t[y++]='0';
		        t[y]='\0';
			    cout<<t<<endl;			 			  			  
		        final[a++]=t;				
			}
		}		
	}
	for(int j=0;j<a;j++)
		cout<<final[j]<<endl;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值