初学者2个小问题,用C/C++的。 两个function
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初学者2个小问题,用C/C++的。 两个function相关的知识,希望对你有一定的参考价值。
#include <stdio.h>#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <inttypes.h>
#include <sys/unistd.h>
#include <pthread.h>
struct Period
uint64_t begin;
uint64_t end;
uint64_t sum;
;
void sum(struct Period *p)
uint64_t i;
p->sum=0;
for(i=p->begin;i<p->end;++i) p->sum+=i;
uint64_t final_result(uint64_t maxnum,int nthreads)
if(n<=0) return;
int i;
uint64_t end,peroid=maxnum/nthreads;
uint64_t sum=0;
struct Period p;
p.begin=p.end=0;
void thread_result[nthreads];
pthread_t pids[nthreads];
for(i=0;i<nthreads;++i)
p.end+=peroid;
p.begin=p.end-peroid;
pthread_create(&pids[i],NULL,(void *)&sum,(void *)&p);
for(i=0;i<nthreads;++i)
pthread_join(&pids[i],&thread_result[i]);
for(i=0;i<nthreads;++i)
sum+=((struct Period)thread_result[i]).sum;
return sum;
int main(int argc, char *argv[])
if(argc!=3)
printf("usage:%s num n-threads.\n",argv[0]);
exit(0);
uint64_t maxnum=atoi(argv[1]);
int n=atoi(argv[2]);
printf("result:%llu\n",final_result(maxnum,n));
return 0;
参考技术A 一个初学者怎么会需要做这样的题,涉及线程,编译优化之类,是面试题? 参考技术B 贴代码比较好 参考技术C 貌似不是初学者的问题 参考技术D 这是那样啊 第5个回答 2013-04-04 太深奥了,是错误信息吗?
c语言:用数组来处理求Fibonacci数列问题
用数组来处理求Fibonacci数列问题。
解:程序:
#include<stdio.h>
int main()
int i, f[20] = 1,1 ;//对最前面两个元素f[0]和f[1]赋初值1
for (i = 2; i < 20; i++)
f[i] = f[i-2]+f[i-1];//先后求出f[2]~f[19]的值
for (i = 0; i<20; i++)
if (i % 5 == 0)//控制每输出5个数后换行
printf("\\n");
printf("%d\\t", f[i]);//输出一个数
printf("\\n");
return 0;
结果:
1 1 2 3 5
8 13 21 34 55
89 144 233 377 610
987 1597 2584 4181 6765
请按任意键继续. . .
本文出自 “岩枭” 博客,请务必保留此出处http://yaoyaolx.blog.51cto.com/10732111/1746391
以上是关于初学者2个小问题,用C/C++的。 两个function的主要内容,如果未能解决你的问题,请参考以下文章
2022-06-29:x = { a, b, c, d }, y = { e, f, g, h }, xy两个小数组长度都是4。 如果有: a + e = b + f = c + g = d + h
用C++编程求1+1/2!+1/3!+.....+1/12!,为啥无结果呢?求改正。
用C语言 如何从 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 中 随即选取其中两个 并输出这两个数的乘积?