C 练习实例29
题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
程序分析:学会分解出每一位数,如下解释。
程序源代码:
// Created by www.runoob.com on 15/11/9.
// Copyright © 2015年 素材8网教程. All rights reserved.
//
#include <stdio.h>
int main( )
{
long a,b,c,d,e,x;
printf("请输入 5 位数字:");
scanf("%ld",&x);
a=x/10000; /*分解出万位*/
b=x%10000/1000; /*分解出千位*/
c=x%1000/100; /*分解出百位*/
d=x%100/10; /*分解出十位*/
e=x%10; /*分解出个位*/
if (a!=0){
printf("为 5 位数,逆序为: %ld %ld %ld %ld %ld\n",e,d,c,b,a);
} else if(b!=0) {
printf("为 4 位数,逆序为: %ld %ld %ld %ld\n",e,d,c,b);
} else if(c!=0) {
printf("为 3 位数,逆序为:%ld %ld %ld\n",e,d,c);
} else if(d!=0) {
printf("为 2 位数,逆序为: %ld %ld\n",e,d);
} else if(e!=0) {
printf("为 1 位数,逆序为:%ld\n",e);
}
}
以上实例输出结果为:
请输入 5 位数字:12345 为 5 位数,逆序为: 5 4 3 2 1
C 语言经典100例
叮咚
1269359648@qq.com
其他解法:
#include <stdio.h> int main() { int n; printf("请输入大于 10 的数字:"); scanf("%d",&n); int x[1000]; int i=0; int j=0; while(n!=0) { x[i]=n%10; n=n/10; i++; } int z=i; printf("该数字为 %d 位数",z); printf("\n逆序为:"); for(j=0;j<z;j++) { printf("%d ",x[j]); } }以上实例输出结果为:
叮咚
1269359648@qq.com
火云
1031798583@qq.com
参考解法:
#include <stdio.h> #include<string.h> void Reverse_Output( int n); static char str[5]; int main() { printf("请输入你的整数:"); scanf("%s",str); printf("这是一个 %lu 位数。\n",strlen (str)); printf("逆序为:"); Reverse_Output(strlen (str)); return 0; } void Reverse_Output(int n) { while(n>0) { printf("%c ",str[--n]); } }火云
1031798583@qq.com