C语言的问题

LA_Lai 2012-09-12 06:27:25
代码如下:
#include <cstdio>
int main()
{
int c,i,nwhite,nother,ndigit[10];
nwhite = nother = 0;
for(i =0; i<10; i++);
ndigit[i] = 0;

while((c=getchar()) !=EOF)
{
switch(c){
case'0':case'1':case'2':case '3':case'4':case'5':case'6':case'7':case'8':case'9':
ndigit[c-'0']++;
break;
case' ':
case'\n':
case'\t':
nwhite++;
break;
default :
nother++;
break;
}
}
printf("digit=");
for(i=0;i<10;i++)
printf("%d",ndigit[i]);
printf(",whiter space= %d,other= %d\n",nwhite,nother);
return 0;
}

代码是不是有什么错误,输出ndigit[i]的时候总是一串乱码
还有
ndigit[c-'0']++;是什么意思
...全文
170 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
didijiji 2012-09-15
  • 打赏
  • 举报
回复
就像这位兄弟说的,另外第一个for循环还真是多了一个分号。
[Quote=引用 1 楼 的回复:]

switch(c){
case'0':case'1':case'2':case '3':case'4':case'5':case'6':case'7':case'8':case'9':
ndigit[c-'0']++;

当你输入的 数字是0-9时,这个C变量(是个整型)的ascii码-“0” 就是这个数字跟0的偏移,如果C是0.那么偏移就是0,同理是9的时候 偏移就是9.。。
然后自……
[/Quote]
自信男孩 2012-09-15
  • 打赏
  • 举报
回复
#include <cstdio>
int main()
{
int c,i,nwhite,nother,ndigit[10];
nwhite = nother = 0;
for(i =0; i<10; i++); //哥,你这儿怎么多加了一个“;”数组都没有初始化,唯一初始化的还是ndigit[10];这个还不是ndigit的空间范围。
ndigit[i] = 0;

while((c=getchar()) !=EOF)
{
switch(c){
case'0':case'1':case'2':case '3':case'4':case'5':case'6':case'7':case'8':case'9':
ndigit[c-'0']++;
break;
case' ':
case'\n':
case'\t':
nwhite++;
break;
default :
nother++;
break;
}
}
printf("digit=");
for(i=0;i<10;i++)
printf("%d",ndigit[i]);
printf(",whiter space= %d,other= %d\n",nwhite,nother);
return 0;
}
ndigit[c-'0']++这样计算的原因是,这儿有一个对应关系即,字符0对应数组下表为0的位置,字符1对应下表为1的位置,这些下表为0或者为1的位置正好储存其出现的次数。
jixingzhong 2012-09-15
  • 打赏
  • 举报
回复
char和int之间的转换而已
刘牧之train 2012-09-15
  • 打赏
  • 举报
回复
数据类型之间的转换
qjzl2008 2012-09-15
  • 打赏
  • 举报
回复
switch(c){
case'0':case'1':case'2':case '3':case'4':case'5':case'6':case'7':case'8':case'9':
ndigit[c-'0']++;

当你输入的 数字是0-9时,这个C变量(是个整型)的ascii码-“0” 就是这个数字跟0的偏移,如果C是0.那么偏移就是0,同理是9的时候 偏移就是9.。。
然后自增,就是数组索引对应的元素值自增1. 这样就可以统计出,0-9的输入的个数了,,,0的个数是ndigit[0]的值。。。。。。。。。。。。9的个数就是ndigit[9]的值。

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧