关于c语言的一道题,求c高手帮忙解答~谢谢啦
Fibonacci数列问题
无穷数列1,1,2,3,5,8,13,21,34,55...称为Fibonacci数列,它可以递归地定义为
F(n)=1 ...........(n=1或n=2)
F(n)=F(n-1)+F(n-2).....(n>2)
现要你来求第n个斐波纳奇数。(第1个、第二个都为1)
**************************
***************************
#include
int main()
{
int a,b,c,n,m;
scanf("%d",&m);
while(m--) //有m组数可以输入
{
scanf("%d",&n);
if(n==1)
c=1;
a=0;
b=1;
if(n>=2)
{
c=a+b;
a=b;
b=c;
n--;
}
printf("%d",c);
printf("
");
}
return 0;
}
#include
main()
{ int a[ ]={1,2,3,4,5,6,7,8,9,0},*p; //定义了一个10个元素的数组,每个元素int类型,还定义了一个p指针.
p=a; //p指针指向数组a
printf (“%x
”,p); //输出把p的地址以十六进制显示,
printf (“%x
”,p+9);//p+9表示移动9个int类型的距离的地址之后换成十六进制显示,
}
如果你的确想打印地址,使用%p 格式就行了,默认是16进制表示,效果和%x一样,但是省去了部分操作。
若一个int类型的变量占2个字节,
第一个printf语句输出的是194,则第二个printf语句的输出结果是
这个题的意思是问你第一个元素到最后一个元素总共占了多少个字节
0x194 +2* 9=
自己算吧,懒得换算了。
194表示十六进制的数组首地址,一个Int类型占用2个字节,那么移动9个元素的距离就是2*9个字节,然后显示地址就是了。
这个深入到内存里类型的表示格式,你记住+1表示移动一个元素类型的距离就行了。
1,1,2,3,5,8,13,21,……
算法:第1第2两项是1,以后每一项是前两项之和。
fun(int n, int* s)就是计算斐波那契数列第n项的值保存在地址为s的变量中。
所以fun(6,&x)是计算第6项的值(也就是8)保存在x中。
而fun(n-1,&f1)是计算第n-1项的值保存在f1中,fun(n-2,&f2)是计算第n-2项的值保存在f2中。
8
这是递归调用函数!
函数返回值通过指针s返回!
6开始,函数返回值为
f(6,*)=f(5,*)+f(4,*)
f(5,*)=f(4,*)+f(3,*)
f(4,*)=f(3,*)+f(2,*)
f(3,*)=f(2,*)+f(1,*)
f(2,*)=1;这时候返回,不再继续
f(1,*)=1;这时候返回,不再继续
f(6,*)=5*f(2,*)+3*f(1,*)=5+3=8
错误之处://应为||
判断了==1,==2,如果刚开始n是0或负值那么函数永远不会返回类似于死循环!
您好,
看C程序。首先看主函数,我们一步步来开:
1,定义整形变量x,,以x的地址为参数。调用函数fun ,我们就带着x来看fun
2,再fun函数内 fun(int n,int *s),,,当我们调用的时候,这个时候n=6,s是x的地址。
3,运行fun函数,首先这个if不执行。执行else,即fun(5,&f1)...
就这样一步步运行。。谢谢!
C语言的一道题不会做了,求大神帮一下
第一题: a=4,b=8, 所以 (b==a) 为假,假就是 0,c= (b==a); c 得 0。语句中 a,b 数值 未发生过变化,保持初始值 a=4,b=8。所以输出 a,b,c 印出: 4,8,0 第二题:输入58,a=58;a>50 的条件成立,输出a值,印58 a>40 的条件成立,输出a值,印58 a>...
c语言有一道题不会做,求高手解,最好分析一下。
答案是:C 因为scanf("%c%c",&a,&b);接收的是1和2,在输入后按了“回车”这个回车符会传递到下一句,也就是:c=getchar(); ,这样 c 赋值为回车符了;d=getchar(); 接着就是这句,你输入34的时候,d 只接收单个字符,也就是 3 ;所以最后的输出是:12 3 ...
用C语言解决这一道题: 编写一个程序,首先要求用户输入名字,然后要求...
1、首先在Ubuntu的终端写出要实现的内容步骤,注释步骤可以帮助书写者理清思路。2、接下来我们运用Input方法,提示用户输入信息,input中的参数就是提示文字。3、接下来接收好用户输入的内容后,我们就可以运用用户输入的内容进行逻辑处理。4、下面我们运行程序,你会在界面中看到,终端提示你输入名字,不输入...
C语言的一道题~求解~最好有原因***
正确答案是B。A和D都很明显,c 不在赋值符号最左边,所以不可能正确把值赋给a,b。对于c,是一个逻辑与表达式,一旦运算符&&前面值为假(值为0)则不会继续运算后面部分,这里c为0 ,所以后面 b = c不会执行。综上,答案为B。
C语言的一道题 求助求助
一、统计输入的字符个数 同学们在学习C语言课程中,经常会遇到一道题,就是要求你写一个C程序,这个C程序能够读取你从键盘上输入的字符,并且统计其中的字符个数,最后输出总的字符个数并且把这些输入的字符再输出来。不少同学遇到这道题没啥思路,不知该如何上手。其实需要按照分解题目、每个分解的...
请问一下这道c语言题目
这题的正确答案是y==14,所以B)正确,应该选B)——x+=x++,x+8,++x是逗号表达式,从左至右计算,取最后一个分表达式的值。过程是:x+=x++使x=5+5==10,然后x++使x==11;再计算x+8,它没有赋给x,所以不影响x的值,x还是11;最后计算++x使x由11变为12。最后加前面的2使y得到14...
C语言有一道题该如何解答?
对整数来说,C语言认为:0为假,非0为真,所以:(x==a)&&(y=b)&& 0为假。“假”在C语言中按整数输出就是0。有一条很实用的编程经验:写&&表达式时,将最有可能为假的条件写在最左边,因为&&从左向右运算,即检查条件,只要遇到某条件为假,就不会再往后继续,因为已可以判定这个表达式...
c语言中的一道题 求程序的输出结果 为什么我求出来是1 2 2 呢?而答 ...
但实践中由于编译器的实现不同,可能导致第三次半段无效时n++未被忽略-理论上是不应该忽略的。所以给的答案是1 2 3。所以问题可能出在你使用的编译器上。我用TC2.0编译器、tcc编译器和cygwin下的gcc编译器执行结果均为:1 2 3。不知道你用的什么编译器?难怪。这主要是编译器的问题。 我用VC...
C语言的一道题怎么做?
int main(){ int a,b,c;a=b=c=0;\/\/++a后a=1,1||++b&&++c可以判断||运算符的运算结果肯定为1了,所以++b&&++c不会执行,既b=0,c=0 \/\/所以输出a=1 b=0 c=0 ++a||++b&&++c;printf("a=%d\\tb=%d\\tc=%d\\n",a,b,c);\/\/a++后a=2,还不能判断&&运算符的运算结果,...
麻烦各位大神可以用C语言描述这道题目么,用代码,谢谢
0f元。\n",n,b);} 二、递归法 float f(float a,float v,int n){ if(n==1)return a;else return (1+v)*f(a,v,n-1);} main(){ float a=1500,v=10.0\/100,b;int n;scanf("%d",&n);b=f(a,v,n);printf("第%d年的工资是%5.0f元。\n",n,b);} ...
欧凝瑞白: 这个程序实际是在计算斐波那契数列: 1,1,2,3,5,8,13,21,…… 算法:第1第2两项是1,以后每一项是前两项之和. fun(int n, int* s)就是计算斐波那契数列第n项的值保存在地址为s的变量中. 所以fun(6,&x)是计算第6项的值(也就是8)保存在x中. 而fun(n-1,&f1)是计算第n-1项的值保存在f1中,fun(n-2,&f2)是计算第n-2项的值保存在f2中.
枝江市13714228075: 求高手帮忙解一道C语言编程题! - ?
欧凝瑞白: 用一个数组记录输入的K个数 用一个数组a[3] 记录1,5,10出现在次数 最后输出就OK了
枝江市13714228075: 哪位高手帮看一下,这道C语言题目可否帮解释详细点?结果是多少呢? - ?
欧凝瑞白: 源文件就有问题. 最后结果是abcbcc程序改为如下,在VS2005下可以运行#include <string.h> //包含string,所以就可以用strcpy这个字符串复制函数 #include <stdio.h> //包含stdio.h,这样就可以用printf void main() {char ch[]="abc",x[3][4];...
枝江市13714228075: 关于C语言的题目,求C高手解答 - ?
欧凝瑞白: #include "stdio.h" void main() { int i,sum=0; for(i=1;i<=100;i++) sum+=i;printf("1+2+3+4+...+100=%d",sum); } 这些很基础,忘lz努力.
枝江市13714228075: 一道C语言题目,请高手给详细解答: - ?
欧凝瑞白: 1、从main()主函数开始从上往下执行函数2、执行到调用函数fun()后,结果是a=3,b=4,即px=3,py=43、由于是px、py是指针,px和 x指向同一个地址, py 和y也是一样的4、所以输出...
枝江市13714228075: 一道C语言题...求高手帮帮 - ?
欧凝瑞白: 1、如果是先定义结构体,在初始化结构体变量需要在结构体后面加分号(;) struct abc { int x; char y; }; struct abc s1,s2; 2、如果在定义的时候初始化结构体变量,可以这样写:struct {int x;char y;}s1,s2;
枝江市13714228075: 求C语言高手..帮忙解下题..我都哭了..1.从键盘输入12个整数,用起泡法对这12个整数进行由小到大的排序.2.有一分数序列如下,求出这个数列的... - ?
欧凝瑞白:[答案] 题目太多.你应分开来一个一个问. 给你回答4 个.问题7可以参照问题3 自己做. #include #include void main(){ int a[12],t; int i,j,n; double f1,f2,f; double term,sum; int *p; int b[4][5]={1,3,5,7,9,2,4,6,8,10,-5,-4,-3,-2,-1,15,17,19,21,0}; int big,small,bi,bj,si,...
枝江市13714228075: 一道C语言的题,哪位高手帮一下忙??
欧凝瑞白: #include "stdio.h" void main() {char a[100],op; int i,c=0; for(i=0;;i++) {op=getchar(); a[i]=op; if (a[i]=='\n'||a[i]==' '&&a[i+1]!='\n'&&a[i+1]!=' ') c++; if ((a[i]=='\n'||a[i]==' ')&&a[i-1]=='p'&&a[i-2] =='o'&&a[i-3]=='t'&&a[i-4]=='s'&&(a[i-5]=='\n'||a [i-5]==' ')) ...
枝江市13714228075: 求高手帮忙做一些C语言试题第一题、单项选择题(每题1分,1、设x和y均为int型变量,则以下语句:x=x+y; y=x - y; x=x - y; 的功能是:A、把x和y按从大到小... - ?
欧凝瑞白:[答案] 第一题、单项选择题(每题1分,5道题共5分) 1、设x和y均为int型变量,则以下语句:x=x+y; y=x-y; x=x-y; 的功能是:D、交换x和y中的值 2、已说明int a=256,执行语句printf(”%x” ,a);的结果是:A、100 3、以...
枝江市13714228075: 求高手帮解决一道C语言的题目 - ?
欧凝瑞白: // 编程求100以内的所有的自守数,// 自守数是指一个数的平方的尾数等于该数自身的自然数,// 如76*76=5776.#include <stdio.h> int main() { int i; for (i = 1; i < 100; i++) if (i * i % 100 == i) printf("%d\n", i); return 0; }