A-A+

阅读以下说明和C程序代码 将程序补充完整。[说明] 下面C程序代码的功能是:对于输入的一个正

2022-08-06 00:53:41 问答库 阅读 174 次

问题详情

阅读以下说明和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[i]!=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("%idn", n);
system("pause"); return 0;请帮忙给出正确答案和分析,谢谢!

参考答案

正确答案:m%10或其他等价形式k-i-1!isPalm(n)或isPalm(n)!=1或isPalm(n)==0an+a
m%10或其他等价形式k-i-1!isPalm(n),或isPalm(n)!=1或isPalm(n)==0an+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”。

考点:程序代码,功能