| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 781 人关注过本帖
标题:奇怪的问题
只看楼主 加入收藏
zz578
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2006-7-31
收藏
 问题点数:0 回复次数:11 
奇怪的问题
//随机生成6位数
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int main(void)
{
int n,number;
srand(time(0));
while(1)
{
puts("你想要多少个随机数?");
scanf("%d",&number);
for(n=0;n<number;n++)
printf("%d ",rand()&6+1);
putchar('\n');
}
return 0;
}
搜索更多相关主题的帖子: return number include 多少 void 
2006-11-27 17:46
zz578
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2006-7-31
收藏
得分:0 

这个for循环里的 printf("%d ",rand()&6+1);(将%误打为&),结果也能运行,随机数的范围为0-7,这是合法的C语句吗?


MSN:mr_zz@
QQ:284913258
计算机及应用专业
2006-11-27 17:55
csight
Rank: 1
等 级:新手上路
威 望:1
帖 子:293
专家分:0
注 册:2006-6-11
收藏
得分:0 
printf("%d ",rand()&6+1);
我觉得这里 & 是表示把rand()产生的数(我也不知道它产生的范围是多少?)和6做一下“与”而已;
不可否认这样是可以的,而范围也不超过7,但意义和rand()%6+1完全不同了。

头可断,发型不可乱;血可流,皮鞋不可不擦油;
2006-11-27 20:12
zz578
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2006-7-31
收藏
得分:0 
没人回?顶一下。

MSN:mr_zz@
QQ:284913258
计算机及应用专业
2006-11-27 20:26
zz578
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2006-7-31
收藏
得分:0 
以下是引用csight在2006-11-27 20:12:00的发言:
printf("%d ",rand()&6+1);
我觉得这里 & 是表示把rand()产生的数(我也不知道它产生的范围是多少?)和6做一下“与”而已;
不可否认这样是可以的,而范围也不超过7,但意义和rand()%6+1完全不同了。

和6做一下“与”是什么意思,我刚学C很多命令还没学全。。


MSN:mr_zz@
QQ:284913258
计算机及应用专业
2006-11-27 21:08
Welton
Rank: 2
等 级:论坛游民
帖 子:65
专家分:38
注 册:2006-10-25
收藏
得分:0 
也就是,把int型等数据类型,按二进制排列后,如果相同位为1时,则结果的该位为1,else为0

只是喜欢编程而已!
2006-11-27 21:24
Welton
Rank: 2
等 级:论坛游民
帖 子:65
专家分:38
注 册:2006-10-25
收藏
得分:0 
我认为:6为110则生成的数有0,2,4,6这四个!但是结果不是,不知道是类型不同的原因还是其他的原因

[此贴子已经被作者于2006-11-27 21:27:59编辑过]



只是喜欢编程而已!
2006-11-27 21:25
我不是郭靖
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:494
专家分:6
注 册:2006-10-4
收藏
得分:0 
rand()&6+1 这个表示 rand() & 7
&是按位与,即一位一位的与

也即 (一个随机数) & 00000111

2006-11-27 21:26
Welton
Rank: 2
等 级:论坛游民
帖 子:65
专家分:38
注 册:2006-10-25
收藏
得分:0 

哦,对了后边有个1,哈哈


只是喜欢编程而已!
2006-11-27 21:34
ziyi555
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2006-11-4
收藏
得分:0 
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void main()
{
int a[6],i,j,n;
printf("请问要产生几个6位数?");
scanf("%d",&n);
srand((unsigned)time(NULL));
for(i=0;i<n;i++)
{
printf("%d : ",i+1);

for(j=0;j<6;j++)
{
a[j]=rand()%7;
if(j==0&&a[j]==0)
{
j=-1;
continue;
}
printf("%d",a[j]);
}
printf("\n");
}
}

放手一博
2006-11-27 23:25
快速回复:奇怪的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.039012 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved