寻找以“输入数”开头的,“指定数”的倍数

一、需求

指定数为495,现在输入97,需要找到一个数97xxxxxxx(xx为未知),这个数在满足以97开头的同时,是指定数495的整数倍。

二、思路

遍历指定数的整数倍,看其开头几位是否与输入数相等。

三、实操

#define NUMBER 495     //定义NUMBER指定数,增强代码通用性。
//用于返回数字n对应的前num位数的整型。如former(8714,2)意为,返回8714的前两位数,结果为87。
int former_num(int n,int num) {
	int ten = 1;
	int i = 0;
	for (i = 0; i < num; i++) {
		ten *= 10;
	}
	return n > ten ? former_num(n / 10,i) : n % ten;
}
//用于计算整型的位数
int number_len(int n) {
	int count = 0;
	for (int i = 0; n != 0; i++) {
		n /= 10;
		count += 1;
	}
    return count;
}

int main() {
	int n,i;
	printf("请输出前几位数字:");
	scanf("%d", &n);
	int count = number_len(n);     //调用 number_len函数计算位数
	for (i = 0;; i++) {            //遍历寻找符合要求的数
		if (former_num(i * NUMBER,count) == n) {   //调用former_num函数判断遍历的数前几位是否符合输入的数
			break;
		}
	}
	printf("数字%d的%d倍,前%d位数字符合您的输入,结果为:%d\n", NUMBER, i, count, i * NUMBER);
	return 0;
}

 四、结果

请输出前几位数字:

这里输入97。

数字495的196倍,前2位数字符合您的输入,结果为:97020

 程序运行无误,97020正好是495的196倍。

五、其他演示

4,49,495输出结果相同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值