```cpp
scanf(" %c",&c);//加入空格,可以过滤'\n','\r',' '
//也可以写成
while((c=getchar())<33);//作用差不多一样
scanf("%c",&c);//等同于c=getchar();
```
by Terrible @ 2020-05-31 08:57:35
@[邓本永](/user/93041) 读入一个字符后刷新整个缓冲区???
by xiyihan @ 2020-05-31 08:57:43
咕值rank94!
by _短笛无腔_ @ 2020-05-31 08:58:35
```cpp
int main() {
cin>>n>>m;
for(int i=1;i<=m;i++) {
char ch; ll a, b;
scanf("%c", &ch);
a=read(), b=read();
b--;
if(ch=='C') {
int c=read();
change(1, 1, n, a, b, c);
}
else {
sum1=sum2=sum3=0;
solve(1, 1, n, a, b);
ll q=(b-a+1-b*a)*sum1+(a+b)*sum2-sum3;
ll p=(b-a+2)*(b-a+1)/2;
ll g=gcd(p, q);
printf("%lld/%lld\n", q/g, p/g);
}
}
}
```
by __Watcher @ 2020-05-31 08:59:59
```cpp
int main() {
cin>>n>>m;
for(int i=1;i<=m;i++) {
char ch[5]; ll a, b;
scanf("%s", &ch);
a=read(), b=read();
b--;
if(ch[0]=='C') {
int c=read();
change(1, 1, n, a, b, c);
}
else {
sum1=sum2=sum3=0;
solve(1, 1, n, a, b);
ll q=(b-a+1-b*a)*sum1+(a+b)*sum2-sum3;
ll p=(b-a+2)*(b-a+1)/2;
ll g=gcd(p, q);
printf("%lld/%lld\n", q/g, p/g);
}
}
}
```
by __Watcher @ 2020-05-31 09:00:33
一个对的一个错的 P2221
by __Watcher @ 2020-05-31 09:00:53
@[邓本永](/user/93041) 好像`scanf`会读入换行符的……
by 囧仙 @ 2020-05-31 09:01:01
@[囧仙](/user/330759) 嗯,有可能
by __Watcher @ 2020-05-31 09:02:14
```cpp
scanf("%s", &ch);
```
ch如果本身就是字符串的话,ch表示的是字符串的头指针(char*),对它取址得到的是(char**),这个操作是错的。
by Terrible @ 2020-05-31 09:02:18
@[邓本永](/user/93041) %c 会读入一些 ' ', \n, \r, \0 之类的神奇符号,而 %s 会过滤掉
by Warriors_Cat @ 2020-05-31 09:02:59