问题描述
对于长度为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;
}