所以我想创建一个代码来查找数字中的数字数量。所以这可能听起来很奇怪,但它的工作原理是这样的。
Input
12893012
Output
1 2 2 1 0 0 0 0 1 1
因此输出意味着在12893012中,有一个0,两个1,两个2,一个3,没有4,没有5,没有6,没有7,一个8和一个9。
#include <stdio.h>
int main()
{
int n,count=0;
printf("Enter an integer: ");
scanf("%d", &n);
while(n!=0)
{
n/=10; /* n=n/10 */
++count;
}
printf("Number of digits: %d",count);
}
我的代码似乎只找到了数字中的位数,有什么想法吗?非常感谢btw。
答案 0 :(得分:6)
把它放在一个数组中并计算。
粗略地说,
int count[10] = {0};
while(n != 0)
{
count[n % 10]++;
n /= 10;
}
打印出结果。
答案 1 :(得分:2)
您继续递增count
,但不检查数字。这只会给你一个数字位数。您需要一个数组,您可以在其中存储每个数字的计数。
int digitCounts[10];
//...
while (n != 0){
digitCounts[n % 10]++;
n /= 10;
}
您可以使用mod
(%
)来简化,因为% 10
会给出最后一位数字。
答案 2 :(得分:2)
创建一个存储数字计数的数组。剩余运算符将为您提供0到9之间的最后一位数。
int digit[10];
//...
while(n!=0)
{
int d = n % 10;
digit[d]++
//...
然后将其打印出来。
答案 3 :(得分:1)
我建议创建一个数组(或10个变量),它们保存数字的数量,然后逐个读取数字并检查它是什么数字。 您可以使用
读取单个数字 scanf(%1d, &variableName)
或
getchar()
功能
答案 4 :(得分:0)
非常感谢@ rohit89,@ this和@ Arc676
这只是输入零(0)时的修正
int count[10] = {0};
if(n){
while(n != 0)
{
count[n % 10]++;
n /= 10;
}
}else
count[0]=1;