C++里随机数rand()%10是产生1-10的随机数,那请高手看看我的这一段编程有什么错误?

这段编程就是求100个随机数里1-10各有几个。可行运行结果显示1有100个其他234567890都是0个。这是为什么?

#include<stdlib.h>
#include<stdio.h>
#include<time.h>
void main()
{
int i,n;
srand((unsigned)time(NULL));
int a1=0,a2=0,a3=0,a4=0,a5=0,a6=0,a7=0,a8=0,a9=0,a0=0;
for(i=0;i<100;i++)
{n=rand()%10;
if(n=1)a1++;
else if(n=2)a2++;
else if(n=3)a3++;
else if(n=4)a4++;
else if(n=5)a5++;
else if(n=6)a6++;
else if(n=7)a7++;
else if(n=8)a8++;
else if(n=9)a9++;
else if(n=0)a0++;
}
printf("1-%d,2-%d,3-%d,4-%d,5-%d,6-%d,7-%d,8-%d,9-%d,0-%d",a1,a2,a3,a4,a5,a6,a7,a8,a9,a0);
}

第1个回答  推荐于2016-12-01
if(n=1)改成if(n==1)
类似的if(n=2)改成if(n==2),以此类推。

=是赋值,==是判断是否相等。本回答被提问者采纳
第2个回答  2014-10-27
rand()%10是产生0-9的随机数,可不是1到10.
同时逻辑判断要用==,而不是赋值用的=
相似回答