猫咪母鸡蹲是不舒服吗:C语言问题

来源:百度文库 编辑:高考问答 时间:2024/04/29 09:24:28
int main()
{
int c, i, nwhite, nother, ndigit[10],chcter[26];

nwhite = nother = 0;
for (i=0;i<10;i++)
ndigit[i]=0;
while((c=getchar())!= '\n'){

switch (c){

//count digits
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
ndigit[c-'0']++;

break;

请问ndigit[c-'0']++;这句话是什么意思??
这个减号是什么意思??谢谢各位。

在这里,ndigit数组保存输入的数字的格式。如果c为'0'到'9'中的任何一个,则ndigit数组中相应数字位数自增.c是输入的字符,c-'0'即计算出字符形式的数字对应的数字.例如,输入c为9,则'9' - '0' = 9;输入c为3,则'3'-'0' = 3.建议看一下ASCII码表

ndigit数组是记录数字个数的,ndigit[0]记0的个数,ndigit[1]记1的个数,以此类推,由于存储的字符‘0’-‘9’是ascii码48-57代表的,所以用c减去字符‘0’的ascii码值(48)即可转化成下标,以表示对应计数器加1

++ndigit[c-'0'];

就是把ndigit[c-'0'] 自加一

这不是个统计数么
c-'0' 是求位置
这是把数字的ascII字符转换为数字
如果c == '9'的话
就是
++(ndigit[9]);

在C的类型里, char字符型和BYTE字节型是可以互换的! 也就是说字符'0'=48或48='0'...同样, '9'=48+9...

在你的问题里,[c-'0']里的-号,其实就是数学里的+-*/的减号意义一样的!

[c-'0'],如果这里c=49也就是'1',那么[c-'0']的运算结果就是[1]...