我收到Output: 1.
我应该计算一个数字出现在整数中的次数,例如,对于数字1222345
和n = 2
应该出现{{1} }次。
3
答案 0 :(得分:4)
您在代码中有未定义的行为。该函数应该返回int
并且它没有。
解决方案是在其他功能的末尾添加return i
。这将给你正确的结果。在countOccurrences()
函数
...
if(k==n)
{
i++;
}
}
return i;
}
我正在跳过错误检查的讨论以及所有这些。正如chux
提到的n<=0
一样,您可能希望添加一种不同的处理方式,但您没有添加它。 Atleast会考虑这些情况,并在您需要的任何输入上添加错误消息。
有些角落案例
n=0,m=0
。n
或m
的负值。答案 1 :(得分:1)
countOccurrences 函数返回
int countOccurrences (int n, int num) {
int i, k;
i = 0;
while (num! = 0)
{
k = num% 10;
num = num / 10;
if (k == n)
{
i ++;
}
}
return i; }
答案 2 :(得分:1)
正如其他人所指出的,您的代码存在重要问题。
这是一个你可能感兴趣的递归解决方案:
int countOccurrences(int n, int num)
{
int count = ((num % 10) == n);
return (num < 10) ? count : count + countOccurrences(n, num / 10);
}
关于您的代码的一般性评论很少:
printf()
时,您应该#include <stdio.h>
。main()
应该返回int
。k = num % 10;
比k=num%10;
更具可读性。 (除了品味之外,还有更多的代码格式;没有空格,你会创建充满字符的区域,这些区域对于我们的视觉系统来说更难解析。)