题目描述
输出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;
}