01 #include <stdio.h> 02 03 char c[200][200]; 04 int s[200], m, n; 05 void numara() { 06 int i, j, cod, nr; 07 for (j = 0; j < n; j++) { 08 nr = 0; 09 cod = 1; 10 for (i = 0; i < m; i++) { 11 if (c[i][j] == '1') { 12 if (!cod) { 13 cod = 1; 14 s[nr]++; 15 nr = 0; 16 } 17 } else { 18 if (cod) { 19 nr = 1; 20 cod = 0; 21 } else nr++; 22 } 23 } 24 if (!cod) s[nr]++; 25 } 26 } 27 int main() { 28 int i, j; 29 scanf("%d %d\n", & m, & n); 30 for (i = 0; i <= m; i++) gets(c[i]); 31 numara(); 32 for (i = 1; i <= m; i++) 33 if (s[i] != 0) printf("%d %d", i, s[0]); 34 return 0; 35 }
2 4 0101 1000
1. 若将第 28 行的 int i, j; 改为 int i; ,则程序会出现编译错误。()
2. 程序最少输出 0 个数,最多输出 2 * m 个数。()
3. s[i] 表示矩阵中有 s[i] 个列有 1 个 0 。( )
4. 若把第 13 行的 cod = 1; 和第 20 行的 cod=0; 全部换成 cod =1; ,则程序运行结果不变。( )
5. 若 m = 100, n = 100 ,则 s[1] 的最大值是( )。
6. 若 m = 95, n = 95,则 s[5] 的最大值是( )