目录
一、总述
二、3_7_数字拆分
三、3_8_位数对调
四、3_10_同构数
五、4_3_回文数
六、4_4_进制转换一
一、总述
把数的每一位拆出来主要用的是:x%10 和 x/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); }

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