目录
一、总述
把数的每一位拆出来主要用的是:x%10 和 x/10 和 x%10*pow(10, i)【伴随i++】。
二、3_7_数字拆分
已知一个正整数n,n的范围是1—999999999。你的任务是把这个整数分解为单个数字,然后从左至右依次打印出每一个数字。例如将整数“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的二进制数,二进制数的长度不大于10。你的任务是将其转换为十进制数并打印出来。
提示:用除法和求余运算每次从右到左获取二进制整数的各位数字。在十进制数值系统中,最右边的数字是个位,个位的左边依次是十位、百位、千位等等。与之类似,在二进制数值系统中,最右边的数字是1位,左边的数字依次为2位、4位、8位等等。十进制数234可分解为4*100+3*101+2*102,二进制数1101可分解为1*20+0*21+1*22+1*23,它等价于十进制数1+0+4+8,即13。
输入格式:
为一个只包含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);
}
今天的文章123组合成最小数值_排列组合c的计算方法分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/88382.html