我不确定具体该怎么做。如果有人有一些专家建议,那将非常有帮助!
#define SIZE ((int) (sizeof(digit_count)/sizeof(digit_count[0]))
#define N count
int main()
{
int i, num, count, digit_count[N] = {0};
printf("Enter a number: ");
scanf("%d", &num);
while (num != 0)
{
digit_count[num % 10]++;
num /= 10;
++count;
}
for (i = 0; i < SIZE); i++)
printf("%d occured %d times\n", i, digit_count[i]);
return 0;
}
最佳答案
使用malloc
:
int main()
{
int base = 10;
int num, *digit_count;
printf("Enter a number: ");
scanf("%d", &num);
digit_count = malloc (base * sizeof (int));
if (!digit_count)
return -1;
while (num != 0)
{
digit_count[num % base]++;
num /= base;
}
for (i = 0; i < base); i++)
printf("%d occurred %d times\n", i, digit_count[i]);
free(digit_count);
return 0;
}
由于总是有十位数字,因此没有理由在此处使用动态内存分配,但如果需要分配的条目数在运行时发生变化,则此处使用的相同模式也同样有效。您可以在运行时更改base
,并且程序仍然可以工作。
关于c - 如何将数组定义为数字字符串的长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28715831/