C语言 念数字?

2025-04-08 21:57:40
推荐回答(2个)
回答1:

你一共提出三个问题:
1、为什么不写成int?
此处也可以写成int。
如果写成int型,还要求出各位上的数字是多少,才能将数字转换为拼音。
写成char型,省去了转换各位数字的环节,可以用str[i]任意取出各位上的数字。两位,也方便负号的处理。
2、为什么是*?
如果不加*,只能定义一个字符数组(或叫字符串),如char num[]="yi";
加上一个*后,char *num[]跟不加*相比,①num已经变成字符串数组;②num变成了指针数组,num[0]、num[1]等各个元素已经成为指向“ling”、“yi”的地址,而“ling”等数据则放在常量区。
根据num[0]指向“ling”,num[1]指向“yi”,num[2]指向“er”……
这样可以通过num[i],很方便地找到对应的数字i的汉语拼音。
3、str[0]-'0'是什么意思?
先看str[0]是什么,它是你输入的整数的第一个数字,比如它是3,在这里程序是把3当作字符'3'处理的(原因就是变量str的类型为char型),在储存这个'3'时,实际上储存的是字符'3'的asc码,即51。而字符'0'的asc码是48,str[0]-'0'=51-48=3。这样,num[str[0]-'0']=num[3],如前面所述,就很容易找到3对应的拼音“san”了。
有什么问题请留言。

回答2:

第一,输入用字符存存,方便后面的运算,后面会用到字符跟数字的运算,用整数,先要用求摩,求余,把每位数取出来,然后跟后面的清单数组匹配,很麻烦,
如果是0-9,你用int存,也没问题,
第二,数组产量其实是一个指针,加*表示数学内容,加&表示地址,这个要慢慢理解,急不得,
第三,用字符减字符,实际是他的ascii码相减,用字符减'0',如果前面的字符是0就等于0,如果是其他字符,就会得到对应的数字,你想学透,就看下每个数字字符对应的码值,然后自己减一遍,用减出来的数字去找数组中的元素,刚好找到对应的拼音!