偏振光


私信TA

用户名:3170704229

访问量:839

签 名:

等  级
排  名 50615
经  验 282
参赛次数 0
文章发表 1
年  龄 0
在职情况 学生
学  校 安徽工程大学
专  业

  自我简介:

解题思路:主要实现三个功能:

1位数:利用一个数不停的除以10来实现,每一次循环i(位数)加一。

2正序排列:要得到一个数x的第一个数字z,先要不断除以10,每次循环i(位数)加一,到数值小于等于9时停止循环,同时每次x要赋值给新的x(去掉首数字的x)x=x-z*(10的i次方),这样在操作,得到首数字。

3逆序输出:不断的求一个数x除以10的余数,同时x=x/10生成新的x

基本适用于所有位数(不止五位)

注意事项:主要是二功能中的双重循环,内循环求x的位数i(实际上是位数减一)和首数字,外循环求新的x,但每次i的值要重新记为0;pow函数是double类型,要注意转换为int。


参考代码:

#include<stdio.h>
#include<math.h>

int weishu(int x);//函数声明
int nishu(int x);
int zhengxu(int x);


int weishu(int x)//求一个数的位数
{
 int y=1;
 while(x/10)//当x/10等于0时终止循环
 {
  x=x/10;
  y++;
 }
 printf("%d\n",y);
 return 0;
}


int zhengxu(int x)//求一个数的正序排列
{
 int z,i=0;
 while(x>0)
 {
  z=x;
  while(z>9)
  {
   z=z/10;//求首数字
   i++;
  }
  printf("%d\t",z);
  x=x-z*(int)(pow(10,i));//类型转换
  i=0;//重置位数
 }
 return 0;

}


int nishu(int x)//求一个数的逆序
{
 int z;
 while(x>0)
 {
  z=x%10;
  x=x/10;
  printf("%d",z);
 }
 return 0;
}


main()
{
 int a;
 scanf("%d",&a);
 weishu(a);//函数调用
 zhengxu(a);
 printf("\n");
 nishu(a);//函数调用
 printf("\n");
 return 0; 
}


 

0.0分

0 人评分

  评论区

  • «
  • »