Проблема здесь в том, что я хотел бы, чтобы код правильно произносил число (1-е, 2-е, 3-е, 21-е, 22-е, 23-е и т. Д.), Оставил в покое проблему с 11,12,13 (это можно легко исправить) , но почему этот простой модуль по модулю [(i + 1% 10) == 1/2/3] работает только с 1, 2 и 3, а не после, так что он производит «th» из else {}? Это должно быть прямо, но если вы возьмете любое число, например, расположение 22 массива (22 + 1% 10) явно 3! поэтому он должен соответствовать условию (обратите внимание, +1 соответствует 0 индексации)
for (int i = 0; i < arrLenght; i++)
{
if (array[i] == key)
{
if ((i+1 % 10) == 1)
{
printf("bravo! %i is the %ist number of the array! it's address is %p\n", key, i+1, &array[i]);
}
else if ((i+1 % 10) == 2)
{
printf("bravo! %i is the %ind number of the array! it's address is %p\n", key, i+1, &array[i]);
}
else if ((i+1 % 10) == 3)
{
printf("bravo! %i is the %ird number of the array! it's address is %p\n", key, i+1, &array[i]);
}
else
{
printf("bravo! %i is the %ith number of the array! it's address is %p\n", key, i+1, &array[i]);
}
return 1;
}
}