当前位置: 代码迷 >> C语言 >> 随即产生一个10位数,并且用到0--9不重复
  详细解决方案

随即产生一个10位数,并且用到0--9不重复

热度:111   发布时间:2006-04-04 21:52:00.0
嗯....有道理....

----------------解决方案--------------------------------------------------------

int a[10]={0,1,2,3,4...};

for()
{
b0=rand()%10;
b1=rand()%10;

c=a[b0];
a[b0]=a[b1];
a[b1]=c;
}
long s=0;
for()
{
s*=10;
s+=a[i];
}


----------------解决方案--------------------------------------------------------

我觉得我的程序更好理解:

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

int main(void)
{
int a[10],i,j,k,number,flag;

srand(time(NULL));
i=0;
while(1)
{
flag=1;
number=rand()%10;
for(j=0;j<i;j++) //第一次不执行循环
if(a[j]==number)
{
flag=0;
break;
}
if(flag)
{
a[i]=number;
i++;
}
if(i==10)
break;
}
for(k=0;k<=9;k++)
printf("%3d",a[k]);
printf("\n");

getch();
return 0;
}


----------------解决方案--------------------------------------------------------
12楼的方法很好。
int a[10]={0,1,2,3,4...};
for() /*好像这个循环退不出*/
{
b0=rand()%10;
b1=rand()%10;

c=a[b0];
a[b0]=a[b1];
a[b1]=c;
}
long s=0;
for()
{
s*=10;
s+=a[i];
}
另个还有一点:不能保证,第一位肯定不是0
----------------解决方案--------------------------------------------------------
for() /*好像这个循环退不出*/


晕..楼上的..一看就知道. Knocker 就是大概写个意思.. 他那个for那样写根本就运行不了..

他就是让你里面的东西自己来写...呵呵!

----------------解决方案--------------------------------------------------------
都是高手啊
----------------解决方案--------------------------------------------------------

俺是个初学者,我试着也编了这个程序,可为什么出来的结果总是错误呢?
请高手指正一下,谢谢.
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void main()
{
int a[10],i,random,swap;
long int num=0;
for(i=0;i<10;i++)
{
a[i]=i;
}
srand(time(NULL));

for(i=0;i<10;i++)
{
random=rand()%10;
swap=a[i];
a[i]=a[random];
a[random]=swap;
}

for(i=0;i<10;i++)
{
num+=a[i];
num*=10;
}
printf("%ld\n",num);
getch();
}


----------------解决方案--------------------------------------------------------
以下是引用SunShining在2006-4-5 7:53:00的发言:
for() /*好像这个循环退不出*/


晕..楼上的..一看就知道. Knocker 就是大概写个意思.. 他那个for那样写根本就运行不了..

他就是让你里面的东西自己来写...呵呵!

搞笑


----------------解决方案--------------------------------------------------------
To:17

[QUOTE]long int num=0;[/QUOTE]

long太小,可以换成long long int(C99编译器)或double
----------------解决方案--------------------------------------------------------
先谢谢您.我是一个新手,没遇到用double型的,那请问该如何输出呢?
是printf("%e",num)? 或者啥呢?
----------------解决方案--------------------------------------------------------