读书人

取4位整数要求各位数都不相同的有关

发布时间: 2013-01-08 14:02:13 作者: rapoo

取4位整数,要求各位数都不相同的问题,求助
写了个小程序,但是有BUG,不知道错在哪里,求助!
#include<iostream>
#include<string>
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
using namespace std;

int* Random(int*q)
{
int i,j,k;
*q=10;
int a;
srand((unsigned int)time(NULL));
for(i=0;i<4;i++)
{
a=rand()%10;
if(*q==10)
{
*q=a; //i=0时,将第一个值赋给*q;
}
else
{
for(j=0;j<i;j++)//i不为0时,判断新的随机数是否与之前的相等;
{
if(a!=*(q+j))
{
*(q+i)=a;//如果不相同,将新随机数赋值给*(q+i);
}
else
{
i--; //如果相同,返回本次循环,重新取随机数;
if(0==i) //如果返回第一次循环,重新给*q赋值;
{
*q=10;
break;
}

}
}

}

}
for(k=0;k<4;k++) printf("%d\n",*(q+k));//打印
return q;
}
void main()
{
int *p;
int b[4];
p=(int*)&b;
p=Random(p);
}
[解决办法]
楼主的if嵌套太多了,建议你换个思路,比如用一个大小为10的bool数组,哪个数字用过了,比如随机出了数字5,就令num[5] = true,这样就不必再回头一个一个检测了。
[解决办法]
产生bug有许多原因,其中一个就是逻辑不清楚,说得明白些就是写之前/写的时候没想清楚。

LZ既然想在bug中学点东西,不妨从格式化代码,画流程图这些基本做起。

读书人网 >C++

热点推荐