求100000个浮点数和、平均值。 父进程随机产生100000个浮点数 创建三个子进程分别求25000个数的和、平均值 统计计算时间
时间: 2023-03-25 19:04:52 浏览: 118
可以使用以下代码来实现:
#include <stdio.h>
#include <stdlib.h>
#include <sys/time.h>
#include <unistd.h>
#include <sys/wait.h>
#define NUM 100000
#define CHILD_NUM 3
#define CHUNK_SIZE NUM/CHILD_NUM
double nums[NUM];
double sum = ;
double avg = ;
void child_process(int start, int end) {
double local_sum = ;
for (int i = start; i < end; i++) {
local_sum += nums[i];
}
exit();
}
int main() {
struct timeval start_time, end_time;
gettimeofday(&start_time, NULL);
// 父进程随机产生100000个浮点数
for (int i = ; i < NUM; i++) {
nums[i] = (double)rand() / RAND_MAX;
}
// 创建三个子进程分别求25000个数的和
for (int i = ; i < CHILD_NUM; i++) {
int start = i * CHUNK_SIZE;
int end = (i + 1) * CHUNK_SIZE;
if (i == CHILD_NUM - 1) {
end = NUM;
}
pid_t pid = fork();
if (pid == ) {
child_process(start, end);
}
}
// 等待子进程结束
for (int i = ; i < CHILD_NUM; i++) {
wait(NULL);
}
// 统计计算时间
gettimeofday(&end_time, NULL);
double time_used = (end_time.tv_sec - start_time.tv_sec) * 100. + (end_time.tv_usec - start_time.tv_usec) / 100.;
printf("计算时间:%fms\n", time_used);
// 计算总和和平均值
for (int i = ; i < NUM; i++) {
sum += nums[i];
}
avg = sum / NUM;
printf("总和:%f\n", sum);
printf("平均值:%f\n", avg);
return ;
}
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)