问题链接:UVA10018 Reverse and Add。基础训练题,用C语言编写程序。
题意:输入测试用例数n,然后输入n个正整数,加上其逆序的整数,如果和不是回文数则对和求逆序整数与和相加,直到变为回文整数为止,最少做一次加法,最后输出加法次数和回文数。
程序中,计算逆序整数的功能,封装到函数reverse(),主程序逻辑变得简单。
使用函数封装功能,使得程序功能逻辑局部化,程序更加简洁易懂。
AC的C语言程序如下:
/* UVA10018 Reverse and Add */
#include <stdio.h>
unsigned int reverse(unsigned int n)
{
int rev = 0;
while(n){
rev = rev * 10 + n % 10;
n /= 10;
}
return rev;
}
int main(void)
{
int n, count;
unsigned p, rev;
scanf("%d", &n);
while(n--) {
scanf("%d", &p);
rev = reverse(p);
p += rev;
count = 1;
rev = reverse(p);
while(p != rev) {
p += rev;
count++;
rev = reverse(p);
}
printf("%d %u\n", count, p);
}
return 0;
}