二段数该这样求的问题在哪,调试不执行,是逻辑问题吗

小乐乐从老师口中听到了二段数这个名词,想更深入的了解二段数。

二段数是这样的正整数:恰好包含两种不同的十进制数字s和t,s不是0,并且s的所有出现均排列在所有的t的前面。例如,44444411是二段数(s是4,t是1),41、10000000和5555556也是。但4444114和44444都不是二段数。

这时老师问小乐乐:给你一个任意的正整数n,你能求出比n大并且是n的倍数的最小二段数吗?请你帮助小乐乐解答这个问题。

int func(int n)
{
	if (n > 0)//提取每一位数字 把第一位赋值给s 最后一位赋值给t s循环比较后面的数字 若不一样判断是不是等于t 并用t循环比较 若不一样则再次×i继续循环 若一致就输出
	{
	label:
		int s;
		for (; n >= 10; n / 10)
		{
			s = n % 10;//首位数字

		}
		int t = (n % 10);//末位数字
		int q = n;//用q代替n 使循环中一直保留初始值n·
		for (; q > 10; q / 10)
		{
			int k = (q % 10);//循环取出每一位数字

			if ((t != k) || (s <= k))//每一位数字与末位判断  每位数字与首位判断  
			{
				if ((k != s) || (s <= k))//当首位与末尾相等或小于末尾 则不满足二段数成立条件 
				{
					int time = 0;//乘数,不相等就成倍叠加再循环
					n = n * (time + 2);//改变n的值
					time++;
					goto label;//跳转到最开始,因为n一变,其余数据都要改变
				}
			}


		}


	}
		return n;
}

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值