这个题解看不懂,我的问题在讨论里

P1320 压缩技术(续集版)

XSean @ 2022-08-15 22:53:17

第11~14行看不懂,第42~45行看不懂


#include <stdio.h>

int main(void)
{
    char map[200][201];
    int i,j;
    int flag = 0,r = 0,count = 0;

    while(scanf("%s", map[r]) != EOF)//11
    {//12
        r++;//13
    }//14
    printf("%d", r);
    for(i = 0; i < r; i++)
    {
        for(j = 0; j < r; j++)
        {
            if(map[i][j] == '0')
            {
                if(flag) //在判断字符是否为'1'的状态下,出现了'0',则输出结果
                {
                    printf(" %d", count);
                    flag = 0;
                    count = 0;
                }
                count++;
            }
            else
            {
                if(!flag) //在判断字符是否为'0'的状态下,出现了'1',则输出结果 
                {
                    printf(" %d", count);
                    count = 0;
                    flag = 1;
                }
                count++;
            }
        }
    }
    if(count > 0)//42
    {//43
        printf(" %d", count); //压缩码里的最后一个数  //44
    }//45

    return 0;
} 

by する @ 2022-08-15 23:26:05

11到14其实就是判换行的,42到45是因为最后一次肯定没有统计,其实那个判断完全可以删掉


by XSean @ 2022-08-16 08:58:28

@する 11-14行可以再详细一点吗,谢谢啦


by する @ 2022-08-16 10:33:40

百度吧,我一般不用scanf的,直接while(cin>>a)的


by Always_Remember_It @ 2022-08-16 13:02:35

@Sean_xzx 就是一直输入,输入若干个数的意思(好像是输出^E停止,我也忘了,反正他就会自动输入若干个数吧) (


by XSean @ 2022-08-16 15:06:45

@zswmb map不是二维数组吗


by XSean @ 2022-08-16 15:08:22

@する 那while(cin>>a)应该怎么用?(包括它的返回值,以及a的适用类型)


by Always_Remember_It @ 2022-08-16 15:56:05

@Sean_xzx char 型一次可输一串比如Char a[100] 输入只要cin》a


by XSean @ 2022-08-16 16:03:29

@zswmb 那scanf("%s", map[r])

1.map[r]是第一行吗 2.为什么map[r]没有取地址符&


|