2015-05-15 162 views
1
include <iostream> 
#include <stdio.h> 

using namespace std; 

int main() { 

    int n; 
    scanf("%d",&n); 
    int l,k; 
    for(int i=0;i<n;i++) 
    { 
     scanf("%d %d",&l,&k); 
     char ch[l+1]; 

     /****/  scanf("%s",ch); 

     printf("Are we here"); 
     char ci=ch[0]; 

     int flips=0; 
     int count=0; 
     for(int j=0;j<l;j++) 
     { 
      if(ch[j]==ci) 
     { 
       count++; 
       if(count>k) 
       { 
       flips++; 
       count=1; 
       if(ci=='1') 
       { 
        ci='0'; 
        ch[j]='0'; 
       } 
       else if(ci=='0') 
       {    
        ci='1'; 
        ch[j]='1'; 
       } 
       } 
      } 
     else if(ch[j]!=ci) 
     { 

      if(ci=='1') 
      ci='0'; 
      else if(ci=='0') 
      ci='1'; 
      count=1;   
     } 


     } 

     printf("\n%d",flips); 
     printf("\n%s",ch);  

    } 

    return 0; 
} 

输入3个测试用例,每个测试用例有两行输入。scanf问题(“%s”)

3 
2 1 
11 
2 2 
11 
4 1 
1001 

应该给输出

1 
10 
0 
11 
2 
1010 

这基本上是做了一些标准编程大赛的东西代码。它需要测试用例的数量,并且对于每个测试用例,打印出两行所需的答案。现在,当我逐行输入所有输入时,它可以正常工作,并且可以获得所有输出。但是当我只是复制粘贴所有的输入时,我只能得到除最后一个输出以外的所有内容,而我必须按回车键才能获得最后的输出。现在我做了一些基本的调试,发现它与scanf("%s",ch)代码行有关。任何帮助..此外,我觉得程序的逻辑并不重要。我想的东西更为基本的这里...

+0

不会复制删除空行,并重新缩进你的代码。 –

+0

警告:此代码可被利用。你不应该使用'scanf(“%s”)' – rev

+0

你有什么建议? – user2277550

回答

1

我想为“\ r \ n”,当你复制粘贴文本

+0

但是为什么只有最后一次输入 – user2277550

+0

好,也许原因是没有。您可以将文本粘贴到文本编辑器(如记事本++)并打开隐形字符。你会看到是否有换行符。 – Sergi0