我的函数应该得到一个非负整数,并返回数字中有多少位数,例如数字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;
}
我应该写什么才能使程序运作?
答案 0 :(得分:2)
只需调用您所做的数字计数功能,并将其返回值分配给变量,然后使用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)