代码已详细注释,对应函数分别为:nixu1():数组逆序输出,nixu2():数组逆序赋值给变量输出逆序数,nixu3()整数输出逆序数,nixu4()float浮点型输出逆序数
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
void nixu1(int wt){
//赋值给数组,并用数组逐个输出
int wnx[4] = {0},i = 0,nx = 0,base = 1;
printf("方法1:");
while(wt > 0)
{
wnx[i] = wt % 10;
printf("%d",wnx[i]);
i++;
wt = wt /10;
}
printf("\n");
}
int nixu2(int wt){
//赋值数组,并将逆序值赋给变量nx传回
int wnx[4] = {0},i = 0,nx = 0,base = 1;
while(wt > 0)
{
wnx[i] = wt % 10;
i++;
wt = wt /10;
}
//此时i=4; 错误理解:i = 3;
//i--; for第一个可不写
for(i=3;i>=0;i--){
nx = nx + wnx[i] * base;
base = base * 10;
}
return nx;
}
int nixu3(int wt){
//在整数范围内进行逆序(ok)
int nx,nx1,nx2,nx3,nx4;
nx1 = wt / 1000; //计算千位
nx2 = wt / 100 % 10; //除了千位可以除后得对应数,其余低位数均需除完取余
nx3 = wt / 10 % 10; //计算十位,需取余
nx4 = wt % 10; //计算个位,需取余
nx = nx4*1000 + nx3*100 + nx2*10 + nx1*1;
}
int nixu4(int wt){
//用浮点型进行逆序,(int)0.4321*1000 后返回
float nx,temp,base=10.0;
temp = 0.0;
while (wt>0){
temp = temp + (wt % 10)/base;
base = base * 10.0;
wt = wt /10;
}
nx=temp*10000.0;
// printf("\n%g\n",nx);
//%g占位符,直接略去后面多余的0 、021前面的0也会去掉!!超好用,若小数点后面都是0,则省去强制转换
return nx;
}
int main(){
int nxs1,nxs2,nxs3,ss=1234;
nixu1(ss);//采用nixu1()函数进行逆序赋值输出
nxs1 = nixu2(ss);//采用nixu2()函数,赋值给nxs1
nxs2 = nixu3(ss);//采用nixu3()函数,赋值给nxs2
nxs3 = nixu4(ss);//采用nixu4()函数,赋值给nxs3
printf("方法2:%d\n",nxs1);
printf("方法3:%d\n",nxs2);
printf("方法4:%d\n",nxs3);
}