关于指针和数组产生随机数字相同问题
#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;
}
写了很久,也问了很久,求大神帮忙看下这个指针用法是否有错,用指针的本意是判断数组产生数字是否相同,能不能详细讲解一下,谢谢啦。我真的被自己的智商困了好几个月了。 //应该是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]