虽然不知道这个数的的位数,但是我们可以通过求余取模的方式来计算。例如你输入的数字是123,先对这个数求对10的余数,即123%10=3,这个数的个位数已经对我们没用了可以直接去掉123/10=12,123后一位的逆序为3;再求余数12%10=2,再去掉末位数12/10=1,后两位数的逆序为3*10+2=32;再求余数1%10=1,再去掉末尾数1/10=0,后三位的末位数为32*10+1=321。我们可以通过去掉末位数是否等于0来判断是否需要再求余数。
上述描述的编程如下:
#include
int main ()
{
int n, m, t; //变量n保存输入的10进制整数,m保存输出的整数,t为中间变量
scanf("%d",&n);
m = 0;
while(n != 0) //n的值等于0说明输入数的所有位置已经考虑完
{
t = n % 10; //可以得到n的最后一位数
n = n / 10; //将n的最后一位数去掉
m = m*10 + t; //得到当前的输出数值
}
m = m * 2; //求逆序后数值的两倍
printf("%d\n",m);
return 0;
}
为了简单点 这里以小于100的数为例
#include
main()
{
int x,x1,x2;
scanf("%d",&x);
x1=x/10;
x2=x%10;
x=(x2*10+x1)*2;
printf("%d",x);
getch();
}
不用数组也行,位数分出,反序乘2输入!!
两种做法,
一种是用数组做,只要下标逆序输出就行了。
一种是楼下的知友写的,当成一个整数来做。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include
void
main(void)
{
int
n,a[20],
i=
0;
printf("请输入个数:");
scanf("%d",&n);
for(i=0;i<=n;i++)
scanf("%d",
a[i]);
for
(
i=
n;
i
>=
0;
i--)
printf("%d
",
a[i]);
printf("\n");
}