18227452746 发表于 2022-3-25 11:32:51

关于指针和数组产生随机数字相同问题

#include<stdio.h>
#include<stdlib.h>//rand函数需要
#include<time.h>//产生不同随机数需要
int main()
{
    int hq;//双色球红球数组
    int lq;//双色球蓝球变量
    int i,j;//循环变量
    int ls;//冒泡排序临时变量
    int *ptr_1=hq;//指向数组首元素的指针
    int *ptr_2;//指向数组末元素的指针
         ptr_2=hq+5;
    cgg:srand(time(NULL));//产生随机数,以时间为种子
    for(i=0;i<6;i++)//给六个球赋随机数字
    {
      hq=rand()%33+1;//产生1-33的随机数字
    }
    for(i=0;i<6;i++)
    {
      for(j=0;j<5-i;j++)
      {
          if(ptr_1==ptr_2)
          {
            goto cgg;
          }
         ptr_2--;
      }
      ptr_1++;
    }
    lq=rand()%16+1;//产生1-16的随机数字
    for(i=0;i<5;i++)//冒泡排序法
    {
      for(j=0;j<5-i;j++)
      {
            if(hq>hq)//如果紧挨着前面一个数值大于后面一个
            {
                ls=hq;//把前面一个元素的值赋值ls里面(临时变量)
                hq=hq;//把后一个元素值赋给前面元素中
                hq=ls;//然后把存放在ls里的第一个数组元素值赋给后面一个元素中,实现排序
            }
      }
    }
    for(i=0;i<6;i++)//打印红球
    {
      printf("%d\t",hq);
    }
    printf("\n");
    printf("%d",lq);//打印蓝球
    return 0;
}

写了很久,也问了很久,求大神帮忙看下这个指针用法是否有错,用指针的本意是判断数组产生数字是否相同,能不能详细讲解一下,谢谢啦。我真的被自己的智商困了好几个月了。

jhq999 发表于 2022-3-25 13:20:05

//应该是if(*ptr_1==*ptr_2),而且跳回cgg:ptr_1不等于hq, ptr_2不等于hq+5;,后面太容易越界了,你这个太麻烦了,太容易出错
#include<stdio.h>
#include<stdlib.h>//rand函数需要
#include<time.h>//产生不同随机数需要
int main()
{
    int ball={0};

    int hq;//双色球红球数组
    int lq;//双色球蓝球变量
    int i,j;//循环变量
    int ls;//冒泡排序临时变量
    int *ptr_1=hq;//指向数组首元素的指针
    int *ptr_2;//指向数组末元素的指针
         ptr_2=hq+5;
   // cgg:
    srand(time(NULL));//产生随机数,以时间为种子
    for(i=0;i<6;)//给六个球赋随机数字
    {
        int tmp=rand()%33;
      if(0==ball)
      {
                hq=tmp+1;
                ball=1;
        }
    }
   /* for(i=0;i<6;i++)
    {
      for(j=0;j<5-i;j++)
      {
          if(ptr_1==ptr_2)
          {
            goto cgg;
          }
         ptr_2--;
      }
      ptr_1++;
    }*/
    lq=rand()%16+1;//产生1-16的随机数字
    for(i=0;i<5;i++)//冒泡排序法
    {
      for(j=0;j<5-i;j++)
      {
            if(hq>hq)//如果紧挨着前面一个数值大于后面一个
            {
                ls=hq;//把前面一个元素的值赋值ls里面(临时变量)
                hq=hq;//把后一个元素值赋给前面元素中
                hq=ls;//然后把存放在ls里的第一个数组元素值赋给后面一个元素中,实现排序
            }
      }
    }
    for(i=0;i<6;i++)//打印红球
    {
      printf("%d\t",hq);
    }
    printf("\n");
    printf("%d",lq);//打印蓝球
    return 0;
}
页: [1]
查看完整版本: 关于指针和数组产生随机数字相同问题