阅读以下说明和C程序代码,将程序补充完整。 [说明] 下面C程序代码的功能是:对于输入的一个正整数n(100≤n<1000),先判断其是否是回文数(正读反读都一样的数)。若不是,则将n与其反序数相加,再判断得到的和数是否为回文数,若还不是,再将该和数

admin2012-04-11  33

问题 阅读以下说明和C程序代码,将程序补充完整。
[说明]
   下面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)
   {
   int i=0, k=0;
   char str[32];
   while(m>0) {
   str[k++]=  _______  +’0’;
   m=m/10;
   }
   for(i=0; i<k/2; i++)
   if(str!=str   _______   )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(   _______ ) {
   printf("%id->", n);
   for(a=0, t=n; t>0; ){
   a=  _______  *10+t%10; t=t/10;
   n=   _______  ;
   printf("%id\n", n);
   system("pause"); return 0;

选项

答案m%10或其他等价形式 k-i-1 !isPalm(n),或isPalm(n)!=1或isPalm(n)==0 a n+a

解析 函数isPalm(long m)的功能是判断m是否为回文数,其方法是将m的各位数字依次取出并转换为对应的数字字符保存在数组str中,然后再判断str中的字符中序列是否对称。将m的个位数取出可以采用如下公式“m%10”,即对10取余数。所以(1)处应为m%10或其他等价形式。若判断数组str中的字符序列是否对称,即比较str(i)与str(k-1-i)是否相等,所以(2)应为k-1-i。函数isPalm(long m)的功能是判断m是否为回文数,(3)处应该是对它的调用,同时取反,即“!isPalm(n)”。(4)处为“a”,(5)处应该是数n与反序数a相加得到的新数,即“n+a”。
转载请注明原文地址:https://jikaoti.com/ti/6vL7FFFM
0

相关试题推荐
最新回复(0)