首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2013-01-08 
取4位整数,要求各位数都不相同的问题,求助写了个小程序,但是有BUG,不知道错在哪里,求助!#includeiostream

取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中学点东西,不妨从格式化代码,画流程图这些基本做起。

热点排行