题库 题库

【简答题】

试题二(共 15 分)
阅读以下说明和 C 程序代码,将应填入 (n) 处的字句写在答题纸的对应栏内。
[说明]
下面 C 程序代码的功能是:对于输入的一个正整数 n(100≤n<1000),先判断其是
否是回文数(正读反读都一样的数)。若不是,则将 n 与其反序数相加,再判断得到的
和数是否为回文数,若还不是,再将该和数与其反序数相加并进行判断,依此类推,直
到得到一个回文数为止。例如,278 不是回文数,其反序数为 872,相加后得到的 1150
还不是回文数,再将 1150 与其反序数 511 相加,得到的 1661 是回文数。
函数 int isPalm(long m)的功能是:将正整数 m 的各位数字取出存入数组中,然后判
断其是否为回文数。若 m 是回文数则返回 1,否则返回 0。
[C 程序代码]
#include <stdio.h>
#include <stdlib.h>
int isPalm(long m)
{  /*判断 m 是否为回文数*/
int i = 0, k = 0;
char str[32];
while (m > 0) {    /*从个位数开始逐个取出 m 的各位数字并存入字符数组 str*/
str[k++] =  (1)  + '0';
m = m / 10;
}
for(i = 0; i < k/2; i++)  /*判断 str 中的 k 个数字字符序列是否是回文*/
if ( str[i] != str[  (2)  ] )    return 0;
return 1;
}
int main( )
{
long n, a, t;
printf("input a positive integer:");    scanf("%ld",&n);
if (n < 100 || n > =1000)    return -1 ;
while(  (3)  ) {            /*n 不是回文数时执行循环*/
printf("%ld -> ", n);
for(a = 0, t = n; t > 0; ) {    /*计算 n 的反序数并存入 a*/
a =  (4)  *10 + t % 10;      t = t / 10;
} /*end of for*/
n =  (5)  ;          /*与反序数求和*/
} /*end of while*/
printf("%ld\n",n);
system("pause");        return 0;
}

参考答案

   

相关试题