题目练习: C语言网.
题目描述
给出一个不多于5位的整数,
要求 1、求出它是几位数
2、分别输出每一位数字
3、按逆序输出各位数字,例如原数为321,应输出123
输入
一个不大于5位的数字
输出
三行
第一行 位数
第二行 用空格分开的每个数字,注意最后一个数字后没有空格
第三行 按逆序输出这个数
样例输入
12345
样例输出
5
1 2 3 4 5
54321
运行代码:
正常思路我们都是先循环确定位数、在循环正序输出每一个数字、在循环倒序输出该数字,要注意第二行的最后一个数字后没有空格。
我想为什么不在一个循环里面得到一个数组,位数,逆序后的数呢,于是我将其整合在一个while循环中,代码如下:
#include <stdio.h>
int main(void){
int n,i=0,j,x[5],sum=0;
scanf("%d",&n);
while(n!=0){
x[i]=n%10;
sum=sum*10+x[i];
n=n/10;
i++;
}
printf("%d\n",i);
for(j=i-1;j>0;j--){
printf("%d ",x[j]);
}
printf("%d\n",x[j]);
printf("%d\n",sum);
return 0;
}
也可采用字符数组处理,代码如下:
#include <stdio.h>
#include <string.h>
int main(void){
char n[10];
int len,i;
scanf("%s",&n);
len=strlen(n);
printf("%d\n",len);
for(i=0;i<len-1;i++){
printf("%c ",n[i]);
}
printf("%c\n",n[len-1]);
for(i=len-1;i>=0;i--){
printf("%c ",n[i]);
}
return 0;
}