第1个回答 2010-02-23
void test()
{
int a[12] = {0,0,1,2,3,4,5,6,7,8,9,10}, i;
i = 1+(int)(11.0*rand()/(RAND_MAX+1.0)); //产生1~11的随机数
cout<<a[i]<<"~";
i = 1+(int)(11.0*rand()/(RAND_MAX+1.0));
cout<<a[i]<<"~";
i = 1+(int)(11.0*rand()/(RAND_MAX+1.0));
cout<<a[i]<<"\n";
}
在main函数中调用test函数就可以了
有一点需要说明:
因为rand的内部实现是用线性同余法做的,他不是真的随机数,只不过是因为其周期特别长,所以有一定的范围里可看成是随机的,rand()会返回一随机数值,范围在0至RAND_MAX 间。rand ()产生的是假随机数字,每次执行时是相同的。
第2个回答 2010-02-23
大意就是循环一下,你可以参考一下思路自己写。我已经3年没写C了,有很多错误
#include "stdafx.h"
#include"stdio.h"
#include <string>
using namespace System;
int main()
{
printf("press any key to continue");
int a[] = {1,2,3,4,5,6,7,8,9,10,11};//自己定义
string s;
for(int i=0;i<11;i++){
s=a[i];
for(int m=0;m<11;m++){
if(m == i){
m++;
}else{
s+=","+a[m];
}
for(int n=0;n<11;n++){
if(n == m || n == i){
n++;
}else{
s+=","+a[n];
}
}
}
}
return 0;
}
第3个回答 2010-02-23
同学你好!
自己做了个,运行成功,可以满足你的要求的。
#include<stdio.h>
#include<stdlib.h>
#define N 11
void Creat(int p[]);/*数组赋值*/
void Arrange(int p[]);/*排列组合*/
void main()
{
int p[N];
Creat(p);
Arrange(p);
}
void Creat(int p[])
{
int i;
for(i=0;i<N;i++)
{
printf("Please input the %dth data:",i+1);
scanf("%d",&p[i]);
}
}
void Arrange(int p[])
{
int i,j,k,number=0;
for(i=0;i<N;i++)
for(j=i+1;j<N;j++)
for(k=j+1;k<N;k++)
{
printf("The %dth Arrange:",++number);
printf("%d %d %d",p[i],p[j],p[k]);
system("PAUSE");
}
}
希望我的回答对你有帮助,祝你的成绩进步~本回答被提问者采纳