迷惑了很久,很奇怪的程序,为什么结果会是1 0 2 0 3 0。没有给S[10]赋初值,S[1],S[2],S[3]如何会有值输出,是零

迷惑了很久,很奇怪的程序,为什么结果会是1 0 2 0 3 0。没有给S[10]赋初值,S[1],S[2],S[3]怎么会有值输出,是零。
#include <stdio.h>
char c[3][200];
int s[10], m, n;
main(){
int i;
scanf("%d %d\n", &m, &n);
for (i = 0; i < m; i++) gets(c[i]);
for (i = 1; i <= m; i++) 
  printf("%d %d ", i, s[i]);
return 0;
  }


------解决方案--------------------
全局变量初始化为0
------解决方案--------------------
你输入的啥?
是不是输入的m大于3了?
------解决方案--------------------
int s[10]在函数体外定义,是一个全局变量,不赋初值时默认值为0
在函数体内定义为static 局部变量时,同样为0
------解决方案--------------------
printf("%d %d",i,s[i]);
==========================
这个就是要求把s[i]当成整型输出呀,不知道lz期望这个程序输出什么呢?

话说回来,在没有初始化的情况下,s[i]不一定是0就是了。
------解决方案--------------------
Sorry,好像看错了.....
------解决方案--------------------
全局变量会自动初始化为0 

而不是非法值
------解决方案--------------------
全局变量在定义时主动才初始化为0

------解决方案--------------------
#include <stdio.h> 
char c[3][200]; 
int s[10], m, n; 
main(){ 
int i; 
scanf("%d %d\n", &m, &n); 
for (i = 0; i < m; i++) gets(c[i]); 这句,有问题,他直接c[1]都是null
for (i = 1; i <= m; i++)
printf("%d %d ", i, s[i]); null用%d,输出是 0
return 0; 
}
我输入的是 
3 10 
1110000111 
1100001111 
1000000011



------解决方案--------------------
#include <stdio.h>
char c[3][200];
int s[10], m, n;
main(){
int i;
scanf("%d %d\n", &m, &n);
for (i = 0; i < m; i++) gets(c[i]); 这句,有问题,他直接c[i]都是null 
for (i = 1; i <= m; i++)
printf("%d %d ", i, s[i]); null用%d,输出是 0 
return 0;

我输入的是
3 10
1110000111
1100001111
1000000011
------解决方案--------------------
莫非楼主想让它输出:
1 null
2 null
3 null ???
------解决方案--------------------
没有给S[10]赋初值,S[1],S[2],S[3]怎么会有值输出,是零
------------------------- 
或者以后的编译器应该输出:变量没初始化,系统将要崩溃。。。

------解决方案--------------------
定义了s[10]之后,系统就会给它分配十个字节的空间用来存放数据,虽然没有初始化,但里面存储的都是零,而不是什么都没有。
 
莫非楼主想让它输出: 
1 null 
2 null 
3 null ??? 

------解决方案--------------------
定义了s[10]之后,系统就会给它分配十个字节的空间用来存放数据,虽然没有初始化,但里面存储的都是零,而不是什么都没有。
 
莫非楼主想让它输出: 
1 null 
2 null 
3 null ??? 

------解决方案--------------------
好象什么时候看到过楼主贴出过整个程序。。
关于问题 楼上的各位都已经说的很清楚了。