程序(5)



程序一、求第n个斐波那契数。

#include <stdio.h>

#define max 10000

 main()

{

long a[max];

a[0]=1;

a[1]=1;

int n,i;

int t=0;

printf("Please input a number:\n");

scanf("%ld",&n);

if(n==1||n==2)

printf("the fei bo na qi shu is %ld.\n",a[n-1]);

else

{

for(i=2;i<n;i++)

{

a[i]=a[i-1]+a[i-2];

t=a[i];

}

printf("the fei bo na xi shu is %ld.\n",t);

}

 

 

    return 0;

}

 

程序二、输入一个n型整数,求出其二进制形式中的1的个数。

#include <stdio.h>

void to_binary(int);

 

int main()

{

int n;

 

printf("Please input a number(q to quit);\n");

while(scanf("%d",&n)==1)

{

        printf("Binary equivalent:");

to_binary(n);

printf("\n");

printf("Please input another number:\n");

}

    return 0;

}

 

void to_binary(int n)

{

int t,num;

num=0;

while(n>=2)

{

t=n%2;

if(t==1)

num++;

        n=n/2;

putchar('0'+t);

}

if(n==1)

{

putchar('0'+1);

num++;

}

else

putchar('0'+0);

printf("\nthe number of one is %d.\n",num);

return ;

}

问题:程序中想输出二进制,但输出来的数是反的?

解决输出问题:采用递归的办法

void to_binary (int n)

{

int r;

r=n%2;

if(n>=2)

{

to_binary(n/2);

}

putchar('0'+r);

return;

}

这个办法能输出一个数的二进制形式,但一的个数没法求出来,有待解决。

 

 

程序三、求出1000以内所有的完数。

#include <stdio.h>

 

int main()

{

int n=1000;

int i,r,j;

printf("the number from 1-1000 wanshu is:\n");

 

    for(i=1;i<=1000;i++)

{

r=0;

for(j=1;j<i;j++)

{

if(i%j==0)

r+=j;

}

    if(r==i)

    printf("%d  ",i);

}

printf("\n");

 

    return 0;

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值