早教吧作业答案频道 -->其他-->
题目如下,急需答案,写的好加分哦题目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");
}
看了 题目如下,急需答案,写的好加...的网友还看了以下:
阅读俄罗斯西伯利亚部分地区图,根据材料回答下列问题.材料一叶尼塞河以西的西西伯利亚平原是世界上最大 2020-05-01 …
七上生物练习题(3道)1.关于蒸腾作用对植物生活的直接意义,不正确的说法是( )A降低叶表面的温度 2020-05-16 …
植物叶子的特征桂花叶 君子兰叶 豌豆叶 大豆叶写出以上四片叶子具有的相同特征 (至少写2个)写出以 2020-05-17 …
“通!”又一棵大树被砍倒了,一片树叶掉在了地上.小树叶看见妈妈倒下了,心里别说有多难过,却又无能为 2020-06-04 …
横“S”征见于下列哪一疾病:A.右上叶中心型肺癌B.右上叶大叶性肺炎C.右上叶浸润性肺结核D.右中叶 2020-06-07 …
茶叶是中国对世界的重要贡献,并对人类历史发展产生了重大影响。主题茶叶与民族企业“张一元”大事年表( 2020-06-08 …
照样子将句子写具体(题目没写完)例:风真大.眨眼间,大叶杨被刮得东倒西歪,地上干草、落叶被刮得到处 2020-06-18 …
大自然的春天的树上,长出嫩嫩的芽瓣;夏天的树上,挂满肥肥的叶片;秋天的树上,树叶涂满鲜红和金黄;冬 2020-07-04 …
叶绿素a和b的比例问题在色素滤纸条上,叶绿素b的面积最大,不应该是含量最高么,但是书上又说叶绿素a和 2020-12-02 …
一种生活在炎热干燥环境中的植物,可能具有()A、深绿色的大叶,叶两面有大量气孔B、深绿色的大叶,而只 2021-01-08 …