关于游戏题材的动漫:简单题目C语言

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/03 22:46:40
#include <stdio.h>
main( )
{ char ch1,ch2; int n1,n2;
ch1=getchar(); ch2=getchar();
n1=ch1-‘0’; n2=n1*10+(ch2-‘0’);
printf(“%d\n”,n2);
}
程序运行时输入:12<回车>,执行后输出结果是
答案是12怎么来的能详细的说一下吗?

ch1是读进1,读进时当作字符处理,n1是整数型,将字符型1减去带单引号的0,即字符型的0,是将1和0的ASCII码相减,如果你有一定的编程常识一定知道1和0的ASCII码是相差1,因为ASCII里面0-9是按顺序编码的。像a与b也是如果b-a也会等于1,也以n1得到的是整数型的1。同理,后面的ch2-'0'会等于2,n1*10当然就等于10,10+2当然等于12,n2是在先前定义是整数型的,结果就自动转化成整数型,所以输入参数用的是%d,即输出十进制数。

n1 = ch1 - '0' = '1' - '0' =1
n2 = 1*10+(ch2-'0') = 10+('2' - '0') =10+2=12

运行后:
ch1='1';
->n1=ch1-‘0'='1'-'0'=1
ch2='2'
->n2=n1*10+(ch2-‘0’)=1*10+('2'-'0')=12
输出时是10进制输出,为12

这是主要是考字符的ASCII码的运算.