蓝桥杯练习——2.22

问题描述

对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:

00000

00001

00010

00011

00100

请按从小到大的顺序输出这32种01串。

输入格式

本试题没有输入。

输出格式

输出32行,按从小到大的顺序每行一个长度为5的01串。
样例输出
00000
00001
00010
00011
<以下部分省略>

解题思路:

此题可根据二进制算法来解决,一共有五位数,最高位为2的四次方为16,数据最大不超过2的五次方为32,运用一次for循环自增,最终输出数据再转化为二进制数即可。

源代码:

#include <stdio.h>
int main( )
{
    int i;
    int n=32;
    for(i=0;i<n;i++)
    {
        printf("%d%d%d%d%d\n",i/16%2,i/8%2,i/4%2,i/2%2,i%2);
    }
    return 0;
}

视频练习:

链接:https://www.bilibili.com/video/BV12x411D7xr/?spm_id_from=333.788.videocard.9

心得:

学习使用C++语言编辑循环与判断语句,了解C++语言与C语言的不同之处。

题目:

问题描述

有一个数列,它的第一项是1,第二项是2,第三项是第一项与第二项的和,后面的项依次类推,即F(1)=1,F(2)=2,F(n)=F(n-1)+F(n-2)(n≥3,n∈N*)
  
输入格式


  
输出格式

输出20行,每行一个数值,表示数列第几项的值。(注意不要输出多余的字符)

源代码:

#include<iostream>

using namespace std;

int f(int n)
{
    if(n==0)
        return 0;
    else if(n==1)
        return 1;
    else if(n==2)
        return 2;
    else
        return f(n-1)+f(n-2);
}


int main()
{
    int i;
    int sum[30];
    for(i=0;i<21;i++)
    {
        sum[i] = f(i);
        if(sum[i]==0)
            continue;
        else
            cout<<sum[i]<<endl;
    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值