我在测试案例中得到了一些错误的答案,

时间:2019-10-30 12:00:00

标签: c

我的任务是: “输入:m,n 该程序获得n个字符,仅在m行中包含“ W”和“ B”。 输出:如果每列中的“ W”数量相等,则返回“ B”,否则返回“ F”。

  

注意:我们不允许使用数组!

示例: 输入:

3 2
WBW
BBW

输出:

FBB

我的代码:

scanf("%d %d",&n,&m);
for(int i=1;i<=m;i++)
{
    str = 0;
    for(int j=1;j<=n+1;j++)
    {
       scanf("%c",&c);

       if(c=='W')
           str = str*1000+1;
       else
            str = str*1000;
    }//end of getting characters

    sumstr += str;
}//end of getting lines

//Reversing the "sumstr"
while(sumstr>0)
{
    a = sumstr%1000;
    reverse = (reverse+a)*1000;
    sumstr/=1000;
}
reverse/=1000;

for(int k =1;k<=n;k++)
{
    a=reverse%1000;

    if(a%2==0)
        printf("B");
    else
        printf("F");
   reverse /= 1000;
}//End of printing 'B' and 'F'

1 个答案:

答案 0 :(得分:2)

您的代码中有几项有问题,包括诸如提示用户输入scanf("%d %d",&n,&m);之类的内容。这将无法处理用户输入附带的空白。

这些不是硬性规定,只是一些建议:
(随后是示例代码以及用户输入和临时数据存储的替代方法。)

  • 在请求用户输入时,请使用简单明了的指示,不要歧义。
  • 一次允许输入1条。
  • 使用描述您正在做什么的变量值。 ({rows colsm n
  • 创建一个适当的容器来保存输入的用户数据。

例如:

int main(void)
{
    char str[4];
    int chr;
    int rows, cols;
    int i, j;

    char sDataConv[][2] = { "W", "B" };

    printf("Enter number of rows: ");
    if(fgets(str, 4, stdin)) 
    {
        rows = atoi(str);   
    }
    printf("Enter number of columns: ");
    if(fgets(str, 4, stdin)) 
    {
        cols = atoi(str);   
    }
    int array[rows][cols];//read data in as char values such as 'W' and 'B'
    memset(array, 0, sizeof(array));

    //Now a loop can be used prompting user
    //to enter  values, and placing values
    //into array as they are entered, eg using
    // array[i][j] = getc(stdin);
    // if((array[i][j] == 'W') || (array[i][j] == 'B'))

    for(i = 0; i<rows; i++)
    {
        for(j = 0;j<cols;j++)
        {
            printf("Enter either W or B one at a time");
            if(fgets(str, 4, stdin))
            {
                array[i][j] = str[0];
                //test - limit to allow only W or B
                while(!((array[i][j] == 'W') || (array[i][j] == 'B')))
                {
                    printf("Wrong entry, enter either W or B.");
                    if(fgets(str, 4, stdin))
                    {
                        array[i][j] = str[0];
                    }
                }
            }
        }
    }
    //display data entered
    for(i = 0; i<rows; i++)
    {
        for(j = 0;j<cols;j++)
        {
            printf("%c ", array[i][j]);
        }
        printf("\n");
    }



    return 0;
}

这应该提供一个开始。其余的取决于您,但是数组应该可以帮助进行比较并显示结果。