本篇文章给大家谈谈c语言数列生成,以及求数列的和C语言编程对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
1、费波纳切数列用C语言怎么编程2、C语言编程题目 数列生成规则如下: 第一项的值为a,第二项的值为b, (0 ≤ a,b ≤ 9)3、C语言,如何生成一列无序的数列4、用c语言产生随机递增数列
费波纳切数列用C语言怎么编程
费波纳切数列,更通用的音译是斐波那契数列,又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、……
数学上的定义是F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*)
根据数学定义,就可以编写生成该数列的代码,如下:
#include stdio.h
#define RANGE 30
static int fibonacci_values[RANGE];
void make_fibonacci_values(void)
{
int i;
fibonacci_values[0] = 0;
fibonacci_values[1] = 1;//赋值前两项
for(i = 2; i RANGE; i ++)
fibonacci_values[i] = fibonacci_values[i-1] + fibonacci_values[i-2];//按照公式生成剩余项
}
int main()
{
int i;
make_fibonacci_values();//调用生成函数
for(i = 0; i RANGE; i ++)
{
printf(“F(%d)=%d\n”, i, fibonacci_values[i]);
}
return 0;
}
这个代码的功能是生成斐波那契数列前30项。
用一个数组把每项的值保存下来,然后依次计算。
事实上,只需要知道前两个值,就可以知道下一个值,这样保存两个值就可以计算出第三个值了。于是求斐波那契数列第n项的函数也可以写作:
#include stdio.h
int fibonacci(int n)
{
int i;
int a,b,c;
if(n0) return 0; //这其实是一种出错情况。
if(n == 0) return 0;
if(n == 1) return 1;//处理前两项的情况
a = 0;
b = 1;//对操作数赋初始值
for(i = 2; i = n; i ++)//第一个计算结果其实是F(2),所以i的初始值用2
{
c = a+b;//这时的c即F(i)
a = b;
b = c;
}
return c;
}
int main()
{
int n;
scanf(“%d”,n);//输入一个n
printf(“F(%d) = %d\n”, n, fibonacci(n));//输出数列第n项值
return 0;
}
同样,对于这类问题也可以用递归思想,使代码变得更简洁。
#include stdio.h
int fibonacci(int n)
{
if(n == 0) return 0;
if(n == 1) return 1;//处理前两项的情况
return fibonacci(n-1) + fibonacci(n-2);
}
int main()
{
int n;
scanf(“%d”,n);//输入一个n
printf(“F(%d) = %d\n”, n, fibonacci(n));//输出数列第n项值
return 0;
}
以上是求斐波那契数列的三种常见的方式。值得注意的一点是,实际使用中要注意使用类型的范围,不要溢出。
比如在这几个程序中使用的是最简单的int类型,最大可以计算到F(46), 而F(47)已经超过了int所能表达的范围,会发生溢出。如果需要更大的值,那么就要改成使用更多字节的类型。比如long long等。
C语言编程题目 数列生成规则如下: 第一项的值为a,第二项的值为b, (0 ≤ a,b ≤ 9)
int a[110000002] = { 0 };
int check(/*int a[]*/){
int i, j, temp = 0;
int n,m;
scanf(“%d %d %d”, a[0], a[1],n);
for (i = 2; i110000001;i++)
{
if (a[i]==0)
{
a[i] = a[i – 1] * a[i – 2];
if (a[i]10)
{
a[i + 1] = a[i] % 10;
a[i] = a[i] / 10;
}
}
}
while (n–)
{
scanf(“%d”, m);
printf(“%d\n”, a[m- 1]);
}
return 0;
}
C语言,如何生成一列无序的数列
1楼已经把程序写出来了 我就解释下吧
其实要生成随即数用到2个函数
srand()
和
rand()
当然rand()是可以单独使用的,不过你会发现每次的数列都是一样的,所以我们就要用到srand()
,它需要一个参数作为种子,我们要得到不同的数列,所以我们一般取时间作为种子,也就是参数time(0),这个生成的随即数的范围是0-65535(也可能是其他的,根据操作系统定的),要的到10以内的,我们对结果取10为模的余数,这样就是0-9,然后把结果加1
用c语言产生随机递增数列
没有,不过给点分的话,本人可以帮你写一个
另,你的问题不是很清楚,比如递增的要求,数列的数据类型
#include stdio.h
#include math.h
#define N 10
//产生整数的随机数
int itervalrnd(int a,int b,int *r) {//a为下限,b为上限,r为种子
int s,m,ri,t,value;
s= b-a+1;
for (m=2;ms;m= m+m) {
;
}
ri =*r;
while (1) {
ri =ri*5%(4*m);
t =ri/4+a;
if (t=b) {
value =t;
break;
}
}
*r =ri;
return value;
}
void main () {
int a,b,r;
int i,t;
int s[N];
printf(“The number is :(input a,b,r)\n”);
scanf (“%d%d%d”,a,b,r);
printf (“The array is :\n”);
for (i =0;iN;i++) {
if (i ==0)
s[i] = itervalrnd(a,b,r);
else {
t = itervalrnd(a,b,r);
if (s[i-1]-t ==0) {
i–;
continue;
}
else s[i] = s[i-1]+abs(s[i-1]-t);
}
printf (“%d “,s[i]);
if ((i+1)%10) printf (“\n”);
}
}
c语言数列生成的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于求数列的和C语言编程、c语言数列生成的信息别忘了在本站进行查找喔。