| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5005 人关注过本帖
标题:输出1000以内能被3整除且至少有一位是3得数,每行输出4个
只看楼主 加入收藏
王璐
Rank: 2
等 级:论坛游民
帖 子:126
专家分:54
注 册:2010-7-26
收藏
得分:0 
其实我那个主要是因为要4个一行,不然也不会这么长,而且,程序是有错误的!!!但我查不出来了。。
2010-09-23 23:38
tfblc
Rank: 2
等 级:论坛游民
帖 子:34
专家分:25
注 册:2010-9-18
收藏
得分:0 
直接用  n%3==0 不行,这个不是整除了么?
2010-09-24 00:51
真我
Rank: 4
等 级:业余侠客
威 望:1
帖 子:146
专家分:210
注 册:2010-7-14
收藏
得分:0 
#include <stdio.h>

int main()
{
    int n,i,j,k,c=0;
    for (i=0; i<=9; i++)
        for(j=0;j<=9;j++)
           for(k=0;k<=9;k++)
            {
                  if(((i+j+k)%3==0) && (i==3||j==3||k==3))
               {
                  n=i*100+j*10+k;
                  printf("%d ",n);
                  if(++c>=4)
                  puts(""), c=0;
               }
            }

    return 0;
}
那看看这个吧
2010-09-24 01:16
真我
Rank: 4
等 级:业余侠客
威 望:1
帖 子:146
专家分:210
注 册:2010-7-14
收藏
得分:5 
把这个改写if(((i+j+k)%3==0) && (i==3||j==3||k==3))
成if((k==3||j==3||i==3)&&((i+j+k)%3==0)))能提高效率
2010-09-24 01:25
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:0 
算法的目的,首先必须能解决问题,当然也要考虑效率。

★★★★★为人民服务★★★★★
2010-09-24 08:14
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:0 
以下是引用真我在2010-9-23 22:42:55的发言:

不带你这样玩的,这样更累
你都不懂就乱评价!
程序代码:
#define PIG_NUMBER_ONE(a,b,c) printf("%d%d%d\n",a,b,c);
#define PIG_NUMBER_TWO(a,b,c) PIG_NUMBER_ONE(a,b,c)\
    PIG_NUMBER_ONE(a,c,b)\
    PIG_NUMBER_ONE(b,a,c)\
    PIG_NUMBER_ONE(b,c,a)\
    PIG_NUMBER_ONE(c,b,a)\
    PIG_NUMBER_ONE(c,a,b)
#define PIG_NUMBER_THREE(a,b) PIG_NUMBER_ONE(a,a,b)\
    PIG_NUMBER_ONE(a,b,a)\
    PIG_NUMBER_ONE(b,a,a)
int main(){   
    for(unsigned int a=0;a<10;a++){
        if(a==3)
            continue;
        for(unsigned int b=a;b<10;b++){
            if(b==3&&b==0)
                continue;
            if((a+b)%3==0){
                PIG_NUMBER_TWO(3,b,a)
            }
        }
    }
    PIG_NUMBER_THREE(0,3)
    PIG_NUMBER_THREE(3,6)
    PIG_NUMBER_THREE(3,9)
    PIG_NUMBER_ONE(3,3,3)
    return 0;
}




[ 本帖最后由 hahayezhe 于 2010-9-24 10:20 编辑 ]
2010-09-24 10:19
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:0 
程序代码:
#define PIG_NUMBER_ONE(a,b,c) printf("%s\n%s\n%s\n%s\n%s\n%s\n",PIG_NUMBER_TWO(a,b,c),PIG_NUMBER_TWO(a,c,b)\
    ,PIG_NUMBER_TWO(b,c,a),PIG_NUMBER_TWO(c,b,a),PIG_NUMBER_TWO(b,a,c),PIG_NUMBER_TWO(c,a,b));

#define PIG_NUMBER_TWO(a,b,c) #a#b#c

#define PIG_NUMBER_THREE(a,b,c) printf("%d\n%d\n%d\n",PIG_NUMBER_FOUR(a,b,c),PIG_NUMBER_FOUR(a,c,b),PIG_NUMBER_FOUR(c,a,b));
#define PIG_NUMBER_FOUR(a,b,c) a##b##c
#define PIG_NUMBER_FIVE(a,b,c) printf("%s\n",#a#b#c);
int _tmain(int argc, _TCHAR* argv[])
{
    PIG_NUMBER_ONE(0,6,3)
    PIG_NUMBER_ONE(0,9,3)
    PIG_NUMBER_ONE(1,2,3)
    PIG_NUMBER_ONE(1,5,3)
    PIG_NUMBER_ONE(1,8,3)
    PIG_NUMBER_ONE(2,4,3)
    PIG_NUMBER_ONE(2,7,3)
    PIG_NUMBER_ONE(4,5,3)
    PIG_NUMBER_ONE(4,8,3)
    PIG_NUMBER_ONE(5,7,3)
    PIG_NUMBER_ONE(6,6,3)
    PIG_NUMBER_ONE(6,9,3)
    PIG_NUMBER_THREE(3,3,6)
    PIG_NUMBER_THREE(3,3,9)
    PIG_NUMBER_FIVE(3,3,3)
    PIG_NUMBER_FIVE(0,3,3)
    PIG_NUMBER_FIVE(3,0,3)
    PIG_NUMBER_FIVE(3,3,0)
    return 0;
}
2010-09-24 10:21
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
回复 4 楼 御姐
.....

[ 本帖最后由 BlueGuy 于 2010-9-24 10:33 编辑 ]

我就是真命天子,顺我者生,逆我者死!
2010-09-24 10:31
zghnxzdcx
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:550
专家分:1176
注 册:2010-4-6
收藏
得分:5 
main()
{
   int count; /*计数器*/
   int i,j,k; /*第几位*/
   int bits[3];/*bits[x]表示第x位上的数字*/
   int m;
   clrscr();
   for(i=0;i<3;i++)
   {
        bits[i]=3;
        for(j=0;j<3;j++)
        {
            if(j==i) continue;
            for(k=0;k<3;k++)
            {
                if(k==i||k==j) continue;
                bits[i]=3;
        for(m=0;m<10;m=m+3)
                {
                     for(bits[j]=0;bits[j]<=(m/2.0);bits[j]++)
             {

             bits[k]=m-bits[j];
             if(bits[j]==3||bits[k]==3) continue;
                         printf("%d",bits[i]*E(i)+bits[j]*E(j)+bits[k]*E(k));
                         count++;
                         if(0==count%4) printf("\n");
                         else printf("\t");
                     }
                }
            }
        }
   }
}
int E(int x)
{
   if(x==0)  return 1;
   else return E(x-1)*10;
}

这个算法有些问题,出现了重复的数字

你永远不可能战胜一个纯傻子,因为他会把你的智商拉到和他同一个水平,然后用他的丰富经验打败你。
2010-09-24 12:20
jack10141
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:陕西西安
等 级:小飞侠
威 望:6
帖 子:706
专家分:2271
注 册:2010-8-10
收藏
得分:0 
看不懂楼主的逻辑

Coding就像一盒巧克力,你永远不会知道你会遇到什么BUG
别跟我说你是不能的,这让我愤怒,因为这侮辱了你的智慧
2010-09-24 13:13
快速回复:输出1000以内能被3整除且至少有一位是3得数,每行输出4个
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.034738 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved