int count[10]={count[0]=0};
int x;
int t=0;
scanf("%d",&x);
while(x!=-1){
scanf("%d",&x);
count[x]++;
}
for(t=0;t<10;t++){
printf("%d出现了%d次\n",t,count[t]);
}
return 0;
为什么只能输入不能打印?
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
八云黧 2021-07-14 16:16关注你这个问题可太妙了,值得专门写一篇博文记录下来。
x的地址正好是count的地址-1,当你x=-1时,count[-1]++正好是让x++变成0,反而通过了while的判断条件继续下一次循环
(C语言不会对数组下标为负数进行检查,因为数组的本质是一组元素的第一个元素指针,所以count[-1]和*(count-1)是一样的,而内存分配空间正好让x和count排列在一起,导致x从-1自增到0)
解决方案很简单,加一个判断就行了
本回答被题主选为最佳回答 , 对您是否有帮助呢?评论 打赏 举报解决 1无用