此代码尝试计算输入数字中的数字。
如果输入的数字是06584
,则此代码的输出将为4
,不包括零。如何将5
作为输出(因此计算零)?
#include<stdio.h>
void main()
{
int n,c=0,d;
printf("Enter no\n");
scanf("%d",&n);
while(n!=0)
{
d=n%10;
c++;
n=n/10;
}
printf("No of digits=>%d\n",c);
}
答案 0 :(得分:3)
如何计算数字中的数字,包括前导零?
要计算输入的位数,包括前导0位,请记录数字前后的扫描偏移量。此方法将符号字符报告为数字,但不计算前导空格。
使用"%n"
记录到目前为止扫描的字符数。 @BLUEPIXY
#include<stdio.h>
int main() {
int begin;
int after = 0;
int number;
printf("Enter number\n");
fflush(stdout);
// +--- consumes leading white-space
// | +- record number of characters scanned
scanf(" %n%d%n", &begin, &number, &after);
if (after > 0) {
printf("No of digits: %d\n", after - begin);
printf("Value read : %d\n", number);
} else {
puts("Invalid input");
}
}
输出
Enter number
000123
No of digits: 6
Value read : 123
答案 1 :(得分:0)
#include<stdio.h>
#include <string.h>
int main()
{
char n[101];
printf("Enter no\n");
scanf("%100s",n);
printf("No of digits=>%d\n",strlen(n));
}