C语言的一个小问题

统计输入中各个数字出现的次数的

int c;


 while((c=getchar())!=EOF)
 {
  if(c>='0'&&c<='9')
      ++ndigit[c-'0'];                            //++ndigit[c]为什么不行?
  
 }


饮歌长啸
浏览 657回答 1
1回答

繁花不似锦

getchar()输入的是一个字符。不是int类型的数字。所以ndigit[c]是c的Ascii码值,所以要减去'0'的ascii码值才能得到正确的数字。比如输入的是9&nbsp;9的ascii值是57 那么ndigit[c]就是ndigit[57]。而ndigit[c-'0']就是ndigit[57-48]=ndigit[9]
打开App,查看更多内容
随时随地看视频慕课网APP