Консультация № 193930
18.11.2018, 00:47
0.00 руб.
0 3 1
Здравствуйте! Прошу помощи в следующем вопросе: дано числа а и b. Нужно вывести на экран числа, которые входят как в запись первого, так и запись второго числа. Моя версия (неверно работает):
[code lang=csharp]#include <conio.h>
#include <stdio.h>
int main()
{
int a, b, c, d;
printf("a = ");
scanf_s("%d", &a);
printf("b = ");
scanf_s("%d", &b);
while (a > 0)
{
d = a % 10;
a = a / 10;
c = b;
while (c > 0)
{
if (d = c % 10)
{
printf("%d\n", d);
break;
}
c = c / 10;
}
}
printf("\n");
_getch();
}[/code]

Обсуждение

давно
Советник
400484
472
19.11.2018, 09:53
общий
19.11.2018, 09:56
Добрый день,
у Вас ошибка начинающего программиста
Вы вместо сравнения присваиваете значение
Код:
if (d = c % 10)

В СИ if от чисел 1,2,3,4... возвращает всегда истину, лож возвращается только от 0. Поэтому все время у вас будет истина при значении 1 и больше. Будьте внимательнее.

После исправления получилось так
Код:

#include <conio.h>
#include <stdio.h>
int main()
{
int a, b, c, d;
printf("a = ");
scanf_s("%d", &a);
printf("b = ");
scanf_s("%d", &b);
while (a > 0)
{
d = a % 10;
a = a / 10;
c = b;
while (c > 0)
{
if (d == c % 10)
{
printf("%d\n", d);
break;
}
c = c / 10;
}
}
printf("\n");
_getch();
}


Результат работы
Код:

a = 122
b = 32
2
2
давно
Старший Модератор
17042
808
22.11.2018, 06:21
общий
Адресаты:
Оформите ответ?
Об авторе:
We have but faith: we cannot know;
For knowledge is of things we see;
And yet we trust it comes from thee,
A beam in darkness: let it grow.
-----
https://www.linkedin.com/in/andreynkuznetsov
https://www.researchgate.net/profile/Andrey_Kuznetsov11
http://www.researcherid.com/rid/K-8824-2014
давно
Советник
400484
472
22.11.2018, 09:30
общий
это ответ
Здравствуйте, Olga!
У Вас ошибка начинающего программиста.
Вы вместо сравнения присваиваете значение.

Код:
if (d = c % 10)


В СИ if от чисел 1,2,3,4... возвращает всегда истину, лож возвращается только от 0. Поэтому все время у вас будет истина при значении 1 и больше. Будьте внимательнее.

После исправления получилось так
Код:

#include <conio.h>
#include <stdio.h>
int main()
{
int a, b, c, d;
printf("a = ");
scanf_s("%d", &a);
printf("b = ");
scanf_s("%d", &b);
while (a > 0)
{
d = a % 10;
a = a / 10;
c = b;
while (c > 0)
{
if (d == c % 10)
{
printf("%d\n", d);
break;
}
c = c / 10;
}
}
printf("\n");
_getch();
}


Результат работы
Код:

a = 122
b = 32
2
2
Форма ответа