关于计算机二级的那些事

今天在群里看见有一个人问题,然后给出如下三种解法。

  1. 方法1:

#include<iostream>
using namespace std;
void fun(char *p)
{
	char *s=p,*r=p;
	int flag=strlen(p);
	for(int a=0;a<flag;a++)
	{
		
		//如果满足奇数条件
		if(*p%2==1&&a%2==1)
		{
			p++;
			s++;
			r=p;//r始终跟踪p的最新正确的位置
		}
		else
		{
			while(*s!='\0')
			{
				*p++=*++s;
			}
			*s='\0';
		}
		p=s=r;//  p跟s要重新得到正确的地址
	
	}
}
int main()
{
	char s[13]="ABCDEFG12345";
	fun(s);
	puts(s);
	return 0;
}

方法2:

#include<iostream>
using namespace std;
void fun(char *p)
{
	int flag=strlen(p);
	for(int a=0;a<flag;a++)
	{
			
		//如果满足奇数条件
		if(*p%2!=0&&a%2!=0)
		{
			p++;
		}
		else
		{
			*p++='@';
		
		}
	
	
	}
}
int main()
{
	char s[13]="ABCDEFG12345";
	fun(s);
	for(int a=0;a<strlen(s);a++)
		if(s[a]!='@')
		printf("%c",s[a]);
	return 0;
}
方法3:

#include<iostream>
using namespace std;
void fun(char *p,char *s)
{
	int flag=strlen(p),num=0;
	for(int a=0;a<flag;a++)
	{
		
		//如果满足奇数条件
		if(*p%2==1&&a%2==1)
		{
			s[num++]=*p++;

		}
		else
		{
			p++;
		}
		
	
	}
}
int main()
{
	char p[13]="ABCDEFG12345";
	char s[13]={0};
	fun(p,s);
	puts(s);
	return 0;
}



猜你喜欢

转载自blog.csdn.net/huijiaaa1/article/details/79657138