Bootstrap

6.0.1 给定条件的整数集

给定不超过6的整数A,考虑从A开始的连续四个数字,请输出所有由他们组成的无重复数字的三位数.输出要求如下.

首先需要输入一个变量a.我们需要做一个三位数 三位数的每一位都能是四个数字里面的任一个a,a+1,a+2,a+3,但不能重复.显然我们需要三重循环.每一轮的循环都能从a走到a+3.我们可以用while来做做看.我们不妨说现在我们有三个变量i,j,k.(为什么习惯用i作为循环变量呢,因为i是index的首字母.)我们先让i=a,循环条件为(i<=a+3),然后在这个循环里头,显然我们循环的每一轮都需要让i++,然后让j=a(每次重置j的值),第二层循环是j++,k=a,第三层则让k++,由于输出格式的要求,我们需要让三个数不相等才能打印出来,因此我们需要三个判断语句,判断三者是否相等(求所有三位数则去掉这三个判断语句).同时我们需要一个变量count来计算是否等于6,不等于6则用空格隔开,等于6则打印\n,可以用if else来实现.代码如下:

#include<stdio.h>
int main(){
    int a;
    scanf("%d",&a);
    int i,j,k;
    int cnt=0; 
    i=a;
    while(i<=a+3)
    {
        j=a;
        while(j<=a+3)
        {   
            k=a;
            while(k<=a+3){
            if(i!=j&&j!=k&&i!=k){         //这里我懒得写三个判断条件了
            printf("%d%d%d",i,j,k);
            cnt ++;
            if(cnt%6!=0){
                printf(" ");
                        }
            else        
                        {
                printf("\n");
                        }
            } 
                k++;
            }
            j++;
        } 
        i++;
    }
}

三位数的值可以一个一个打印出来 也可以累加之后再打印 但前者较优 因为不用重复累加的步骤

这是我的代码,我用的是for循环.那时候可能是看题目的A,然后几乎所有变量都有大写了,真的无语.

我用的累加再输出,明显没有直接打印每个数好.

#include<stdio.h>
int main(){
    int A;
    scanf("%d",&A);//A<=6
    int RE=A; 
    int count=0;
    for(A=A;A<RE+4;A++)
    {
        for(int B=RE;B<RE+4;B++)
     {
         for(int C=RE;C<RE+4;C++){
        
        int sum=A*100+B*10+C;
        if(A!=B&&B!=C&&A!=C)
        {
        printf("%d",sum);    
        count ++;
        if(count%6!=0){
                printf(" ");
                }
        else        
            {
                printf("\n");
            }
        }
     }
        }
    }
    }

;