如何输入字符

学术版

```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


上一页 | 下一页