为什么只能输入不能打印?

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;

你这个问题可太妙了,值得专门写一篇博文记录下来。
x的地址正好是count的地址-1,当你x=-1时,count[-1]++正好是让x++变成0,反而通过了while的判断条件继续下一次循环
(C语言不会对数组下标为负数进行检查,因为数组的本质是一组元素的第一个元素指针,所以count[-1]和*(count-1)是一样的,而内存分配空间正好让x和count排列在一起,导致x从-1自增到0)
解决方案很简单,加一个判断就行了

img

第二个scanf把x的值都改变了,进入while一次改变一次,你得再定义一个变量,不能用x