C语言数组学习的困惑,望各位大神解答

夜鸣 2019-08-21 10:15:23
写一个程序要求能输出重复的数字,不知道哪里出了问题,输出的结果一直是一堆零,求指点,下面是所写程序:


#include<stdio.h>
int main(void)
{
int digit_seen[10] = { 0 }, repeated_digit[10] = { 0 };
int digit,i=0,j=0;
long n;
printf("Enter a number: ");
scanf_s("%ld", &n);
while (n > 0) {
digit = n % 10;
digit_seen[digit] = digit;
if (digit_seen[digit] == digit)
{
repeated_digit[j] = digit;
j++ ;
}
n /=10;
}

if (j > 0)
{
printf("Repeated digit\n");
for (i = 0; i <= j; i++)
{
printf(" %d", repeated_digit[j]);
}
}
else
printf("No repeated digit\n");
return 0;
}
...全文
77 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2019-08-22
  • 打赏
  • 举报
回复
#include<stdio.h>
int main(void)
{
int digit_seen[10] = { 0 };//, repeated_digit[10] = { 0 };
int digit,i=0, flag = 0;//j=0;
long n;
printf("Enter a number: ");
//scanf_s("%ld", &n);
scanf("%ld", &n);
while (n > 0) {
digit_seen[n % 10]++;
n /= 10;
/*
digit = n % 10;
digit_seen[digit] = digit;
if (digit_seen[digit] == digit)
{
repeated_digit[j] = digit;
j++ ;
}
n /=10;
*/
}

for (i = 0; i < 10; i++)
if (digit_seen[i] > 1) {
if (flag == 0)
printf("Repeated digit\n");
printf("%d ", i);
flag = 1;
}
if (flag == 0)
printf("No repeated digit\n");
else
putchar(10);

/*
if (j > 0)
{
printf("Repeated digit\n");
for (i = 0; i <= j; i++)
{
printf(" %d", repeated_digit[j]);
}
}
else
printf("No repeated digit\n");
*/
return 0;
}

供参考
一个数组就可以完成了!
636f6c696e 2019-08-22
  • 打赏
  • 举报
回复
1. 你的算法不对,if循环永远成立 2. 最后输出的时候应该是printf(" %d", repeated_digit[i]);

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧