Proc31. Описать функцию IsPalindrom($$K$$), возвращающую True, если целый параметр $$K$$ ($$> 0$$) является палиндромом (то есть его запись читается одинаково слева направо и справа налево), и False в противном случае. С ее помощью найти количество палиндромов в наборе из 10 целых положительных чисел. При описании функции можно использовать функции DigitCount и DigitN из заданий Proc29 и Proc30.
Решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
#include <stdio.h> int digitcount(int k){ int i=1; for(;k>=10;i++) k/=10; return i; } int digitn(int k, int n){ int i=1; for(i=1; i<=n-1; i++) k/=10; if (k!=0) return k%10; else return -1; } int ispalindrom(int k){ int len,i; len=digitcount(k); for(i=1; i<=len; i++) if (digitn(k,i)!=digitn(k,len-i+1)) return 0; return 1; } int main(void) { int i, k,count=0; for (i=1; i<=10; ++i){ printf("K:"); scanf("%i", &k); count+=ispalindrom(k); } printf("Count: %i\n",count); return 0; } |
Другие задачи из раздела Proc можно посмотреть здесь.
Комментарии:
Комментарии 1