【算法入門】統計各個年齡階段的人數


轉載自:https://www.johngo689.com/2158/

1 題目

函數:fun()

功能:統計各個年齡階段的人數

描述:

N個年齡通過調用隨機函數獲得,並存放在主函數的age中
要求函數把0-9歲年齡段的放在d[0]中,把10-19歲年齡段的放在d[1]中,依次類推。把100歲及以上的放在d[10]中

結果在主函數中輸出

2 思路

隨機使用 rand() 函數,頭文件為#include <stdlib.h>

rand()函數是按指定的順序來產生整數,因此每次執行上面的語句都打印相同的兩個值,所以說C語言的隨機並不是真正意義上的隨機,有時候也叫偽隨機數,使用 rand() 生成隨機數之前需要用隨機發生器的初始化函數 srand(unsigned seed)(也位於 stdlib.h 中) 進行偽隨機數序列初始化,seed 又叫隨機種子,通俗講就是,如果每次提供的 seed 是一樣的話,最后每一輪生成的幾個隨機值也都是一樣的,因此叫偽隨機數,所以需要每次提供不同的 seed 達到完全的隨機,我們通常用時間函數 time(NULL) 作為 seed ,因為時間值每秒都不同,但是在此題中使用不到time這個工具

3 代碼

#include <stdio.h> 
#include <stdlib.h>
#define M 11
#define N 100

/**
函數:fun()
功能:統計各個年齡階段的人數
描述:
N個年齡通過調用隨機函數獲得,並存放在主函數的age中
要求函數把0-9歲年齡段的放在d[0]中,把10-19歲年齡段的放在d[1]中,依次類推。把100歲及以上的放在d[10]中
結果在主函數中輸出
**/

void fun(int *age, int *d) {
	for (int i = 0; i < N; ++i) {
		if (*(age+i)<100) {
			d[(*(age+i))/10] += 1;
		} else {
			d[M-1] += 1;
		}
	}
}

int main(int argc, char const *argv[]) { 
	int age[N];		// 100個用戶
	int d[M]={0}; 		// 11個年齡段
	for (int i = 0; i < N; ++i) {
		*(age+i) = rand()%121;	// 設定年齡的范圍是0-120
	}
	fun(age, d);
	printf("各年齡階段人數數量:\n");
	for (int i = 0; i < M; ++i) {
		printf("%d ", d[i]);
	}
	printf("\n");
}

示例結果:

$ gcc ex004.c -o demo
$ ./demo
各年齡階段人數數量:
10 9 8 4 10 8 7 7 6 11 20


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM