算法C++实现(有注释):统计数字某位数的个数,用随机函数产生100个[0,99]范围内的随机整数, 统计数字的个位上的数字分别为0,1,2,3,4,5,6,7,8,9的数的个数,并打印出来。

#include
#include// #include  void srand( unsigned seed ); 
//功能: 设置rand()随机序列种子。对于给定的种子seed, rand()会反复产生特定的随机序列。     
//srand(time(NULL));    for (i = 0; i < 10; i++)      printf("Random number #%d: %d\n", i, rand());

#include//功能:函数转换参数time为本地时间格式:day month date hours : minutes : seconds year\n\0        
//asctime(localtime(tp));                //用到了time函数,所以要有这个头文件
const int MAX = 101;
using namespace std;

void input(int num[])
{
    int i;
    srand((unsigned)time(NULL));    //srand()设置rand()随机序列种子。对于给定的种子seed, rand()会反复产生特定的随机序列。     
                        //srand( time(NULL) );    for( i = 0; i < 10; i++ )      printf( "Random number #%d: %d\n", i, rand() ); 
    for (i = 1; i < MAX; i++)
        num[i] = rand() % 100;        //rand()是产生的随机数,rand()%100是将100,101这两个数字的个位数赋给num[i]
}
void output(int num[])
{
    int i;
    for (i = 1; i < MAX; i++)
    {
        cout << num[i]<<" ";        //输出随机的100个数字
        if (i % 10 == 0)
            cout << endl;
    }
    cout << endl;
}
void cal_num(int num[], int count[])
{
    int i,subs;
    for (i = 1; i < MAX; i++)
    {
        subs = num[i] % 10;   //分离数字的个位,把分理出的数字赋给subs--->数组下标。
                              //数组下标处对应的值就是数字的个位在100个数字中总共出现的次数
        count[subs]++;          //把下标subs对应的数组元素加 1
    }
}
int main()
{
    int num[MAX];
    int i, count[10];

    memset(count, 0, 10 * sizeof(int));        //中间的“0”是赋给count的值,count为指针或者是数组,10*sizeof(int)是count数组的长度
    input(num);
    cout << "100 num:/n";
    output(num);

    cal_num(num, count);
    for (i = 0; i < 10; i++)
        cout<< i << " count= " << count[i] << endl;
    system("pause");
    return 0;
}

你可能感兴趣的:(c语言,C++)