C语言随机产生10个两位正整数分别统计其中偶数和奇数个数,以及各类数据之和

如题所述

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <assert.h>

void get_rand_nums(int * buf, int n);
void show_nums(const int * const buf, int n);
void get_even_odd(int * buf, int n, int * evens, int *odds, int *even_sum, int * odd_sum);

int main()
{
int buf[10] = {0};
const int n = 10;
int evens = 0, odds = 0, even_sum =0, odd_sum = 0;

get_rand_nums(buf, n);
show_nums(buf, n);
get_even_odd(buf, n, &evens, &odds, &even_sum, &odd_sum);

printf("\nevens = %d, even_sum = %d\nodds = %d, odd_sum = %d\n", evens, even_sum, odds, odd_sum);

getchar();
return 0;
}

/*
* 用于生成n个随机两个位数
*/
void get_rand_nums(int * buf, int n)
{
int i = 0;

assert(buf);
srand((unsigned int)time(NULL));

for (; i < n; i++)
{
buf[i] = rand() % 90 + 10;
}
}

/*
* 输出生成的数据
*/
void show_nums(const int * const buf, int n)
{
int i = 0;
assert(buf);

for (; i < n; i ++)
{
printf("buf[%d] = %d\t", i, buf[i]);

if (0 == (i + 1) % 5)
{
printf("\n");
}
}
}

void get_even_odd(int * buf, int n, int * evens, int *odds, int *even_sum, int * odd_sum)
{
int i = 0;
assert(buf && evens && odds && even_sum && odd_sum);

for (; i < n; i ++)
{
if (0 == (1 & buf[i])) /*偶数*/
{
(*evens) ++;
*even_sum += buf[i];
}
else
{
(*odds) ++;
*odd_sum += buf[i];
}
}
}
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答