第一题:求类似斐波那契数列中的第n个数
武安ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18982081108(备注:SSL证书合作)期待与您的合作!
先来看下什么是斐波那契数列:
指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n=3,n∈N*)
数列中的每个数,都等于前两个数字之和。第一数和第二数规定为1.
回到图中的程序,n=2时,返回2,那么就是将第一个和第二个数规定为2。
即:
fib(1)=2, fib(2)=2
根据公式:
fib(3) = fib(1)+fib(2)=2+2=4
代码的用递归实现,若不懂递归,可google之或百度之。
第二题:
main函数里的变量a,b,c都没有用上,迷惑你用的。回到d
d=f(f(3,4), f(3,5))
再看f这个函数
f(3,4) = f(x,y)=(y-x)*x=(4-3)*3=3
f(3,5) = (5-3)*3=6
因此,d=f(f(3,4), f(3,5))=f(3,6)=(6-3)*3=9
第三题 这个函数里面的赋值写法我还没见过,容我再想想。
定义的input(int
m)
m作用的作用从代码
printf("%s输入一个二进制数:\n",m?"请":"输入有误,请重新");
中的
m?"请":"输入有误,请重新"
这个三目运算符可以看出:
当m=1时
输出:请输入一个二进制数:
m
!=1时
输出:
输入有误,请重新输入一个二进制数:
也就是为了提示用户用的!
所以
这里的
n=input(1)
的
1就是说明要求系统提示:输入有误,请重新输入一个二进制数:
#includestdio.h
#includemath.h
void zero(float a,float b);
void left();
void right(float a,float b,float c);
void main()
{
float a,b,c,d;
printf("请输入a,b,c的值:\n");
scanf("%f %f %f",a,b,c);
d=b*b-4*a*c;
if(d==0)zero(a,b);
if(d0)left();
if(d0)right(a,b,c);
}
void zero(float a,float b)
{
printf("%f",-b/2*a);
}
void left()
{
printf("no roots!\n");
}
void right(float a,float b,float c)
{
float x1,x2;
x1=(-b+sqrt(b*b-4*a*c))/(2*a);
x2=(-b-sqrt(b*b-4*a*c))/(2*a);
printf("%f %f \n",x1,x2);
}
#include stdio.h
float max(float a[])
{
int i;
float m = a[0];
for(i=1;i10;i++)
{
if(ma[i])
m = a[i];
}
return m;
}
float min(float a[])
{
int i;
float m = a[0];
for(i=1;i10;i++)
{
if(ma[i])
m = a[i];
}
return m;
}
float aver(float a[])
{
float sum = 0;
int i;
for(i=0;i10;i++)
sum += a[i];
return sum / 10;
}
int main()
{
float num[10];
int i;
for(i=0;i10;i++)
scanf("%f",num[i]);
printf("The max number is %f\n",max(num));
printf("The min number is %f\n",min(num));
printf("The average number is %f\n",aver(num));
return 0;
}