对数字每一位的处理:3_7_数字拆分 & 3_8_位数对调 & 3_10_同构数 & 4_3_回文数 & 4_4_进制转换一

对数字每一位的处理:3_7_数字拆分 & 3_8_位数对调 & 3_10_同构数 & 4_3_回文数 & 4_4_进制转换一目录 一 总述 二 3 7 数字拆分 三 3 8 位数对调 四 3 10 同构数 五 4 3 回文数 六 4 4 进制转换一 一 总述 把数的每一位拆出来 主要用的是 x 10 和 x 10 和 x 10 pow 10 i 伴随 i 二 3 7 数字拆分

大家好,我是讯享网,很高兴认识大家。

目录

一、总述

二、3_7_数字拆分

三、3_8_位数对调

四、3_10_同构数

五、4_3_回文数

六、4_4_进制转换一


一、总述

数的每一位拆出来主要用的是:x%10x/10 和 x%10*pow(10, i)【伴随i++】

二、3_7_数字拆分

已知一个正整数n,n的范围是1—。你的任务是把这个整数分解为单个数字,然后从左至右依次打印出每一个数字。例如将整数“12345”分解,得到“1 2 3 4 5”。

输入格式:

只有一个正整数。测试用例保证合法。

输出格式:

只有一行,为输入整数的拆分结果,相邻两个数字之间有一个空格,最后一个数字后是换行符。例如12345的拆分结果为:1 2 3 4 5。

输入样例:

12345 

讯享网

输出样例:

讯享网1 2 3 4 5

#include<stdio.h> int main(){ int i=0,a[10]; long long x; scanf("%lld",&x); while(x>0){ a[i]=x%10; i++; x=x/10; } i--; while(i>=0){ printf("%d",a[i]); if(i>0){ printf(" "); } i--; } }

 !!printf("%d",a[i]);printf("%d",&a[i]); 是两码事

讯享网package pta1; import java.util.Scanner; public class PTA1 { public static void main(String[] args) { Scanner in=new Scanner(System.in); String A=in.nextLine(); char[] B=A.toCharArray(); for(int i=0;i<B.length;i++) { System.out.printf("%c",B[i]); if(i!=B.length) { System.out.printf(" "); } } } } 

三、3_8_位数对调

 已知一个正整数n(可以用int存储),你的任务是将n的最低位与最高位上的数字对调,次低位与次高位上的数字对调,以此类推,直到中间位。最后得到一个新整数并将新的数字输出。需要注意的是:如果当最低位数字与最高位数字对调后,数字的长度变短(也就是最低位为0),则不能对这个数进行位数对调处理。


讯享网

输入格式:

只有一个正整数,即n。

输出格式:

当n可以进行数字对调时,例如n=123,你应输出“321”;当n不可以进数字对调时,例如n=980,你应输出“The number cannot be changed.”。

输入样例:

1365 

输出样例:

讯享网5631

#include<stdio.h> int main(){ int n; scanf("%d",&n); if(n%10==0){ printf("The number cannot be changed."); return 0; } while(n>0){ printf("%d",n%10); n=n/10; } }

四、3_10_同构数

 所谓“同构数”是指这样的数,它出现在它的平方数的右边,例如5的平方数是25, 25的平方数是625,所以5和25都是同构数。你的任务是判断整数x是否是同构数。若是同构数,输出“Yes”,否则输出“No”。x的取值范围是(1<=x<=10000),如果输入的x不在允许范围内,则输出错误提示信息“x out of range”。

输入格式:

只有一个整数。测试用例保证所有输入可以用int存储。

输出格式:

只有一行,为判断结果。

输入样例:

讯享网20000 

输出样例:

20000 out of range

讯享网#include<stdio.h> #include<math.h> int main() { int x,x0, n = 0, i = 0; scanf("%d", &x); if (x < 1 || x>10000) { printf("%d out of range", x); return 0; } x0 = x * x ; x = x * x; while (x > 0) { n = n + x % 10 * pow(10, i); if (n * n == x0) { printf("Yes"); return 0; } x = x / 10; i++; } printf("No"); } 

五、4_3_回文数

回文是指正读和反读都一样的数或文本段。例如,12321、55555、45554、11611都是回文数。输入一个长度不超过10位的整数n,判断它是否是回文数。

输入格式:

只有一个整数n,即待判断的数字。测试用例保证n可以用int存储。

输出格式:

当n为回文数时输出“Yes”,否则输出“No”。

输入样例:

12321 

输出样例:

讯享网Yes

#include<stdio.h> int main(){ int n,n0,x=0; scanf("%d",&n); n0=n; while(n>0){ x=x*10+n%10; n=n/10; } if(n0==x){ printf("Yes"); } else{ printf("No"); } }

六、4_4_进制转换一

输入格式:

为一个只包含0和1的整数n(长度不超过10位),代表二进制数。

输出格式:

为转换得到的十进制数。

输入样例:

讯享网11111 

输出样例:

31
讯享网#include<stdio.h> #include<math.h> int main(){ int x,i=0,y=0; scanf("%d",&x); while(x>0){ y=y+x%10*pow(2,i); i++; x=x/10; } printf("%d",y); }

 

小讯
上一篇 2025-03-29 10:00
下一篇 2025-02-25 22:48

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/129313.html