| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3824 人关注过本帖
标题:寻找特殊偶数
只看楼主 加入收藏
o天道酬勤o
Rank: 1
等 级:新手上路
帖 子:106
专家分:0
注 册:2016-11-4
结帖率:94.44%
收藏
已结贴  问题点数:18 回复次数:8 
寻找特殊偶数
题目内容:
有一种特殊偶数,它每一位上的数字都两两不相同。我们现在需要找出四位数中某一区间内的这类偶数。

输入格式:
所要寻找的四位偶数的范围。每组输入有两个数字:第一个数字是最小范围;第二个数字是最大范围。如果输入遇到0,输入结束。
输出格式:
列出此范围内的所有特殊偶数,并且列出此范围内特殊偶数的个数。
输入样例:
3000  3020
6040  6090
0 0

下面是我编写的程序,不知道为什么筛选不出来符合条件的特殊偶数


程序代码:
#include<stdio.h>
int main()
{
    int a,b,c,d,e,f,g,h,i;
    int m,n,o,p; 
    int counter=0;
    scanf("%d%d",&a,&b);
    scanf("%d%d",&d,&e);
    scanf("%d%d",&g,&h);
    if(a<=0||b<=0)printf("Error\n");
    else
    {
    for(c=a+1;c<b;c++)//分界点 
    {counter=0;m=c/1000;n=c/100;n=n%10;o=a/10;o=o%10;p=p%10;
        if(m!=o&&m!=n&&m!=p&&n!=o&&n!=p&&o!=p)
        {
        if(c%2==0&&a>=1000&&b>=1000){counter++;
        printf("%d ",c);}}
    }printf("counter=%d",counter);
    printf("\n");
    }if(d<=0||e<=0)printf("Error\n");
    else
    {
    for(f=d+1;f<e;f++)//分界点 
    {counter=0;m=c/1000;n=c/100;n=n%10;o=a/10;o=o%10;p=p%10;
    if(m!=o&&m!=n&&m!=p&&n!=o&&n!=p&&o!=p)
    {
        if(f%2==0&&d>=1000&&e>=1000){counter++;
    printf("%d ",f);}}
    }    printf("counter=%d",counter);printf("\n");
    }
    if(g<=0||h<=0)printf("Error\n");
    else{
    
    for(i=g+1;i<h;i++)//分界点 
    {counter=0;m=c/1000;n=c/100;n=n%10;o=a/10;o=o%10;p=p%10;
    if(m!=o&&m!=n&&m!=p&&n!=o&&n!=p&&o!=p)
    {
    
        if(i%2==0&&g>=1000&&h>=1000){counter++;
        printf("%d  ",i);}}
    }printf("counter=%d",counter);
        
        }
    return 0;
}
搜索更多相关主题的帖子: color 
2016-11-05 22:21
o天道酬勤o
Rank: 1
等 级:新手上路
帖 子:106
专家分:0
注 册:2016-11-4
收藏
得分:0 
额,知道了
2016-11-05 22:30
o天道酬勤o
Rank: 1
等 级:新手上路
帖 子:106
专家分:0
注 册:2016-11-4
收藏
得分:0 
下面这个就是正确的了
程序代码:
#include<stdio.h>
int main()
{
    int a,b,c,d,e,f,g,h,i;
    int m,n,o,p; 
    int counter=0;
    scanf("%d%d",&a,&b);
    scanf("%d%d",&d,&e);
    scanf("%d%d",&g,&h);
    if(a<=0||b<=0)printf("Error\n");
    else
    {
    for(c=a+1;c<b;c++)//分界点 
    {m=c/1000;n=c/100;n=n%10;o=c/10;o=o%10;p=c%10;
        if(m!=o&&m!=n&&m!=p&&n!=o&&n!=p&&o!=p)
        {
        if(c%2==0&&a>=1000&&b>=1000){counter++;
        printf("%d ",c);}}
    }
        printf("\n");
    printf("counter=%d",counter);
    printf("\n");
    }
    counter=0;
    if(d<=0||e<=0)printf("Error\n");
    else
    {
    for(f=d+1;f<e;f++)//分界点 
    {m=f/1000;n=f/100;n=n%10;o=f/10;o=o%10;p=f%10;
    if(m!=o&&m!=n&&m!=p&&n!=o&&n!=p&&o!=p)
    {
        if(f%2==0&&d>=1000&&e>=1000){counter++;
    printf("%d ",f);}}
    }
        printf("\n");
            printf("counter=%d",counter);
            printf("\n");
    }
    counter=0;
    if(g<=0||h<=0)printf("Error\n");
    else{
    
    for(i=g+1;i<h;i++)//分界点 
    {counter=0;m=i/1000;n=i/100;n=n%10;o=i/10;o=o%10;p=i%10;
    if(m!=o&&m!=n&&m!=p&&n!=o&&n!=p&&o!=p)
    {
    
        if(i%2==0&&g>=1000&&h>=1000){counter++;
        printf("%d  ",i);}}
    }printf("counter=%d",counter);
        
        }
    return 0;
}
2016-11-05 22:47
o天道酬勤o
Rank: 1
等 级:新手上路
帖 子:106
专家分:0
注 册:2016-11-4
收藏
得分:0 
寻找特殊偶数
题目内容:
有一种特殊偶数,它每一位上的数字都两两不相同。我们现在需要找出四位数中某一区间内的这类偶数。

输入格式:
所要寻找的四位偶数的范围。每组输入有两个数字:第一个数字是最小范围;第二个数字是最大范围。如果输入遇到0,输入结束。

输出格式:
列出此范围内的所有特殊偶数,并且列出此范围内特殊偶数的个数。

输入样例:
3000  3020
6040  6090
0 0

输出样例:
3012  3014  3016  3018  
counter=4
6042  6048  6052  6054  6058  6072  6074  6078  6082  6084  
counter=10

输入样例:
9  101
87 -1
0 0

输出样例:
Error
Error

时间限制:500ms内存限制:32000kb


但这个题目的输出格式到底是什么,上下两个输入输出样例互相矛盾啊?
提交程序一直通不过。。。。。
另外题目中的“如果输入遇到0,输入结束。”这句话又怎么理解呢?
2016-11-05 22:58
o天道酬勤o
Rank: 1
等 级:新手上路
帖 子:106
专家分:0
注 册:2016-11-4
收藏
得分:0 
但这个题目的输出格式到底是什么,上下两个输入输出样例互相矛盾啊?
提交程序一直通不过。。。。。
另外题目中的“如果输入遇到0,输入结束。”这句话又怎么理解呢?
求回复
2016-11-05 22:59
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:18 
回复 5楼 o天道酬勤o
我刚才也修改过你的代码了,主要问题是取位数问题。修改后应该是这样,为了方便我理解,我翻译了一下:

程序代码:
#include<stdio.h>
int main()
{
    int a,b,c,d,e,f,g,h,i;//声明变量
    int m,n,o,p; //声明变量
    int counter=0;//声明变量
    scanf("%d%d",&a,&b);//输入第一组变量
    scanf("%d%d",&d,&e);//输入第二组变量
    scanf("%d%d",&g,&h);//输入第三组变量
    if(a<=0||b<=0)//第一组
        printf("Error\n");//对a b的取值范围进行判断
    else
    {
        printf("\n\n");
        for(counter=0,c=a+1;c<b;c++)//分界点 ----用c作循环变量
        {
            m=c/1000;//m取千位数
            n=c/100;
            n=n%10;//n取百位数
            o=c/10;//o取十位数
            o=o%10;
            p=c%10;//p取个位数
            if( ( m!=o && m!=n && m!=p && n!=o && n!=p && o!=p )&& (c%2==0 && a>=1000 && b>=1000) )//满足条件判断
            {
               counter++;
               printf("%d ",c);
            }
        }
        printf("\ncounter=%d",counter);
        printf("\n\n");
    }
    if(d<=0||e<=0)
        printf("Error\n");
    else
    {
        printf("\n\n");
         for(counter=0,f=d+1;f<e;f++)//分界点 
         {
            m=f/1000;
            n=f/100;
            n=n%10;
            o=f/10;
            o=o%10;
            p=f%10;
            if( ( m!=o&&m!=n&&m!=p&&n!=o&&n!=p&&o!=p )&& ( f%2==0&&d>=1000&&e>=1000 ) )
            {
                 counter++;
                printf("%d ",f);
            }
        }    
        printf("\ncounter=%d",counter);
        printf("\n\n");
    }
    if(g<=0||h<=0)printf("Error\n");
    else
    {
        printf("\n\n");
        for(counter=0,i=g+1;i<h;i++)//分界点 
        {
            m=i/1000;
            n=i/100;
            n=n%10;
            o=i/10;
            o=o%10;
            p=i%10;
            if( ( m!=o&&m!=n&&m!=p&&n!=o&&n!=p&&o!=p )&&( i%2==0&&g>=1000&&h>=1000 ) )
            {
                counter++;
                printf("%d ",i);
            }
        }
        printf("\ncounter=%d",counter); 
        printf("\n\n");
    }
    return 0;
}

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-11-05 23:34
o天道酬勤o
Rank: 1
等 级:新手上路
帖 子:106
专家分:0
注 册:2016-11-4
收藏
得分:0 
回复 6楼 九转星河
感谢
2016-11-05 23:37
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 7楼 o天道酬勤o
程序代码:
//遇到0输入结束就是说输入0就直接退出循环啊,其实,一个循环体例就够了,就像这样
#include<stdio.h>
int main()
{
    int a,b,c;//声明变量
    int m,n,o,p; //声明变量
    int counter=0;
    while (1)//声明变量
    {
        scanf("%d",&a);//输入变量
        if (a==0)
            break;
        scanf("%d",&b);//为了清晰,最好分开判断
        if (b==0)
            break;
        if(a<=0||b<=0||a>=b||a>=10000||b>=10000)//完善了一下判断条件
           printf("Error\n");//对a b的取值范围进行判断
        else
        {
            printf("\n\n");
            for(counter=0,c=a+1;c<b;c++)//分界点 ----用c作循环变量
            {
                m=c/1000;//m取千位数
                n=c/100;
                n=n%10;//n取百位数
                o=c/10;//o取十位数
                o=o%10;
                p=c%10;//p取个位数
                if( ( m!=o && m!=n && m!=p && n!=o && n!=p && o!=p )&& (c%2==0 && a>=1000 && b>=1000) )//满足条件判断
                {
                   counter++;
                   printf("%d ",c);
                }
            }
            printf("\ncounter=%d",counter);
            printf("\n\n");
        }
    }
    return 0;
}


[此贴子已经被作者于2016-11-5 23:49编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-11-05 23:44
o天道酬勤o
Rank: 1
等 级:新手上路
帖 子:106
专家分:0
注 册:2016-11-4
收藏
得分:0 
回复 6楼 九转星河
请问是怎么翻译的
我才刚开始接触c语言,还不知道这个……
2016-11-05 23:47
快速回复:寻找特殊偶数
数据加载中...
 
   



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

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