常见面试题


求两个正整数N和M的最大公约数
int calcGcd(int N,int M)
{
	int mid;
	(M >= N)?(mid = N):( mid = M) ;
	
	for (int i = mid; i >= 1;i--)
	{
		if(N%i==0 && M%i==0  )return i;
	}


}

利用辗转相除法求最大公约数

int clacGld(int N ,int M)
{
	if( N >= M)//把大的值用M存起来,N存放小值
	{
		int temp = M;
		M = N;
		N = temp;
	}
	while(M % N)
	{
		int temp = N;
		N = M % N;
		M = temp;
	}
	return N;
}

辗转相除法求M,N的最大公约数基于的原理如下。

M,N假设M>=N,M = aN + b。gcd(M,N) = gcd(N,b)

将一段字符串,两头的空格全部去掉,两个字符之间保留一个空格。编程中不能用额外的数组
int main()
{
	//char str[] = "a_____b_____c_____d_____e";
	char str[] = {"     a   b    c  d   e      "};

	bool flag = false ;
	int  count = 0;
	for(int i = 0 ; i < sizeof(str) - 1;i++)
	{
		if(str[i]!=' ')
		{
			str[count++] = str[i];
			flag = true;
		}
		else if (str[i]==' ' && flag==true)
		{

		   str[count++] = str[i];
			flag = false;
		}

	}
	if (count > 0 && str[count - 1] == ' ')
    {
        str[count - 1] = '\0';
    }
   else
    {
        str[count] = '\0';
    }
	
	cout<<str<<endl;
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值