| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1046 人关注过本帖
标题:用do while找出满足条件的三位数
只看楼主 加入收藏
dazhiye
Rank: 1
等 级:新手上路
帖 子:31
专家分:5
注 册:2010-1-18
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
用do while找出满足条件的三位数
题目:试找出满足下列条件的所有三位数:
1.其百位数不大于2;
2.将个位与百位对换,得到的三位数是原三位数的两倍多。
参考程序是用for循环做的,于是我想把它用do while做一下,但是没有输出结果,只有一个press any key to country,程序如下 :麻烦大家给看一下
程序代码:
#include"stdio.h"
void main()
{
    int i=0,j=0,k=2,n=0,m=0,s=0;
    do{   /*一重循环i,百位数*/
        do{   /*二中循环j,十位数*/
            do{   /*三重循环k,个位数*/
                n=100*i+10*j+k;
                m=100*k+10*j+i;
                if(m>2*n&&m<3*n)
                {
                    s++;
                    printf("%d  ",n);
                    if(s%10==0)printf("\n"); /*输出十个数换行*/
                }
                k++;
            }while(k<=9);
            j++;
        }while(j<=9);
    i++;
    }while(i<=2);
}

 
搜索更多相关主题的帖子: country color 
2011-04-13 21:27
dazhiye
Rank: 1
等 级:新手上路
帖 子:31
专家分:5
注 册:2010-1-18
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册
2011-04-13 21:28
boxinchao
Rank: 4
等 级:业余侠客
帖 子:51
专家分:231
注 册:2011-4-13
收藏
得分:5 
回复 2楼 dazhiye
在i,j,k++前分别把他们的值打印出来看一下你就会发现问题了
2011-04-13 22:08
a85703559
Rank: 2
等 级:论坛游民
帖 子:22
专家分:43
注 册:2011-4-11
收藏
得分:10 
程序代码:
void main()

 {
     int i=0,j=0,k=2,n=0,m=0,s=0;
     do{   /*一重循环i,百位数*/
        //这里应该再加一个j = 0;否则当二重循环做完后的j值为9;
         do{   /*二中循环j,十位数*/
                //这里应该再加一个k = 0;道理一样。
             do{   /*三重循环k,个位数*/
                 n=100*i+10*j+k;
                 m=100*k+10*j+i;
                 if(m>2*n&&m<3*n)
                 {
                     s++;
                     printf("%d  ",n);
                     if(s%10==0)printf("\n"); /*输出十个数换行*/
                 }
                 k++;
             }while(k<=9);
             j++;
         }while(j<=9);
     i++;
     }while(i<=2);

 }

楼主可以自己试试看。
2011-04-13 22:19
叁万英尺
Rank: 2
等 级:论坛游民
帖 子:8
专家分:15
注 册:2011-4-13
收藏
得分:5 
#include <stdio.h>

void main(void)
{
    int i=100;
    do{
        i++;
        int x,y,z;
        x=i/100;
        y=(i-100)/10;
        z=i%10;
        int j;
        j=z*100+y*10+x;
        if(j>2*i)
            printf("%d   ",i);
    }
    while(i<200);
}
结果:
103   104   105   106   107   108   109   113   114   115   116   117   118   119   123   124   125   126   127   128   129   133   134   135   136   137   138   139   143   144   145   146   147   148   149   153   154   155   156   157   158   159   163   164   165   166   167   168   169   173   174   175   176   177   178   179   183   184   185   186   187   188   189   193   194   195   196   197   198   199
2011-04-13 22:50
叁万英尺
Rank: 2
等 级:论坛游民
帖 子:8
专家分:15
注 册:2011-4-13
收藏
得分:0 
程序代码:
#include <stdio.h>
void main(void)
{
    int i=100;
    do{
        i++;
        int x,y,z;
        x=i/100;
        y=(i-100)/10;
        z=i%10;
        int j;
        j=z*100+y*10+x;
        if(j>2*i)
            printf("%d   ",i);
    }
    while(i<200);
}

结果:
103   104   105   106   107   108   109   113   114   115   116   117   118   119   123   124   125   126   127   128   129   133   134   135   136   137   138   139   143   144   145   146   147   148   149   153   154   155   156   157   158   159   163   164   165   166   167   168   169   173   174   175   176   177   178   179   183   184   185   186   187   188   189   193   194   195   196   197   198   199
2011-04-13 22:51
dazhiye
Rank: 1
等 级:新手上路
帖 子:31
专家分:5
注 册:2010-1-18
收藏
得分:0 
回复 5楼 叁万英尺
程序代码:
#include <stdio.h>

void main(void)
{
    int i=100;
    do{
        i++; //这个似乎该放在后面的,放在这里先不论其他,i就从101开始了
        int x,y,z;
        x=i/100;
        y=(i-100)/10;   //我的问题是百位数不大于2,可能为2**……if(i<200)y=(i-100)/10;else y=(i-200)/10
        z=i%10;
        int j;  //声明变量应该在函数体的开头,不然会出现错误,vc6.0上是这样,不知道其他的编译器怎样
        j=z*100+y*10+x;
        if(j>2*i)
            printf("%d   ",i);
    }
    while(i<200); //我的问题是百位数不大于2,可能为2**,<300……
}
谢谢你的解答,这也是一种好方法哈,大家一起交流……共同进步……
下面是我粗陋的一点想法:
程序代码:
#include <stdio.h>
void main(void)
{
    int i=100;
    int x,y,z,j;
    do{     //int x,y,z,j;放在这里定义变量,vc6.0编译也能通过
        x=i/100;
        if(i<200)y=(i-100)/10;
        else y=(i-200)/10;
        z=i%10;
        j=z*100+y*10+x;
        if(j>2*i&&j<3*i)
            printf("%d  ",i);
        i++;
    }
    while(i<300);
}




[ 本帖最后由 dazhiye 于 2011-4-14 13:14 编辑 ]
2011-04-14 13:12
快速回复:用do while找出满足条件的三位数
数据加载中...
 
   



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

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