scanf("%s") 问题
Issue with scanf("%s")
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 个测试用例,每个测试用例有两行输入。
3
2 1
11
2 2
11
4 1
1001
应该给出输出
1
10
0
11
2
1010
这基本上是一个执行一些标准编程竞赛内容的代码。它接受测试用例的数量,并且对于每个测试用例,在两行中打印出所需的答案。现在,当我逐行输入所有输入时,它工作正常并且我得到了所有输出。但是当我只是将所有输入复制粘贴在一起时,我只得到除了最后一个输出之外的所有内容,我必须按回车键才能获得最后一个输出。现在我做了一些基本的调试,发现它与scanf("%s",ch)
行代码有关。任何帮助..我也觉得程序的逻辑无关紧要。我在这里遗漏了一些更基本的东西...
我认为复制粘贴文本时没有复制“\r\n”
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 个测试用例,每个测试用例有两行输入。
3
2 1
11
2 2
11
4 1
1001
应该给出输出
1
10
0
11
2
1010
这基本上是一个执行一些标准编程竞赛内容的代码。它接受测试用例的数量,并且对于每个测试用例,在两行中打印出所需的答案。现在,当我逐行输入所有输入时,它工作正常并且我得到了所有输出。但是当我只是将所有输入复制粘贴在一起时,我只得到除了最后一个输出之外的所有内容,我必须按回车键才能获得最后一个输出。现在我做了一些基本的调试,发现它与scanf("%s",ch)
行代码有关。任何帮助..我也觉得程序的逻辑无关紧要。我在这里遗漏了一些更基本的东西...
我认为复制粘贴文本时没有复制“\r\n”