【发布时间】:2014-04-24 03:57:12
【问题描述】:
这对我来说有点令人困惑,但我必须看看 i 在 x 中出现了多少次。 因此,如果有人为 i 输入 3,x 为 4294967295,则应该说 0 次,但如果有人为 i 输入 9,为 x 输入 4294967295,则应该说 3 次。
这就是我所拥有的,但输出显示 0 和 9,所以它不起作用..
int main(int argc, char** argv) {
unsigned int i;
scanf("%u", &i);
unsigned int x;
scanf("%u", &x);
int output = 0;
int t = 0;
while (t < 10) {
x /= 10;
if (i == x) {
output++;
}
t++;
}
printf("%d", output);
}
【问题讨论】:
-
你正在使用
t似乎未初始化。 -
output也未初始化。 -
为什么要将输入转换为无符号整数?将字符串视为字符串并检查每个字符会更简单。
-
在你的号码中,
x永远不会是 9,只有 429、42949 和 429496729。检查x % 10 == i,但 之前除以 10。你的循环条件可以然后只是while (x),您可以删除t。 -
您正在使用的是字符串的属性,而不是数字。我建议你使用字符串函数:)