一.题目描述
有1,2,3,4,四个数字能组成多少个互不相同且无重复数字的三位数,具体数值是多少?
二.解析
首先,需要使用for循环组成一个个、十、百的三位数,每个位数上的数字循环,使用if判断语句使其限定不出现重复的数字。定义一个count,使其自增计一共有多少组互不相同且无重复数字的三位数。
三.C语言代码
运行代码图
#includevoid 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("%dn", 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#include 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%dn", 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组



