长排山之战酷6在线观看:怎么使用rand函数产生一个随机的四位数,并且要求,这个四位数的各位数字均不相同!!!

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/10 19:45:36

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

void main( ) {
    int i;
    srand( time( 0 ) );
    for ( i = rand( ) % 10000; ; i = rand( ) % 10000 ) {    /* 不考虑超过 4 位的 */
        int count[ 10 ] = { 0 }, ii;
        if ( i < 1000 ) continue;           /* 也不考虑少于 4 位的 */
        for ( ii = i; ii; ii /= 10 )
            if ( ++count[ ii % 10 ] > 1 )   /* 跳过有重复数字的 */
                goto skipRandomWithRepeatedDigit;
        
        printf( "Got one: %d\n", i );
        break;
        skipRandomWithRepeatedDigit:;
    }
}
 
 
 

int randnum,num[4];
int funrand()
{
return rand()*10;
}
num[0]=funnum();
for(int i=1;i<4;i++)
{
do
{
randnum=funnum();
if(i=2&&randnum==num[0]||i=3&&randnum==num[0] ||i=3&&randnum==num[1])
randnum=num[i-1];//如果有相同数字就使while条件成立
}while(randnum==num[i-1])
num[i]=randnum;
}
randunm=num[0]+num[1]*10+num[2]*100+num[3]*1000;

可以使用rand函数生成四个数,要求它们都在0~9之间,并且,生成第二个数时候,要检查是否与第一个数重复,否则重新生成。同理,生成第三个数时候,要检查是否与前两个数有重复,生成第四个数时候,要检查是否与前三个数有重复。最后,第一个数×1000+第二个数×100+第三个数×10+第四个数构成一个四位数。

楼上你好:
如果num[3]=0的话,

"randunm=num[0]+num[1]*10+num[2]*100+num[3]*1000; "
randunm是四位数吗?