求复合给定条件的整数集

111 阅读1分钟

整数集.jpg

代码如下:

#include<stdio.h>
void main(void)
{
	`int A,i=1,G=0;`
	int s1 = 0, s2 = 0, s3 = 0;//s1百分位,s2十分位,s3个位,S最后得数
	printf("请输入小于6的数");
	scanf_s("%d", &A);
	for (s1 = A; s1 <= A + 3; s1++)
	{
		for (s2 = A; s2 <= A + 3; s2++)
		{
			if (s1 != s2)
			{
				for (s3 = A; s3 <= A + 3; s3++)
				{
					if (s3 != s2 && s3 != s1)
					{
						printf("%d%d%d", s1,s2,s3);
						G++;
						if (G%6==0)
						{
							printf("\n");
						}
						else
						{
							printf(" ");
							}
					}
				}
			}
		}
	}							  
		return 0;															 
}

问题分析 1.一开始解题思路一直卡在输出的数是一个单独的数,没有深入想下分开各个位数表达。
2.输出顺序应先百位,十位,个位,一开始没有注意到这个细节,必须先百位,因为它是递增的且从小排到大。
3.计数的应用。
4.代码中的G%6==0这一代码容易忽视==这一符号的使用。