原题链接:回文数(二)
< ---
思路:1.进制转换。2.模块化处理 3.三个子程序-将输入数字和逆序加和并 进制处理---将数
字按正序和逆序进行排序储存数组---将两个数组对比,
相同则STEP加1
参考代码:
nt add(int x,int y) //加和的进制转换 {
int a[1000];
int b[1000];
int i,j,k;
int zhuan,zhuan1,sum,sumadd,sum1,place,sumadd1;
zhuan=x;
sum=0; sumadd=0; sum1=0; place=0; sumadd1=0;
while(zhuan!=0) //输入数字的位数
{
zhuan=zhuan/10;
sum+=1;
}
zhuan1=x;
for(i=sum-1;i>=0;i--) //将位数输入数组
{
a[i]=zhuan1%10;
zhuan1=(zhuan1-zhuan1%10)/10;
}
for(i=0;i<sum;i++)
{
sum1+=a[i]*pow(10,i);
}
sumadd=sum1+x;
while(sumadd>0)
{
b[place]=sumadd%y;
sumadd=sumadd/y;
place+=1;
}
for(i=0;i<place;i++)
{
sumadd1+=b[i]*pow(10,i);
}
//进制转换
return sumadd1;}< ---
int place_z(int x) //正向储存 {
int a[100];
int place=0;
while(x>0)
{
a[place]=x%10;
x=x/10;
place++;
}
return a[100];}int place_f(int x) //反向储存 {
int b[100];
int place=0,i;
int y=x;
while(y>0)
{
y=y/10;
place++;
}
for(i=place-1;i>=0;i--)
{
b[i]=x%10;
x=x/10;
}
return b[100];}int lenght(int x){
int place;
while(x>0)
{
x=x/10;
place++;
}
return place;}< ---
int contrast(int x,int y) {
int a[100];
int b[100];
int place,i;
int ww=0;
a[100]=place_z(x);
b[100]=place_f(x);
place=lenght(x);
for(i=0;i<place;i++)
{
if(a[i]!=b[i])
{
x=add(x,y);
a[100]=place_z(x);
b[100]=place_f(x);
ww+=1;
}
else
break;
}
printf("%d",ww);
return 0;0.0分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复