PS:做了一水题,半天没找到bug,最后发现居然还是读入字符的问题,6。
简单样例引入:(读取n个字符,然后输出他们)
#include<iostream>
#include<cstdio>
using namespace std;
int main(){
int n;
scanf("%d",&n);
char c;
for(int i=0;i<n;i++){
scanf("%c",&c);
printf("%c ",c);
}
return 0;
}
假如给定样例为:
5
a b c d e
那么代码后运行结果:
//你以为的结果:
a b c d e
//实际的结果:
a b
//转化成ASCII后:
10(换行符) 97(a) 32(空格) 98(b) 32(空格)
原因:
我们可以看到在读入的时候
他把第一行的换行符进行了读入
以及字符后面的空格都进行了读入
解决方案:
1.在%c的前面加上空格,就可以忽略换行符与空格,如下:
scanf(" %c",&c);
2.直接使用c++中的cin来进行读入(cin会自动忽略掉换行符和空格)
cin>>c;