早教吧作业答案频道 -->其他-->
题目如下,急需答案,写的好加分哦题目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的所有正整数验证这一猜想。
题目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");
}
为了满足大数的输入,程序中采取的都是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");
}
看了 题目如下,急需答案,写的好加...的网友还看了以下:
1.你对黄河有那些了解?2.黄河是我国第几大河?3.黄河发源于那座山?4黄河注入什么海?5.黄河全 2020-05-13 …
有一货轮,自天津港航行至厦门港沿途见过的海域和海峡分别是()A.渤海→渤海海峡→黄海→东海→台湾海 2020-05-16 …
海南航天发射场建成后,将火箭从天津运往海南文昌发射,走海运经过的海域依次是()A.渤海、黄海、东海 2020-05-16 …
我国目前使用的有大连、大沽、黄海、废黄河口、吴淞、珠江口等基面,要求统一的基面是1985年确定的黄海 2020-05-28 …
题目如下,急需答案,写的好加分哦题目5:“上海自来水来自海上,黄山落叶松叶落山黄”,“客上天然居, 2020-06-18 …
我国东部濒临的海洋自北向南依次是()A.渤海、黄海、东海、南海B.黄海、东海、南海、渤海C.南海、 2020-07-01 …
(2010•承德)我国东部濒临的海洋自北向南依次是()A.渤海、黄海、东海、南海B.黄海、南海、东 2020-07-01 …
(2008•东莞)我国所濒临的海洋,从南向北依次为()A.南海东海黄海渤海B.黄海渤海东海南海C.渤 2020-11-12 …
从北到南,我国濒临的近海依次是()A.渤海、黄海、东海和南海B.黄海、渤海、东海和南海C.南海、黄海 2020-11-28 …
2014年5月20日,中俄“海上联合~2014”军事演习在上海正式拉开帷幕.如他为4球公转示意他,据 2021-01-09 …