例1:用随机函数生成100个数,设计程序统计个位上是0、1、2、3、4、5、6、7、8、9的数字分别有多少?
【分析】这是一个基本的算法题。利用C++中的随机函数生成100个随机数,关键问题是如何获取每个数的个位数。
我们知道数字是按十进制组成的,对每个数字除以10,所得的余数就是个位上的数字。比如,数字123对10取余得3,即123%10 = 3。
完整代码如下:
#include <iostream>
#include <time.h>
#include <stdlib.h>
#include <string.h>
using namespace std;
#define MAX 101
//处理输入的函数
void input(int num[])
{
int i;
srand((unsigned)time(NULL)); //以时间为随机种子
for (i=1;i<MAX;i++)
{
num[i]=rand()%100; //生成100以内的随机数
}
}
//处理输出的函数
void output(int num[])
{
int i;
for(i=1;i<MAX;i++)
{
cout<<num[i]<<" ";
if (0 == i%10) //每行排10个数字
{
cout<<endl; //换行
}
}
cout<<endl;
}
//统计数字个数
void cal_num(int num[],int count[])
{
int i,mod;
for(i=1;i<MAX;i++)
{
mod=num[i]%10; //对10取模,得到个位数字
count[mod]++;
}
}
void main()
{
int num[MAX];
int i,count[10];
memset(count,0,10*sizeof(int));//把数组count[]中的10个数字置0
input(num);
cout<<"100 num: "<<endl;
output(num);
cal_num(num,count);
for (i=0;i<10;i++)
{
cout<<i<<":"<<count[i]<<endl;
}
}
效果如下: