用C/C++做数据结构题,不要太过复杂的,要运用算法,囧

来源:百度知道 编辑:UC知道 时间:2024/06/06 20:22:11
1.试写一算法,自小到大依次输出顺序读入的三个整数x、y、z值。
2.已知k阶斐波那契序列的定义为:
f0=0,f1=0, …fk-2=0,fk-1=1;
fn=fn-1+fn-2+ …+fn-k,n=k,k+1, …
编写出求k阶斐波那契序列的第m项值的函数算法,k和m均以值调用的形式在函数参数表中出现.
3.试编写算法,计算i!*2i的值,并存放入数组a[0¨arrsize-1]的第i-1个分量中(i=1,2, …n).假设计算机中允许的整数最大值为maxint,则当n>arrsize或对某个k(1≤k ≤n)使k!*2k>maxint时应按出错处理。注意选择你认为较好的出错处理方式。

===============================================================

好久没碰了,全都忘了~还请高人指点!~

1.
#include<stdio.h>

main()
{
int x,y,z;
int temp;
scanf("%d %d %d",&x,&y,&z);
if(x>y){temp=x;x=y;y=temp;}
if(y>z){
if(x>z){temp=z;z=y;y=x;x=temp;}
else {temp=z;z=y;y=temp;}

printf("%d %d %d",x,y,z);
}

2.
int fab(int k,int m)
{ int result;
if(k<1) return 0;
if(m<k) return 0;
if(m=k) return 1;
result=pow(2,m-k-1);
return result;
}

3.
这个函数要求传递数组名,数组长度,计算项数三个参数
返回值为发生错误的类型:0表示没有错误;1表示计算项数大于数组长度;2表示某项计算的值大于计算机允许的最大值maxint,函数中的maxint由外部定义的常量.

int func3(int a[],int arrsize,int n)
{
int i=0,j,temp;

if(arrsize<n) return 1;/*错误1*/

a[i++]=2; /*为a[0]赋值2且i增1*/
while(i<n)
{
if(a[i-1]/i>maxint/((i+1)*(i+1))) return 2;/*错误2,乘积大于计算机允许的最大值*/
temp=1;
for(j=1;j<=i+1;j++)/*计算k!的值*/
temp*=j;