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

/*给一个不多于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);  
}
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值