在之前学过的C语言基础部分中,我会求两个数中较大者,会写判断一个数是否为素数的代码,我觉得在这些代码中应该注意的就是for循环和while循环还有do-while仅有的区别,do-while语句至少要先执行一次循环体,所以循环变量就要重新考虑,循环中的循环条件要正确,防止越界,这点可以联系到后来学到的数组中,如果int arr[10],那输出数组中数字的时候就要注意下标从零开始,一定要小于数组的长度。
ifelse语句较为简单,上手快,但是要做的事较为复杂的时候就不适用了。
n%10,表示对十进制数取余,也就是说,例如这个数n为24136,那么24136%10=6,就是得到了这个数的各位数字:6;n/10,表示用n整除10,n的类型为整型,整数除以整数得到的数还是个整数,这里给n整除以10以后,会缩小位数,例如这个数n为24136,那么24136/10=2413.丢掉了它的个位数。
应用:(1)求一个数为几位数(2)顺序输出这个数(3)逆序输出这个数
题目分析:(1)如24136为五位数,那么就需要一个数来保存输出的位数,可定义为count;(2)如24136顺序输出为24136,也可以调用第一题的count,用来保存各个位的数字;(3)可以先得到各个位的数然后再从后向前输出。
程序:
#include<stdio.h>
int GetFigures(int n)//求数n是几位数.
{
int count=0;//定义一个次数,用来保存循环的次数
while(n!=0)
{
count++;//次数从0开始+1;
n/=10;//整除丢掉个位,如:1234/10=123,此时丢掉4
}
return count;//必须要有返回值.
}
void PrintfReverse(int n)//逆序输出
{
if(n<0)
{
printf("-");//判断给出的n是否为负,如果是负数,先打印负号再顺序输出
n=-n;
}
do
{
printf("%d ",n%10);//取余可以得到这个数的尾数,do语句先执行一次输出这个数的尾数
n/=10;//丢弃个数可得到剩下的数.
}while(n!=0);//判断这个数整除10以后是否不等于0,不等于就继续循环直到跳出.
printf("\n");
}
void PrintOrder(int n)//顺序输出
{
if(n<0)
{
printf("-");//判断给出的n是否为负,如果是负数,先打印负号再顺序输出
n=-n;
}
int a=GetFigures(n);//调用求位数的函数,把它的值赋给a
int power=1;
for(int i=0;i<a-1;i++)
{
power*=10;
}
do
{
printf("%d ",n/power);//如果这个数是五位数,n/power用来求出它的首位数字
n%=power;//去掉它的首位数
power/=10;//power退一位
}while(n!=0);
printf("\n");
}
int main()
{
PrintfReverse(23456);
PrintOrder(23456);
printf("%d\n",GetFigures(23456));
PrintfReverse(-658732);
PrintOrder(-658732);
printf("%d\n",GetFigures(-658732));
return 0;
}
运行结果为:
本文介绍如何使用C语言编程实现求解一个数的位数,并顺序及逆序输出该数。通过GetFigures函数计算位数,PrintfReverse函数逆序输出,PrintOrder函数顺序输出。代码中涉及ifelse、do-while循环和for循环,以及对负数处理。
1777

被折叠的 条评论
为什么被折叠?



