我有四个数(如1,3,6,7)怎么用c语言编写:四个数所有排列组合?
代码示例:
//有1、3、6、7个数字,能组成多少个互不相同且无重复数字的三位数?
//本练习不涉及报错处理机制!
#include<stdio.h>
int main() {
int i, j, k;
for (i = 1; i <= 4; i++) {
for (j = 1; j <= 4; j++) {
for (k = 1; k <= 4; k++) {
if ((i != j) && (j != k) && (i != k)) printf("%d%d%d\n",i,j,k);
}
}
}
return 0;
}
有3个数a、b、c,要求按大小顺序把它们输出(用C来写)?
晕,这题C语言课本上有,你不会?我给你抄过来吧。输入3个数a,b,c,要求按由小到大的顺序输出;用伪代码写出解此题的算法:if a>b 将a和b对换 (a是a,b中的小者)if a>c 将a和c对换 (a是a,c中的小者,因此a是三者中最小者)if b>c 将b和c对换 (b是b,c中的小者,也是三者中次小者)然后顺序输出a,b,c即可。按此算法编写程序:main(){ float a,b,c,t; scanf("%f,%f,%f",&a,&b,&c); if(a>b) {t=a;a=b;b=t;} /*实现a和b的互换*/ if(a>c) {t=a;a=c;c=t;} /*实现a和c的互唤*/ if(b>c) {t=b;b=c;c=t;] /*实现b和c的互换*/ printf("%5.2f,%5.2f,%5.2f\n",a,b,c);}运行情况如下:3,7,1 ↓ 1.00,3.00,7.00下面是我的点津:3者比较就是两两比较综合处理,两两比较实现互换要通过中间变量t,即如果a>b,按从小到大排列则把a放在t中,然后把b放在a中,最后再把a取出放在b中,用C语言说就是赋职号=。按大小顺序排列只须把a>b,a>c,b>c改为a
1到25的数字,如何通过C语言实现随机排列?
首先不管是不是通过编译。
做到随即排列,需要用到随机数产生函数。
#include <stdio.h>
#include <time.h>
main()
{
int i;
int cp1[10];
clrscr();
srand((unsigned)time(NULL)); /*随机数发生器,时间作为种子 */
for(i=0;i<10;i++)
{
cp1[i]=rand()%100+1;/*rand产生的随机数字*/
}
textcolor(12);
for(i=0;i<10;i++)
{
printf("\n");
cprintf("%d",cp1[i]);
}
getch();
}
以上是打印1到100的随机数字。
你说的要随机排列25个数字。
必须要产生25个随机数字。处理方法有很多,可以采用让随机数产生为1~25的数字,但是要保证每个数字不一样。不能有重复,这个可以通过比较来完成。然后可以一一对应输出,或者直接输出产生的随机数也可以。另外一种方法是允许有重复,但是必须给每个数字1~25和产生的25个随机数字进行一一对应编号,然后首先按照随机数对应的输出,如果遇到相同的随机数,就随机数先后顺序排下来对应输出。方法有很多,自己可以思考一下。