今天想了一个题目:
键盘输入一个unsigned int n ;
分别以字符的方式存储n的万、千、百、十、个位 uint n;
char ch[20]={'0'};
char *p=ch;
int num=0;
scanf("%d",&n); //从键盘接收到数字传给int型的变量
while(n/10!=0) //位数的分离,n/10的意义:如果只剩下个位就不会进行while循环了
{
*(p+num)=n%10+'0'; //n%10能得到最低位的数字,然后加上字符'0'得到数字的ascii码
n=n/10; //清掉最低位
num++; //与char型指针一起组成需要传递到ch数组的位置的具体地址
}
*(p+num)=n%10+'0';
printf("%s\n",ch); //此时打印出的字符是与实际位相反的 打印出的是 个 十 百
int i;
char c;
for(i=0;i<(num+1)/2;i++) //将个十百 转换顺序为 百十个的顺序
{
c=*(p+i); //把数组前面的数据提取
*(p+i)=*(p+num-i); //把数组后的值赋给前面的值
*(p+num-i)=c; //把数组前面的值赋给后面
}
printf("%s\n",ch);
}