您的位置 电脑知识爱好者 >> 编程知识 >> C语言的基础问题 Very Easy !

C语言的基础问题 Very Easy !

电脑知识爱好者互联网本站整理2007-9-24 23:14:14
知识重点:我只是一个对C语言还没入门的新手,现有一小问题,向大家请教,望不吝赐教!!! 我看见如下的一个“弱智”程序——“输出一个小于1000的整数的个、十、百位上的数字”,就是看不懂为什么要“+4..

我只是一个对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日

  • 注意这句char i,j,k;

    i,j,k被定义为字符变量,输出是按ASCII码的序列,0-9的ASCII序号为48-57,这里将百,十个位的数字值+48就转为其ASCII序号才能正确输出.

  • 关键是在printf("%c %c %c\n",i,j,k);

    如果把它改成printf("%d %d %d\n",i,j,k);就不用加48了.

    建议多看看c请言输入输出这方面的东西,非常基本.

  • 注意这句char i,j,k;

    i,j,k被定义为字符变量,输出是按ASCII码的序列,0-9的ASCII序号为48-57,这里将百,十个位的数字值+48就转为其ASCII序号才能正确输出.

    参与评论
    相关内容
  • 关于我们 | 隐私政策 | 站点地图 | 站长博客|京ICP备07025396号
    添加到百度搜藏 添加到百度搜藏 电脑知识爱好者Copyright ?2006-2008版权所有 我要啦免费统计