第1个回答 2006-08-06
#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:;
}
}
本回答被网友采纳
第2个回答 2006-07-23
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;
第3个回答 2006-07-27
楼上你好:
如果num[3]=0的话,
"randunm=num[0]+num[1]*10+num[2]*100+num[3]*1000; "
randunm是四位数吗?