解题思路:主要实现三个功能:
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 人评分
【绝对值排序】 (C++代码)浏览:720 |
WU-图形输出 (C++代码)浏览:836 |
WU-C语言程序设计教程(第三版)课后习题11.11 (C++代码)(想学链表的可以看看)浏览:1464 |
三角形 (C++代码)递推浏览:825 |
C语言程序设计教程(第三版)课后习题10.3 (C语言代码)浏览:565 |
C语言程序设计教程(第三版)课后习题6.1 (C语言代码)浏览:582 |
字符逆序 (C语言代码)浏览:506 |
Hello, world! (C语言代码)浏览:916 |
Quadratic Equation (C语言代码)浏览:1034 |
C语言程序设计教程(第三版)课后习题8.6 (C语言代码)浏览:595 |