输入一个几位数字,输出各个位数、统计共有几位数、输出逆序数
用数组来做会更方便
代码如下
include<stdio.h>
int main()
{
int num, count,tmp,tmp1;
int a[5];
printf("请输入不多于五位的正整数:\n");
scanf_s("%d",&num);
tmp = num;
for (count = 0; count < 5; count++)
{
a[count] = 0;
}
for (count=0;num;count++)
{
a[count] = num % 10;
num /= 10;
}
printf("%d是%d位数\n",tmp,count);
tmp1 = count;
printf("各个位数是:");
for (count--; count>=0; count--)
{
printf("\t%d",a[count]);
}
printf("\n逆序数是:");
for (count=0;count<=tmp1-1;count++)
{
printf("%d",a[count]);
}
return 0;
}
使用数组的话,首先我们要有一个变量来记数,输入数字我们必须要有一个变量,可能的话我们还需要若干个变量来暂时保存变量里的数值,不要忘了我们还要对数组进行定义和初始化,好了,就暂时先定义那么多变量,不够的话我们可以回过头来补充。
int num, count,tmp;
定义好变量后,我们要进行一些互动、输入数字和数组初始化。
int a[5];
printf("请输入不多于五位的正整数:\n");
scanf_s("%d",&num);
tmp = num;
for (count = 0; count < 5; count++)
{
a[count] = 0;
}
对数组进行初始化后,我们要使用这个数组,具体是把这个数字的每位数字放到数组里面每个元素那里去,对这个数用10进行取余可以得出最末尾位的数字并用数组保存,接着用10进行整除就可以把末尾的位数消掉,要一直保存进数组的每个元素里就要用到循环
for (count=0;num;count++)
{
a[count] = num % 10;
num /= 10;
}
要输出各个位数的话,就要从下标最大的数组元素开始输出(因为读进数组里的是从那个数的个位数开始读),输出要注意题目的格式;如若要输出逆序数就要从下标为0开始。要注意数组是从下标为0开始的,要多考虑下标和数量的关系。善用变量保存前面会变化,而后面可能用到变化前的值的变量里的数值。