C语言编程题
2个回答
展开全部
1.要得到最接近x的项,就要知道最后一个小于x的项,和第一个大于x的项。
2.因为x值不确定,所以不能用数组存放数列,不然数组无法确定。
3.本程序没有严格检验非法输入,当输入小于3的数值时,会一直输出第二项,3.
4.设计思路是符合你的需要的。
#include<sdio.h>
void
main()
{
int
pre=2,now=3,nex=0;
int
X=0;
int
result[2];//存放结果;
printf("请输入数值:");
scanf("%d",&X); int
i=3;
nex=genera(pre,now);
while(1)
{
if(nex==x)
{
result[0]=i;
result[1]=nex;
break;
}
else
if(nex<x)
{
pre=now;
now=nex;
nex=genera(pre,now);
i+=1;
}
else
{
final(now,i-1,nex,i,X);
break;
}
}
if(result[0]!=0&&result[1]!=0)
{
printf("最接近的项为第:%d\n",result[0]);
printf("数值为:%d\n",result[1]);
}
}
int
genera(int
pre,int
now)
//生成数列下一项
{
int
next=pre*now;
return
next;
}
void
final(int
lt,int
ltx,int
mt,int
mtx,int
x)//判断最后一个小于x的项和第一个大于x的项,哪个更接近x;
{
int
a=x-lt;
int
b=mt-x;
if(a>b)
{
result[0]=mtx;
result[1]=mt;
}
els
{
result[0]=ltx;
result[1]=lt;
}
}
2.因为x值不确定,所以不能用数组存放数列,不然数组无法确定。
3.本程序没有严格检验非法输入,当输入小于3的数值时,会一直输出第二项,3.
4.设计思路是符合你的需要的。
#include<sdio.h>
void
main()
{
int
pre=2,now=3,nex=0;
int
X=0;
int
result[2];//存放结果;
printf("请输入数值:");
scanf("%d",&X); int
i=3;
nex=genera(pre,now);
while(1)
{
if(nex==x)
{
result[0]=i;
result[1]=nex;
break;
}
else
if(nex<x)
{
pre=now;
now=nex;
nex=genera(pre,now);
i+=1;
}
else
{
final(now,i-1,nex,i,X);
break;
}
}
if(result[0]!=0&&result[1]!=0)
{
printf("最接近的项为第:%d\n",result[0]);
printf("数值为:%d\n",result[1]);
}
}
int
genera(int
pre,int
now)
//生成数列下一项
{
int
next=pre*now;
return
next;
}
void
final(int
lt,int
ltx,int
mt,int
mtx,int
x)//判断最后一个小于x的项和第一个大于x的项,哪个更接近x;
{
int
a=x-lt;
int
b=mt-x;
if(a>b)
{
result[0]=mtx;
result[1]=mt;
}
els
{
result[0]=ltx;
result[1]=lt;
}
}
意法半导体(中国)投资有限公司
2023-06-12 广告
2023-06-12 广告
二1、 在C语言中,全局变量的存储类别是: (a) A) static B) extern C) void D) register 2、 有如下函数调用语句 func(rec1,rec2+rec3,rec4,rec5); 该函数调用语...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
展开全部
我已经用C语言3年多了,下面是我的答案,愿你满意!若有不懂之处,欢迎请教!
#include
"stdio.h"
void
main()
{
int
x,t,a=2,b=3;
int
n=2;
printf("\n请输入整数x:");
scanf("%d",&x);
if(x==3)
{
printf("x最接近数列的第%d项",n);
}
else
if(x==2)
{
printf("x最接近数列的第%d项",n-1);
}
while(b<x)
{
t=a*b;
a=b;
b=t;
n++;
if(b==x)
{
printf("x最接近数列的第%d项",n);
break;
}
else
if(b>x)
{
if(b-x<x-a)
{
printf("x最接近数列的第%d项",n);
}
else
{
printf("x最接近数列的第%d项",n-1);
}
break;
}
}
}
#include
"stdio.h"
void
main()
{
int
x,t,a=2,b=3;
int
n=2;
printf("\n请输入整数x:");
scanf("%d",&x);
if(x==3)
{
printf("x最接近数列的第%d项",n);
}
else
if(x==2)
{
printf("x最接近数列的第%d项",n-1);
}
while(b<x)
{
t=a*b;
a=b;
b=t;
n++;
if(b==x)
{
printf("x最接近数列的第%d项",n);
break;
}
else
if(b>x)
{
if(b-x<x-a)
{
printf("x最接近数列的第%d项",n);
}
else
{
printf("x最接近数列的第%d项",n-1);
}
break;
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询