【C语言训练题集1】1.有1,2,3,4,四个数字能组成多少个互不相同且无重复数字的三位数,具体数值是多少?

一.题目描述
有1,2,3,4,四个数字能组成多少个互不相同且无重复数字的三位数,具体数值是多少?

二.解析
首先,需要使用for循环组成一个个、十、百的三位数,每个位数上的数字循环,使用if判断语句使其限定不出现重复的数字。定义一个count,使其自增计一共有多少组互不相同且无重复数字的三位数。

三.C语言代码

运行代码图在这里插入图片描述

#include <stdio.h>
void main()
{
	int i, j, k, a[100], n = 0;

	for(i=1;i<=4;i++)
		for(j=1;j<=4;j++)
			for(k=1;k<=4;k++)
				if (i != j && i != k && j != k)
				{
					a[n] = i * 100 + j * 10 + k;
					n++;                 //计算有多少个三位数
				}
	printf("能组成%d个无重复数字的三位数\n", n);
	printf("分别是");
		for (i = 0; i < n; i++)
			printf("%d\n", a[i]);
		printf("\n");

}

四.调试结果

调试结果图在这里插入图片描述

能组成24个无重复数字的三位数
分别是123
124
132
134
142
143
213
214
231
234
241
243
312
314
321
324
341
342
412
413
421
423
431
432

四.拓展

1.题目描述

对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:

00000

00001

00010

00011

00100

请按从小到大的顺序输出这32种01串。

2.解析

共有5位数,那么就需要5层for循环,而且每一位都只是0和1,那么定义的变量就不能超过2进行五层循环。

3.C语言代码

运行代码

在这里插入图片描述

#include <stdio.h>
#include <stdlib.h>


int main() 
{
	int n=0;
	int i, j, k, x, y;
	for (i = 0; i < 2; i++)
	{
		for (j = 0; j < 2; j++)
		{
			for (k = 0; k < 2; k++)
			{
				for (x = 0; x < 2; x++)
				{
					for (y = 0; y < 2; y++)
					{
						printf("%d%d%d%d%d\n", i, j, k, x, y);
						n++;
					}
				}
			}
		}
	}
	printf("一共有:%d组\n", n);
	return 0;
}

4.调试结果

运行结果

00111
01000
01001
01010
01011
01100
01101
01110
01111
10000
10001
10010
10011
10100
10101
10110
10111
11000
11001
11010
11011
11100
11101
11110
11111
一共有:32
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风雨同舟1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值