临近期末,诚邀您和我一起复习这道经典的题目
从键盘输入一个不多于4位的整数,要求用函数实现
1.求出它是几位数
2.顺序打印出每一位的数字(高位到低位)
3.按逆序打印每一位的数字(低位到高位)
话不多说,上代码
#include <stdio.h>
int main()
{
int num, j = 0;
int arr[4];
int i;
printf("请输入一个不大于4位的整数: ");
scanf("%d", &num);
if (num < 0 || num > 9999)
{
printf("输入的数字不在0到9999之间。\n");
return 1;
}//程序要求输入一个不多于4位的整数,int类型中可以理解为数字在0~9999之间。return 1表示输出错误信息,并且返回1表示程序出错
do
{
arr[j++] = num % 10;//num%10得到num的最后一位数字,然后储存到arr[j]中,每一次循环后j+1,++在j后面表示先使用再增加1
num /= 10;//num = num / 10,等于去掉最后一位的数字,可以自己举例计算验证
} while (num > 0);//num>0的时候继续进行循环,因为是int类型,个位数 / 10 等于0,除到最后一位的时候循环结束
详解do-while循环:
//假设输入1234
//第一轮循环,arr[0] = 1234 % 10; arr[0]=4
// num = 1234 / 10 = 123
// 循环结束后j++,j=1
//第二轮循环,arr[1] = 123 % 10; arr[1]=3
// num = 123 /10 = 12
// 循环结束后j++,j=2
//第三轮循环,arr[2] = 12 % 10; arr[2]=2
// num = 12 / 10 = 1
// 循环结束后j++,j=3
//第四轮循环,arr[3] = 1 % 10; arr[3]=1;
// num = 1 / 10 = 0
// 循环结束后j++,j=4
printf("位数: %d\n", j);//此时j就成为了 位数
printf("各位上的数字: ");
for (i = j - 1; i >= 0; i--) //顺序输出各位数,从最高位置开始打印到最低位
{
printf("%d ", arr[i]);
}
printf("\n");
printf("逆向输出各位上的数字: ");//逆序输出各位,从最低为打印到最高位
for (i = 0; i < j; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
上述代码中详细讲解了该题目中的重难点 do-while循环和“++”操作符的使用实例
希望对你的学习有帮助!
祝您期末稳过,早日成为编程大牛