用dev c++编程 输入正整数n,1<=n<=6,输出长度为n的所有01字符串,每行一个串
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用dev c++编程 输入正整数n,1<=n<=6,输出长度为n的所有01字符串,每行一个串相关的知识,希望对你有一定的参考价值。
就是说,输入的n=1时输出的是1和0,n=2时输出11,10,01,00,这样的。
可以的话尽量简单一些,最好有注释
方法2:
//把一个10进制的数字转换成2进制的
string to2(int x,int len)
string ans;
while(x>0)
char ch=(x%2)+'0';
ans=ch+ans;
x/=2;
while(ans.size()<len)ans="0"+ans;//让返回的字符串的长度一定要到len长度
return ans;
//计算2^x,就是2的x次方
int ci(int x)
if(x==0)return 1;
int ans(1);
for(int i = 1;i<=x;++i)
ans*=2;
return ans;
int main()
//按照题目要求,其实就是输出从(2^in-1)到0的二进制表示
int in;cin>>in;
for(int i = ci(in)-1;i>=0;--i)//从(2^in-1)到0,遍历过去
cout<<to2(i,in)<<endl;//把i这个10进制的整数转化为2进制,然后输出
return 0;
参考技术B #include<stdio.h>
main()
int i,j,n,m,a[];
scanf("%d",&n);
while(n<1&&n>6)
printf("输入错误,请从新输入:");
scanf("%d",&n);
m=pow(2,n);
for(i=0;i<m;i++)
int p=0;
while(i!=0) if(i%2!=0) a[p]=1; else a[i]=0; i/=2; p++;
for(int j=p-1;j>=0;j--)
printf("%d",a[j]);
printf("\n");
其实这个题就是叫你用二进制写出(0~2^n)! 参考技术C /* Note:Your choice is C IDE */
#include "stdio.h"
#define MAX 1000
void fun(int n,char *str)
if(n==0)
printf("%s\n",str); //输出当前的字符串
else
str[n-1]='1';//设置当前字符为1
fun(n-1,str);//递归调用继续设置
str[n-1]='0';//设置当前字符为0
fun(n-1,str);//继续递归调用
void main()
char str[MAX]=0;
int n;
printf("请输入n:");
scanf("%d",&n);
fun(n,str);
本回答被提问者和网友采纳
周一编程总结2
本题要求编写程序,找出给定的n个数中的最大值及其对应的最小下标(下标从0开始)。
输入格式:
输入在第一行中给出一个正整数n(1<n≤10)。第二行输入n个整数,用空格分开。
输出格式:
在一行中输出最大值及最大值的最小下标,中间用一个空格分开。
输入样例:
6
2 8 10 1 9 10
输出样例:
10 2
2.实验代码
#include <stdio.h>
int main(){
int n, i, num, max, maxPos;
scanf("%d", &n);
for(i=0; i<n; i++){
scanf("%d", &num);
if(i==0){
max = num;
maxPos = 0;
}
else{
if(num>max){
max = num;
maxPos = i;
}
}
}
printf("%d %d", max, maxPos);
return 0;
}
3.流程图
4.遇到的问题及解决办法
a.不很清楚如何控制数的多少
b.不知道如何找出其最大值和其坐标
c。通过查看同学的编程代码有了大概的思路。
5.运行截图
以上是关于用dev c++编程 输入正整数n,1<=n<=6,输出长度为n的所有01字符串,每行一个串的主要内容,如果未能解决你的问题,请参考以下文章
N为正整数,计算从1到N的所有整数中包含数字1的个数.用(c++)