C语言,1到1000所有3的倍数且含有2和5

如题所述

#include "stdio.h"
int judge(int n) //判断整数n,各位上是否同时含有数字2和5,满足返回1,不满足返回0
{
   int  two_flag=0,five_flag=0;
   while(n)
   {
      if(n%10==2)
        two_flag=1;
      if(n%10==5)
        five_flag=1;
      n=n/10;    
   }
   if(two_flag==1 && five_flag==1)
     return 1;
   else
     return 0;  
}
int main()
{
   int i;
   for(i=3;i<1000;i+=3)
     if(judge(i)==1)
       printf("%d\t",i);
   printf("\n");    
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-01-06

/*

  30  60  90 120 150 180 210 240 270 300

 330 360 390 420 450 480 510 540 570 600

 630 660 690 720 750 780 810 840 870 900

 930 960 990

Press any key to continue

*/

#include <stdio.h>

int main() {
int i,cnt = 0,n = 1000;
for(i = 10; i <= n; i += 10) {
if(i%2 == 0 && i%3 == 0 && i %5 == 0) {
if(cnt && cnt % 10 == 0) printf("\n");
printf("%4d",i);
++cnt;
}
}
if(cnt % 10) printf("\n");
return 0;
}

本回答被网友采纳
第2个回答  2014-01-06
#include <stdio.h>

int get_every_number(int a[], int x)
{
int i=0;
while(x!=0)
{
a[i++]=x%10;
x/=10;
}
return i;
}

int check(int a[], int n)
{
int i;
for(i=0; i<n; i++)
{
if(a[i]==2 || a[i]==5)
return 1;
}
return 0;
}

void main()
{
int i;
int a[10];
get_every_number(a, 123);
for(i=1; i<=1000; i++)
{
if(i%3==0)
{
if(check(a, get_every_number(a, i)))
printf("%d\n", i);
}
}
}

 


不想改了,我做的是含2或者5的,共楼主参考

第3个回答  2014-01-06
//#include "stdafx.h"//vc++6.0加上这一行.
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
void main(void){
int i,k;
char ax[5];
for(k=0,i=3;i<1000;i+=3)
if(strchr(itoa(i,ax,10),'2') && strchr(ax,'5'))
printf(++k%10 ? "%-5d" : "%-5d\n",i);
if(k%10) printf("\n");
}