遇7和遇7的倍数输出

题目描述
输出7和7的倍数,还有包含7的数字例如(17,27,37...70,71,72,73...)
输入
首先输入一个整数t,表示有t组数据。
然后有t行,每行一个整数N (N不大于30000)
输出
对于每组数据 ,输出从小到大排列的不大于N的与7有关的数字 .每组数据占一行,每个数字后面有一个空格;
样例输入
2
20
30
**样例输出 **
7 14 17
7 14 17 21 27 28

#include
int main()
{
 int x,n,i,j,k,t;
 scanf("%d",&x);
 for(i=1;i<=x;i++)
 {
  scanf("%d",&n);
  for(j=1;j<=n;j++)
  {
   if(j%7==0) printf("%d ",j);
   else
   {
   for(k=1,t=j;k<=5;k++)
   {
    t=t%10;
    if(t==7) printf("%d ",j);
    t=j/10;
   }
   }
    
  }
 }
  return 0;
}

这个程序在dev上可以运行,但是在郑轻oj上无法通过,不知道是哪里错了。

ChatGPT提供了一个不同的版本

#include <stdio.h>
#include <string.h>

bool contains7(int j)
{
    char str[10];
    sprintf(str, "%d", j);
    for (int i = 0; i < strlen(str); i++)
    {
        if (str[i] == '7')
            return true;
    }
    return false;
}

int main()
{
    int x, n, i, j;
    scanf("%d", &x);
    for (i = 1; i <= x; i++)
    {
        scanf("%d", &n);
        for (j = 1; j <= n; j++)
        {
            if (j % 7 == 0 || contains7(j))
                printf("%d ", j);
        }
        printf("\n");
    }
    return 0;
}

int main()
{
    int x,n,i,j,k,t;
    scanf("%d",&x);
    for(i=1;i<=x;i++)
    {
        scanf("%d",&n);
        for(j=1;j<=n;j++)
        {
            if(j%7==0) printf("%d ",j);
            else
            {
                //for(k=1,t=j;k<=5;k++)
                for(t=j;t>0;)
                {
                    k=t%10;
                    if(k==7)
                    {
                        printf("%d ",j);
                        break;//防止重复输出
                    }
                    t=t/10;//
                }
            }
        }
    }
  return 0;
}