【问题标题】:Checking is one number is the part of the other number检查是一个数字是另一个数字的一​​部分
【发布时间】:2021-01-17 21:25:05
【问题描述】:

任务是检查一个数字是否是另一个数字的一​​部分(输入:1035 35(YES)1035 53(NO)。为什么这种方法对(1,0)不起作用。有什么错误?

#include <stdio.h>

int nwn(unsigned int a, unsigned int b) {
       unsigned base = 1;
       while (base <= b) base *= 10;

       while (a >= b) {
           if (a % base == b) return 1;
           a /= 10;
       }

       return 0;
}

int main(void) {
      unsigned a, b;
      scanf("%d %d", &a,&b);
      printf("%d", nwn(a,b));
}

【问题讨论】:

  • 使用调试器并逐行执行。在运行时检查流和变量值。这是亲自了解程序在做什么的最佳方式。
  • 这能回答你的问题吗? Check if one number is contained in other number
  • 要测试的第一个基数是 10,对应 1 位而不是 1。

标签: c numbers


【解决方案1】:

我假设您已经测试了更多案例。但是,如果只是 b=0 的情况引起了麻烦,那么只需为其添加一个特殊情况。毕竟,快速浏览一下您的算法让我有理由相信零可能是一个棘手的边缘情况。

int contains_zero(unsigned int a) {
    while(a>0) {
        if(a%10 == 0) return 1;
        a /= 10;
    }
    return 0;
}

int nwm(unsigned int a, unsigned int b) {
    if(b == 0) return contains_zero(a);

    // The rest of your code
}

【讨论】:

    猜你喜欢
    • 2013-03-16
    • 2017-01-09
    • 2016-04-14
    • 1970-01-01
    • 2011-09-27
    • 2012-10-08
    • 2022-01-17
    • 2017-09-23
    • 1970-01-01
    相关资源
    最近更新 更多