C语言的基础问题 Very Easy !
我只是一个对C语言还没入门的新手,现有一小问题,向大家请教,望不吝赐教!!! 我看见如下的一个“弱智”程序——“输出一个小于1000的整数的个、十、百位上的数字”,就是看不懂为什么要“+48”,不知是何意义。但我在 TC 上运行了一下,此程序的确是正确的,请帮我解释一下!越详细越好!Thank you very much ! 程序如下: #include "stdio.h" #include "stdlib.h" main() { int n; char i,j,k; printf("input a number n(0<n<1000):\n"); scanf("%d",&n); if(n<=0||n>=1000) {printf("error");} k=n%10+48; j=(n%100)/10+48; i=n/100+48; printf("%c %c %c\n",i,j,k); } 上面的几位讲得都没有错呢,不过我想,因为你是初学者,他们这样说,你可能还不是很清楚,所以我想讲得更详细一点,希望我的表达能力可以做到.
在c语言里,整型变量和字符型变量是可以相互转换的.在这题里,因为你定义的变量 i,j,k是字符型类型,所以在下面的这个式子k=n%10+48就要把左边(整型)转换成k(char--字符型类型),当n%10算出一个值时,很容易知道是个int型数值,可是k是char型数值,要从int--->char,就应该加上48,为什么呢?因为根据标准ASCII字符集,
ASCII 字符
048 0
049 1
050 2
.......
那么比如说你这题,int n=101;int k=101%10=1;char k=1+48=49=1(字符),以上是比较详细的解释,希望你能理解.

该回答在2006年3月4日
i,j,k被定义为字符变量,输出是按ASCII码的序列,0-9的ASCII序号为48-57,这里将百,十个位的数字值+48就转为其ASCII序号才能正确输出.
如果把它改成printf("%d %d %d\n",i,j,k);就不用加48了.
建议多看看c请言输入输出这方面的东西,非常基本.
i,j,k被定义为字符变量,输出是按ASCII码的序列,0-9的ASCII序号为48-57,这里将百,十个位的数字值+48就转为其ASCII序号才能正确输出.
参与评论- 相关内容
- 最近更新
- ·工资计算程序
- ·如何检测内存泄露
- ·CECT手机保密码
- ·e770和e770v 哪个好用? 用哪个的..
- ·读卡器插在电脑上~电脑打不开
- ·6670
- ·手机PC套件是个啥东东~~
- ·为何用手机上网会提示链接不存在..
- ·MOTO L7 菜鸟级问题
- ·L7,1G内存卡的问题
添加到百度搜藏