刚开始没有考虑七的倍数,只考虑了含七的数。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a,b;
int i,j,q,w;
int x;
scanf("%d",&a);
for(i=0;i<a;i++)
{
scanf("%d",&b);
for(j=7;j<b;j++)
{
q=j;
while(q>0)
{
x=q%10;
q=q/10;
if(x==7)
{
printf("%d ",j);
break;
}
}
}
printf("\n");
}
return 0;
}
后来提交不上去,
发现想少了,不想大规模改原来代码。就准备加判断,加着加着变量太多自己迷糊了。
就先放下,回头再看。
等一小会就想到可以把两种判断写一起。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a,b;
int i,j,min,q,w;
int x,y[10000],z,zh;
scanf("%d",&a);
for(i=0;i<a;i++)
{
scanf("%d",&b);
w=0;
for(j=7;j<=b;j++)
{
w++;
q=j;
while(q>0)
{
x=q%10;
q=q/10;
if(x==7)
{
y[w]=j;
break;
}
}
}
q=7;
while(q<b)
{
w++;
if(q<b)
{
y[w]=q;
}
q=q*q;
}
for(j=0;j<w;j++)
{
min=j;
for(z=j;z<w;z++)
{
if(y[min]>y[z])
{
min=z;
}
}
zh=y[z];
y[z]=y[min];
y[min]=zh;
}
for(j=0;j<w;j++)
{
printf("%d",y[j]);
}
printf("\n");
}
return 0;
}
第二天看的时候就知道同一个循环一起判断倍数和含七的数。
然后就发现,先判断倍数比较好统计,又发现倍数判断不用二重循环。
if 就可以。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int t;
int n,nn,mm;
int i,j;
int ww,s,q;
scanf("%d", &t);
while (t > 0)
{
scanf("%d", &n);
s = 0;
for (i = 7; i <= n; i++)
{
q = 0;
mm = i/7;
if (s < mm)
{
printf("%d ", i);
q = 1;
s++;
}
nn = i;
for (;nn>0;)
{
ww = nn % 10;
if (ww == 7&&q==0)
{
printf("%d ", i);
break;
}
nn = nn / 10;
}
}
t--;
printf("\n");
}
return 0;
}