zzulioj2543:D学长 锲而不舍 ~

【题目描述】
众所周知,D学长碰到问题锲而不舍,总是想办法解决问题,顺便解决提出问题的人
某日,D学长在健身房邂逅了一位漂亮的女孩,D学长鼓起勇气询问了女孩的电话号码且写在了纸上。健身结束后,D学长拿出纸条才发现手机号的后4位数已经被汗水浸湿且无法分辨号码了。凭借记忆,D学长想起来了后四位的号码的区间范围 X-Y,且这4位数字各不相同。D学长想从小到大依次尝试,那他尝试的第一个号码的后四位是多少呢?

输入
输入包括两个整数,分别是 x,y, 并且1 <= x <= y <= 9999

输出
如果号码存在,输出一个四位的整数,表示D学长第一次尝试的号码后四位。
号码不存在的话输出 “My memory appeared deviation”

样例输入 Copy
1235 2400
样例输出 Copy
1235

【分析】

本题是一个简单的循环题,从x 循环到 y,然后拆分千位,百位,十位,个位出来四个数字,需要注意的是不足四位数的时候要前补0的(毕竟手机号要11位啊),比如 1 其实是0001 分离的四位数字是0,0,0,1,而且输出的时候也要前补0,不然就凑不出来一个正常的手机号

#include<stdio.h>
int  shoujihaoma(int n)/*该函数的功能是判断一个数,其个,十,百,千位是否相等*/
{
    int a,b,c,d;
    a=n%10;
    b=n/10%10;
    c=n/100%10;
    d=n/1000;
    if(a!=b&&a!=c&&a!=d&&b!=c&&b!=d&&c!=d)
        return 1;/*互不相等返回1*/
    else
        return 0;/*否则返回0*/
}
int main()
{
    int x,y;
    scanf("%d%d",&x,&y);
    int flag;
    for(int i=x;i<=y;i++)
    {
        if(shoujihaoma(i)==1)
        {
            printf("%04d\n",i);/*确保输出的是四位数*/
            flag=1;break;
        }
        else
           flag=0;
    }
    if(flag==0)
        printf("My memory appeared deviation\n");
    return 0;
}

【补充】
%-md代表数据以十进制整数形式输出,宽度占m列,数据不足m列的右补空格,超过m列的情况下将实际位数输出
%md代表数据以十进制整数形式输出,宽度占m列,数据不足m列的左补空格,超过m列的情况下将实际位数输出

明天讲解C语言的格式化输出与输入,关注我!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值