我的函数应该获取一个非负整数,并返回该数字有多少位,例如对于数字 563,函数返回 3。 对于 0 将返回 1。
*我是c语言新手,所以它对我来说仍然很困惑。 谢谢。
这是我的代码:
#include <stdio.h>
int numOfDigits(int n); //Declartion
void main()
{
int num1, counter = 0, newNum;
printf("Enter A Number: ");
scanf("%d", &num1);
}
int numOfDigits(int n1)
{
int counter = 0;
if (n1 == 0)
return 1;
while (n1 > 0) {
counter++;
n1 /= 10;
}
return counter;
}
我应该写什么才能使程序运行?
最佳答案
只需调用您创建的数字计数函数并将其返回值分配给一个变量,然后使用 printf()
函数打印该变量的值;或者,在 printf()
中调用数字计数函数作为参数:
#include <stdio.h>
int numOfDigits(int n);
int main(void)
{
int num1;
int counter = 0;
printf("Enter A Number: ");
scanf("%d", &num1);
counter = numOfDigits(num1);
printf("number of digits: %d\n", counter);
//printf("number of digits: %d\n", numOfDigits(num1)); alternate method
}
int numOfDigits(int n1)
{
int counter = 0;
if (n1 == 0)
return 1;
while (n1 > 0) {
counter++;
n1 /= 10;
}
return counter;
}
一些注意事项:
- 既然您提到需要获取非负数,请考虑使用
unsigned int
类型,并更改scanf()
和内部的格式说明符printf()
调用"%u"
。 - 函数
main
应声明为int main(void)
或int main(int argc, char **argv)
关于c - 如何调用计算整数中位数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48833996/