c语言,给定不超过6的正整数A,考虑从A开始的连续4个数字,请输出所有由这四个数字组成的无重复数字的三位数。

问题遇到的现象和发生背景

给定不超过6的正整数A,考虑从A开始的连续4个数字,请输出所有由这四个数字组成的无重复数字的三位数。

问题相关代码,请勿粘贴截图
#include 
#include 

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {
        int a,b;
    scanf("%d",&a);
    int i,j,k;
    b = 0;
    i = a;
    while (i <= a+3){
        j = a;
        while(j <= a+3){
            k = a;
            while(k <= a+3){
                if(i!=j){
                    if(j!=k){
                        if(i!=k){
                            b++;
                            printf("%d%d%d",i,j,k);
                            if (b == 6){
                                printf("\n");
                                b = 0;
                            }else{
                                printf(" ");
                            }
                            }
                        }
                    }
                }
                k++;
            }
            j++;
        }
        i++;
    }
    return 0;
}

运行结果及报错内容

报错:excepted identifier or '('before 'return'
excepted identifier or '('before ')'token
recipe for target'main.o'failed

1.不知道为什么你不包含头文件,include里面没有stdio.h你输入和输出一定会报错。
2.好兄弟你的代码写的把我看得晕头转向的,太复杂了吧。我把我写的答案贴出来你可以参考一下

#include<stdio.h>
int main()
{
  int i,j,k,l,num;
  int a[4];
  scanf("%d",&k);
  if(k>6)
  {
    printf("请输入小于7的数\n");
    return 0;
  }
  for(i=k,j=0;i<k+4;i++)
      a[j++]=i;
  for(i=0;i<4;i++)
  {
     for(j=0;j<4;j++)
      if(a[i]!=a[j])
      {
         for(l=0;l<4;l++)
           if(a[l]!=a[i]&&a[l]!=a[j])
           {
             num=a[i]*100+a[j]*10+a[l];
             printf("%d  ",num);
           }
      }
      printf("\n");
  }
  return 0;
}

看看报错信息,你的两个头文件呢,main()里面的一大坨去掉

你这嵌套专家看了都头疼啊!
写得不好。仅供参考!谢谢!

img

img

#include<stdio.h>
#define A (i/100)
#define B (i%100/10)
#define C (i%10)
#define T1 (A==a || A==b  || A==c || A==d )
#define T2 (B==a || B==b  || B==c || B==d )
#define T3 (C==a || C==b  || C==c || C==d )


int main(int argc, char *argv[])
{
    int a;
    do
    {
        scanf("%d", &a);
        if (a < 1 || a > 6)
        {
            puts("输入不符合题意!\n");
        }
    }
    while (a < 1 || a > 6);

    int b = a + 1, c = a + 2, d = a + 3;

    printf("由%d,%d,%d,%d组成的不重复三位数是:\n", a, b, c, d);

    int min = a * 100 + b * 10 + c;
    int max = d * 100 + c * 10 + b;
    for (int i = min; i <= max; i++)
    {

        if (A != B && A != C && B != C && T1 && T2 && T3)
        {

            printf("%d\n", i);
        }
    }

    return 0;
}