给出一个不多于5位的整数,要求 1、求出它是几位数 2、分别输出每一位数字 3、按逆序输出各位数字,例如原数为321,应输出123

题目描述

输入

一个不大于5位的数字

输出

三行 第一行 位数 第二行 用空格分开的每个数字,注意最后一个数字后没有空格 第三行 按逆序输出这个数

样例输入

12345

样例输出

5
1 2 3 4 5
54321程序:#include<stdio.h>#include<math.h>int main(){    int a,c,d,count=0,t;    scanf("%d",&a);    d=c=a;    while(c!=0)    {        count++;        t=c%10;        c=c/10;    }    printf("%d\n",count);    while(a!=0)    {        t=a/(int)pow(10,(count-1));        printf("%d",t);           a=a%(int)pow(10,(count-1));            if(a%10!=0)        //判断是否是最后 一位数字,若是,则后无空格           printf(" ");             else           printf("");        count--;    }    printf("\n");    while(d!=0){        t=d%10;        printf("%d",t);        d=d/10;    }    printf("\n");    return 0; } 
时间: 2024-10-25 06:26:05

给出一个不多于5位的整数,要求 1、求出它是几位数 2、分别输出每一位数字 3、按逆序输出各位数字,例如原数为321,应输出123的相关文章

已知w是一个大于10但不大于1000000的无符号整数,若w是n(n≥2)位的整数,则求出w的后n-1位的数。

描述 已知w是一个大于10但不大于1000000的无符号整数,若w是n(n≥2)位的整数,则求出w的后n-1位的数. 输入 第一行为M,表示测试数据组数.接下来M行,每行包含一个测试数据. 输出 输出M行,每行为对应行的n-1位数(忽略前缀0).如果除了最高位外,其余位都为0,则输出0. 样例输入 4 1023 5923 923 1000 样例输出 23 923 23 0我的程序: #include<iostream>#include<vector>#include<cmat

编程题:已知一个一维数组a[10]中有10个数,求出第m个数到第n个数的和。其中m、n由键盘输入。

#include<stdio.h> int sum(int *q,int n) { int i,s=0; for(i=0;i<n;i++,q++) s+=*q; return s; } void main() { int n,m,a[10]={1,2,3,4,5,6,7,8,9,10}; int *p; printf("Please input m and n(m<n<10):\n"); scanf("%d,%d",&m,&am

【C语言】将二进制数逆序输出。比如6为000...0110,逆序后为0110...000

//将二进制数逆序输出.比如6为000...0110,逆序后为0110...000 #include <stdio.h> unsigned int reverse_bit(int num) { int i; int bit; unsigned new_num = 0; for (i = 0; i < 32; i++) { bit = num & 1; //取出最后一位 new_num <<= 1; //新数左移 new_num =new_num | bit; //把刚

从原理上理解如何由震源机制一个节面的解:strike,dip,rake可以求出另一个节面的解

首先,需要回到最原始的地震矩的表达式: 已知strike,dip,rake 根据strike和dip可以求出v,根据strike,dip,rake,可以求出u. 把求出来的v和u互换,相当于原来的位错矢量变成法向量,而法向量知道了,面也就知道了,strike和dip就知道了. dip可以求出这一项很容易理解,至于strike 是因为strike是北方向顺时针旋转到断层面与水平面的交线的角度,很容易知道,一旦面确定了,这个线也是确定的,可以求出来. 另一方面,原来的法向量变成了位错矢量 ,rake

有一个3*4的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号

#include "stdio.h" void main() { int a[3][4]={{65,48,78,90},{78,92,45,66},{77,44,66,55}}; int i,j,max=a[0][0],row,colum; for(i=0;i<3;i++) { for(j=0;j<4;j++) { if(a[i][j]>max) { max=a[i][j]; row=i; colum=j; } } } printf("max:%d\nrow

codevs:1462 素数和:给定2个整数a,b 求出它们之间(不含a,b)所有质数的和。

#include<iostream>#include<cstdio>#include<cmath>using namespace std;int main(){ int flag=0,a,b,tot=0; scanf("%d%d",&a,&b); if(a>b)swap(a,b); for(int i=a+1;i<b;++i) { flag=1; for(int j=2;j<=sqrt(i);++j) { if(i%

More Effective C++----(12)理解&quot;抛出一个异常&quot;与&quot;传递一个参数&quot;或&quot;调用一个虚函数&quot;间的差异

Item M12:理解"抛出一个异常"与"传递一个参数"或"调用一个虚函数"间的差异 从语法上看,在函数里声明参数与在catch子句中声明参数几乎没有什么差别: class Widget { ... }; //一个类,具体是什么类 // 在这里并不重要 void f1(Widget w); // 一些函数,其参数分别为 void f2(Widget& w); // Widget, Widget&,或 void f3(const W

关于给定栈求出所有合法栈的思考

前几天看到一篇关于给定几个元素,给一个出栈的顺序,判断出栈的顺序是否合法,我们也可以通过给定的元素顺序求出所有的合法的出栈顺序,困扰我的问题是如何求出给定元素的所有的排列问题,之前有篇博文也有求三个数的全序列的,但采用的是三个for循环,实在是too young too simple,效率低不说,而且没有一点实用性,总不能几个数几个for循环,这也太傻了(). 对于判断出栈的合法性问题,我先把思想写出来,至于代码实现需要过两天,求所有的合法出栈顺序有两种思路. 方案1:一种是将所有元素的排列求出

XTUOJ ABK(求出A和B的第K大公约数)

Accepted : 21   Submit : 171 Time Limit : 1000 MS   Memory Limit : 65536 KB  题目描述 ABK是一个比A+B还要简单的题目,给出两个整数A,B,求出A和B的第K大公约数. 输入 第一行是一个整数N(N ≤ 10000),表示样例的个数. 以后每行一个样例,为3个整数A,B,K (1≤A,B≤109 , 1≤K≤10) 输出 每行输出一个整数d,表示A,B的第K大公约数 若没有第K大的公约数则输出-1. 思路:先求出a和b