基于数字处理的问题总结

数字处理是c语言中极为重要的一个板块,有关于数字处理常见的有以下几个问题:
1、统计输入的数字n是几位数;
2、顺序输出每一位数字;
3、逆序输出每一位数字;
则针对于以上问题我们常见的解法有:丢弃高位或者丢弃低位,得到高位或者得到低位,我们用到最多的便是整除与取余。

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

(1)求数字个数需要利用计数器 count 来标记输入的数字的位数,利用循环,输入的数字 n依次 n /= 10 来实现丢弃个位数字(整除结果为整数,若不为整数,则去掉小数部分),每丢弃一位则计数器count++,直到n=0,输出count。
while循环则需要特别注意单独讨论当n=0,输出1。
(2)求输出每一位数字需要先得到高位数字接着丢弃高位;
由第一问我们可得到几位数字;
接着我们用库函数pow来得到除以和取余的数字 int power = (int)pow(10.0,c-1)10的c-1次方,用这个数来得到高位,丢弃高位;
最后我们用一个循坏来输出每一位数字。
(3)逆序输出各位数字需要用 n%10 来得到个位数字并输出,接着用 n/=10 来丢弃个位数字得到下一个n,一直循环直到n=0。

(1)

#include <stdio.h>
int GetFigures(int n)
{
 if(n==0)
 { 
 return 1;
 }
 else
 {
  int count=0; 
  while(n!=0)
  {
   n/=10;
   count++;
  }
  return count;
 }
}
int main()
{
 int a=GetFigures(0);
 printf("%d\n",a);
 return 0;
}
#include <stdio.h>
int GetFigures(int n)
{
 int count = 0;
 do
 {
  count++;
  n /= 10;//n = n /10;.丢掉个位
 }while(n != 0);
 return count;
}
int main()
{
 printf("%d\n",GetFigures(0));
 printf("%d\n",GetFigures(12234));
 return 0;
}

(2)

#include <stdio.h>
#include <math.h>
int GetFigures(int n)
{
 int count = 0;
 do
 {
  count++;
  n /= 10;//n = n /10;.丢掉个位
 }while(n != 0);
 return count;
}
void PrintOrder(int n)
{
 //得到n是几位数字
 int c = GetFigures(n);
 //计算除以和取余的数字
 int power = (int)pow(10.0,c-1); //循环输出每位数字
 do
 {
  printf("%d ",n/power);//输出高位
  n %= power;//丢弃高位 ,n=n%power;
  power /= 10;
 }while(n != 0);
 printf("\n");
}
int main()
{
 PrintOrder(1244);
 return 0;}

(3)

#include <stdio.h>
void PrintReverse(int n)
{
 do
 {
  printf("%d",n%10);//得到个位数字
  n/=10;//丢弃个位
 }while(n!=0);
  printf("\n");
}
int main()
{
 PrintReverse(0);
 PrintReverse(1234);
 return 0;
}
发布了7 篇原创文章 · 获赞 0 · 访问量 154

猜你喜欢

转载自blog.csdn.net/weixin_44915076/article/details/89303739
今日推荐