m0_74289836 2023-04-01 17:08 采纳率: 85.7%
浏览 38
已结题

关于#C语言#的问题,如何解决?

L1-033 出生年
分数 15
作者 陈越
单位 浙江大学

以上是新浪微博中一奇葩贴:“我出生于1988年,直到25岁才遇到4个数字都不相同的年份。”也就是说,直到2013年才达到“4个数字都不相同”的要求。本题请你根据要求,自动填充“我出生于y年,直到x岁才遇到n个数字都不相同的年份”这句话。

输入格式:
输入在一行中给出出生年份y和目标年份中不同数字的个数n,其中y在[1, 3000]之间,n可以是2、或3、或4。注意不足4位的年份要在前面补零,例如公元1年被认为是0001年,有2个不同的数字0和1。

输出格式:
根据输入,输出x和能达到要求的年份。数字间以1个空格分隔,行首尾不得有多余空格。年份要按4位输出。注意:所谓“n个数字都不相同”是指不同的数字正好是n个。如“2013”被视为满足“4位数字都不同”的条件,但不被视为满足2位或3位数字不同的条件。

输入样例1:
1988 4
输出样例1:
25 2013
输入样例2:
1 2
输出样例2:
0 0001

为什么我的代码不是满分,麻烦帮我指出一下问题在哪

img

#include <stdio.h>
int main()
{
    int y,n,count=0,x,a[10]={0},m;
    int i;
        
    scanf("%d%d",&y,&n);
    
    while(1)
    {
        int t;
        t=y;
        for(i=0;i<4;i++)
        {
            a[t%10]++;
            t=t/10; 
        }

    
         m=0;
        for(i=0;i<10;i++)
        {
            if(a[i]==1)
             m++;
        }
        
        if(m+1==n)
        {
             printf("%d %04d",count,y);
             break;
        }
         
         
        if(m==4)
        {
             printf("%d %04d",count,y);
             break;
        }
        
        for(i=0;i<10;i++)
         a[i]=0;
         
        y++;
        count++;
    }
    
    return 0;
}


  • 写回答

4条回答 默认 最新

  • ksgpjhqf 2023-04-01 21:53
    关注

    23行的条件改为a[i]>=1;
    27行的条件改为m==n;
    34行到38行删掉。
    修改前执行结果:

    img


    修改后执行结果:

    img


    修改后完整代码:

    #include <stdio.h>
    int main() {
        int y, n, count = 0, a[10] = {0}, i, m, t;
        scanf("%d%d", &y, &n);
        while (1) {
            t = y;
            for (i = 0; i < 4; i++) {
                a[t % 10]++;
                t = t / 10;
            }
            m = 0;
            for (i = 0; i < 10; i++) {
                if (a[i] >= 1)
                    m++;
            }
            if (m == n) {
                printf("%d %04d", count, y);
                break;
            }
            for (i = 0; i < 10; i++)
                a[i] = 0;
            y++;
            count++;
        }
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 4月11日
  • 已采纳回答 4月3日
  • 创建了问题 4月1日

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。