/*给一个不多于5位的正整数,要求:
1.求出它是几位数
2.分别输出每一位数字
3.按逆序输出各位数字,例如原数为321,应输出123*/
#include <stdio.h>
#include <math.h>
int main(){
int a,i=0,b,j,c,d=0;
printf("请输入数字:\n");
scanf("%d",&a);
b = a;
while(b/10 != 0){//求出它是几位数
i++;//在循环中与i+=1一样的功能
b/=10;
}
printf("该数字是%d位数\n",i+1);//最后一位跳出循环所以需要+1
printf("分别输出每一位数字:\n");//分别输出每一位数字
b = a;
j = i+1;
for(i=1;i<=j;i++){
printf("%d\n",b%10);
b = b/10;
}
printf("输出逆序:\n");
b = a;
for(i=1;i<=j;i++){
c = b%10;
b = b/10;
d = d*10+c;
}
printf("%d",d);
}
谭浩强C程序设计(第四版)p113第9题
复习:
1.取整与取余
说明:
可以写出函数块,这样更简洁
/*给一个不多于5位的正整数,要求:
1.求出它是几位数
2.分别输出每一位数字
3.按逆序输出各位数字,例如原数为321,应输出123*/
#include <stdio.h>
#include <math.h>
int weishu(int b){//求几位数
int i;
while(b/10 != 0){
i++;
b/=10;
}
return i+1;
}
int everyone(int b,int i){//求每一位
int j;
j = i;
for(i=1;i<=j;i++){
printf("%d\n",b%10);
b = b/10;
}
}
int nixu(int b,int i){//逆序
int c,j,d;
j = i;
for(i=1;i<=j;i++){
c = b%10;
b = b/10;
d = d*10+c;
}
printf("%d",d);
}
int main(){
int a,i;
printf("请输入数字:\n");
scanf("%d",&a);
i = weishu(a);
printf("该数字是%d位数\n",i);
printf("分别输出每一位数字:\n");
everyone(a,i);
printf("输出逆序:\n");
nixu(a,i);
}