1692 - C语言程序设计教程(第三版)课后习题5.7
给出一个不多于5位的整数,要求 1、求出它是几位数 2、分别输出每一位数字 3、按逆序输出各位数字,例如原数为321,应输出123
Input
一个不大于5位的数字
Output
三行 第一行 位数 第二行 用空格分开的每个数字,注意最后一个数字后没有空格 第三行 按逆序输出这个数
Examples
Input
12345
Output
5 1 2 3 4 5 54321
Hint
哈姆雷特:数字还是字符?这是一个问题!
Solution C
#include <stdio.h> #include <stdlib.h> #include <math.h> int main(int argc, char *argv[]) { int n; int a[5],i=0; int sum=0l,m; int count=0; scanf("%d",&m); while(m) { a[i]=m%10; m=m/10; i++; } printf("%d\n",i); for(n=i-1;n>0;n--) { printf("%d ",a[n]); } printf("%d",a[0]); printf("\n"); for(n=0;n<i;n++) { printf("%d",a[n]); } printf("\n"); return 0; }
Solution C++
#include<stdio.h> #include<math.h> int num(int a) { int i=1; while(a/10>0) { a=a/10; i++; } return i; } void yui(int a,int i) { int b; do{ b=a/(int)pow(10,i-1); printf("%d",b); if(i>1) printf(" "); a-=b*(int)pow(10,i-1); }while(i=i-1); printf("\n"); } void ghj(int a,int i) { i=i-1; do{ printf("%d",a%10); a/=10; if(i==0) printf("\n"); }while(i--); } int main() { int a,i=1; scanf("%d",&a); i=num(a); printf("%d\n",i); yui(a,i); ghj(a,i); return 0; }
Hint
哈姆雷特:数字还是字符?这是一个问题!