注意:我对C编程还很陌生,所以我还不知道所有的东西。
因此,我正在为我的编程类做这项作业,我必须编写一个递归函数count_digits((,它计算字符串中的所有数字。我编写了这个程序并将其编译,但当我输入一个数字时,它总是给我相同的答案。
这就是我的代码:
#include <stdio.h>
int count_digits(int num)
{
static int count=0;
if(num>0)
{
count++;
count_digits(num/10);
}
else
{
return count;
}
}
int main()
{
int number;
int count=0;
printf("Enter any number:");
scanf("%d",&number);
count=count_digits(number);
printf("nTotal digits in [%d] are: %dn",number,count);
return 0;
}
如果num
大于零,则非void函数不返回任何值。编译器应该警告您不要返回值。修复:
return count_digits(num/10);
需要考虑以下几点:如果在程序中多次调用函数count_digit((,会发生什么?如果您输入0、10、100作为数字,该怎么办?
也许您应该重新考虑在这里使用静态变量。同样为了调试,在count_digit((中插入一些printfs(或使用调试器(来检查函数的行为。