【发布时间】: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));
}
【问题讨论】:
-
使用调试器并逐行执行。在运行时检查流和变量值。这是亲自了解程序在做什么的最佳方式。
-
要测试的第一个基数是 10,对应 1 位而不是 1。