早教吧 育儿知识 作业答案 考试题库 百科 知识分享

题目如下,急需答案,写的好加分哦题目5:“上海自来水来自海上,黄山落叶松叶落山黄”,“客上天然居,居然天上客”,“人过大佛寺,寺佛大请编写程序判断输入的字符串是否回文,

题目详情
题目如下,急需答案,写的好加分哦
题目5:“上海自来水来自海上,黄山落叶松叶落山黄”,“客上天然居,居然天上客”,“人过大佛寺,寺佛大请编写程序判断输入的字符串是否回文,要求:(1)用循环和递归各编写一个程序;(2)如果不是回文,就从两端向中间检查,发现不同后,在后端加入一个与前端相同的字符,使得到一个回文字符串。(3)类似,正读和反读都相同的数字就是回文数,例如,23532就是一个回文数。请编写程序,输入两个正整数n1 和 n2,,n1 < n2,找出n1 和 n2之间的所有回文数。(4)如果正整数m是一个回文数 ,m2和m3也是,m就是一个三重回文数,例如,11、112=121、113=1331都是回文数,因此11是三重回文数。请编写程序找出所有小于10000的三重回文数。(5)有人说,从任意一个数出发,用它加上把它倒过来重排得到的数,如此继续,必能得到回文数。例如139,139+931=1070,1070+701=1771。请对小于100的所有正整数验证这一猜想。
▼优质解答
答案和解析
/*
为了满足大数的输入,程序中采取的都是long long 类型,以确保数字不会溢出
希望对你有用,代码已经测试过了 ,最后的system("pause"); 可以去掉,这是由于
不同编译器的需要而采取的,在gcc上,如果没有pause,就不识别"pause"这个命令!!
*/
#include
#include

long long isHuiwen(long long numInput)//判断是否是回文数
{
static long long temp;
long long i=numInput;
for(temp=0;i>0;i/=10) //按位将整数倒过来,产生反序数
{
temp=temp*10 + i%10;
}
if(temp==numInput)
return 1;
else
return temp;
}
long long creatHuiwen(long long queue,long long reverse)//判断不是回文数,重新构造回文数
{
static long long reversetmp; //前端,高位往下
static long long queuetmp; //后端,个位往上
long long i=reverse;
long long j=queue;
for(queuetmp=0,reversetmp=0;i>0;i/=10,j/=10) //按位将整数倒过来,产生反序数
{
reversetmp=reversetmp*10 + i%10;
queuetmp=queuetmp*10 + j%10;
if(reversetmp!=queuetmp)break;
}
// printf("********creat**************\n");
for(queuetmp=reversetmp/10;reversetmp>0;reversetmp/=10)
{
queuetmp=queuetmp*10 + reversetmp%10;
// printf("queue值为{%lld}\n",queuetmp);
}
return queuetmp;
}
int seachHuiwenbetween(long long begin,long long end)//寻找begin与end之间的所有回文数
{
while(begin<=end)
{
if(isHuiwen(begin)==1)
printf("%lld ",begin);
begin++;
}
printf("\n");
return 1;
}
int tripleHuiwen(long long num)//判断是否为三重回文数
{
long long square=num*num;
long long cube=square*num;
//判断是不是一重的
if(isHuiwen(num)!=1)
return 0;
//判断是不是二重的
if(isHuiwen(square)!=1)
return 0;
//判断是不是三重的
if(isHuiwen(cube)!=1)
return 0;
return 1;
}
int seachTripleHuiwen(int num)//判断小于num的所有三重回文数
{
long i;
for(i=11;i {
if(tripleHuiwen(i)==1)
{
printf("%d ",i);
}
}
printf("\n");
return 1;
}
int makeHuiwen(long long num)//验证构造回文数的思想
{
long long temp,i;
while(isHuiwen(num)!=1)
{
i=num;
for(temp=0;num>0;num/=10) //按位将整数倒过来,产生反序数
{
temp=temp*10 + num%10;
}
num=i+temp;
}
printf("the result %lld is a huiwenshu\n",num);
return 1;
}
int main()
{
long long num,reverse,begin,end,randomNum;
printf("第一题\n");
printf("input the number: \n");
scanf("%lld",&num);
reverse=isHuiwen(num);
if(reverse==1)
printf("the number %lld is huiwenshu\n",num);
else
{
printf("the number %lld is not a huiwenshu\n",num);
printf("第二题\n");
printf("creat a huiwenshu from %lld \n",num);
printf("the creat number is %lld \n",creatHuiwen(num,reverse));
}
printf("第三题\n");
printf("input the number begin:\n");
while(1)
{
scanf("%lld",&begin);
if (begin>10) break;
printf("input the number must be biger than 10:\n");
}
printf("input the number end:\n");
while(1)
{
scanf("%lld",&end);
if (end>begin) break;
printf("input the number must be biger than %lld:\n",begin);
}
seachHuiwenbetween(begin,end);
printf("第四题\n");
seachTripleHuiwen(10000);
printf("第五题\n");
printf("input a random number\n");
scanf("%lld",&randomNum);
makeHuiwen(randomNum);
system("pause");
}
看了 题目如下,急需答案,写的好加...的网友还看了以下:

豌豆的黄色子叶和绿色子叶是一对相对性状,现有两黄色豌豆杂交,子一代出现绿色豌豆,下面描述中不正确的  2020-05-17 …

豌豆的黄色子叶和绿色子叶是一对相对性状,现有两黄色豌豆杂交,子一代出现绿色豌豆,下面描述中不正确的  2020-06-16 …

“袅袅兮秋风,洞庭波兮木叶下”,“美女妖且闲,采桑歧路间;柔条纷冉冉,落叶何翩翩”,“静夜四无邻,  2020-06-23 …

通过纸层析法分离叶绿体色素,结果在滤纸条上出现四条色素带,自上而下依次为()A.胡萝卜素、叶黄素、  2020-06-26 …

通过纸层析法分离叶绿体色素,结果在滤纸条上出现四条色素带,自上而下依次为()A.胡萝卜素、叶黄素、  2020-06-26 …

韭黄的叶子呈黄色是因为()A.韭黄体内无叶绿体B.韭黄体内含有大量的叶黄素C.遮光条件下没有形成叶  2020-06-29 …

豌豆子叶黄色(Y)与绿色(y)为一对等位基因控制,现将子叶黄色豌豆与子叶绿色豌豆杂交,F1为黄色.  2020-07-25 …

绿叶中色素的提取和分离实验结果中,在滤纸条上相邻距离最远的两条色素带是()A.叶绿素a和叶绿素bB.  2020-11-08 …

阅读儿歌,按要求做题。秋风吹,树枝摇,红叶黄叶往下掉。红树叶,黄树叶,片片飞来像蝴蝶。1.儿歌共有句  2020-12-17 …

青山绿水,白草红叶黄花写作特点读诗句,谈谈对诗句的理解,这些诗句在写作上有什么特点?(1)青山绿水,  2021-02-05 …