如果我重复8次,你设法检查我的程序。我还要打印出已存储在阵列中的重复8次。
#include <stdio.h>
#include <stdbool.h>
int main(void)
{
bool digit_seen[10] = {false};
int digit=0;
long n;
printf("Enter number: ");
scanf("%ld", &n);
while (n>0)
{
digit = n % 10;
if (digit_seen[digit])
{
break;
}
digit_seen[digit] = true;
n/=10;
}
if (n>0 && digit ==8)
{
printf("Repeated 8's");
}
else
{
printf("No 8's found");
}
return 0;
}
答案 0 :(得分:1)
如果我了解您的问题,您想知道您的号码中出现的数量是多少。像88有2 8s。如果是这样,我不明白为什么你使用布尔数组。首先,你需要一个柜台。其次,您需要知道每个数字的数字是否为8,如果该数字为8,则递增此计数器。这是一个例子:
#include <stdio.h>
#include <stdbool.h>
int main(void)
{
int digit=0;
long n;
int counter = 0;
printf("Enter number: ");
scanf("%ld", &n);
while (n>0)
{
digit = n % 10;
if(digit == 8)
{
counter++;
}
n/=10;
}
if (counter > 0)
{
printf("Repeated 8's");
}
else
{
printf("No 8's found");
}
return 0;
}
在此示例中,计数器的编号将出现8s。只需将它显示在printf中即可完成。
编辑:这是使用数组的解决方案:
#include <stdio.h>
int main(void)
{
int digit = 0;
long n;
int arrayNumber[10] = {0};
printf("Enter number: ");
scanf("%ld", &n);
while (n>0)
{
digit = n % 10;
arrayNumber[digit]++;
n /= 10;
}
if (arrayNumber[8] > 0)
{
printf("Repeated 8's");
}
else
{
printf("No 8's found");
}
return 0;
}
这样,您就会知道整数中出现0到9之间的每个数字。我还指出你需要定义什么是重复的数字。如果发生至少2次,则需要arrayNumber[8] > 0
更改arrayNumber[8] > 1