7-1(除法)输入正整数n,按从小到大的顺序输出所有形如abcde/fghij = n的表达式,其中a~j恰好为数字0~9的一个排列(可以有前导0),2≤n≤79。 (紫书习题)

本文介绍了一个C语言程序,用于检查两个输入整数i和i*n(其中n是用户输入的整数)的乘积是否所有数字互不相同。通过isok函数实现数字分离和重复检测。
#include<stdio.h>


int a[11] = { 0 };//全局数组

bool isok(int x, int y)
{
	int i = 0;
	while (x)//分离x中的数字,存入a数组中
	{
		a[i++] = x % 10;

		x /= 10;
	}

	while (y)//分离y中的数字,存入a数组中
	{
		a[i++] = y % 10;

		y /= 10;
	}

	for (int i = 0; i < 9; i++)//比较数组中是否有重复的数字
	{
		for (int j = i + 1; j <= 9; j++)
		{
			if (a[i] == a[j])
			{
				return false;
			}
		}
	}

	return true;
}

int main()
{
	int n = 0;
	
	scanf("%d", &n);

	for (int i = 1234; i < 49383; i++)//i的最大值为98765(i*n最大值) / 2 约为49383,已知n的最小值为2
	{
		if (i * n > 98765)//如果i*n超过了其最大值,则跳出循环
		{
			break;
		}
		if (isok(i,i*n))
		{
			printf("%d", i*n);

			printf("/");

			printf("%d\n", i);
		}

	}

	return 0;
}

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值