问题标题: 酷町堂:看有人发讲解,我就也发一篇吧!

1
1
已解决
董宇昊
董宇昊
初级启示者
初级启示者

scanf和gets(getline)的用法和区别

(1)scanf:
    格式:scanf("%.s",字符串变量的名称);
    在这里,不加取地址符(&);加上s输出什么都没有
   
    如果你想输入多个字符,中间要以空格隔开,如下 
    scanf("%s%s%s",s1,s2,s3);
    否则只会输出第1个空格前的s1
    
(2)gets(getline):
    格式:gets(字符串变量名称);
    注意:这里一个gets只能输入一个字符串
    那有人就要问了,想输入多个怎么办?
    没错,在下面在加一个gets呗!如下
    gets(s1);
    gets(s2);
    
接下来就是他们的区别了;
你只用一个 scanf/gets
会有什么不同呢?
如果输入  Let us go 
输出会怎么样呢?
答案:scanf会输出只是Let,而gets会全部输出

    
这时,有人就会说了,gets比scanf更好用,为什么还要有scanf的存在呢?
别着急下结论 
如果是将一组字符串倒着输出呢?
scanf将字符串变量反过来就可以了
但是,gets却要进行很麻烦的运算
这样看来,还是scanf简单 

以上就是今天的讲解了,这是我第一次分享,请大家多多包容! 

大家也可以参考奥赛书

不过,我觉得我讲的比奥赛书详细

 

 

 

练习:(想做就做) 

题目描述
大家都知道一些办公软件有自动将字母转换为大写的功能。输入一个长度不超过 100 且不包括空格的字符串。要求将该字符串中的所有小写字母变成大写字母并输出。

输入格式
无

输出格式
无

输入输出样例
输入 1
Luogu4!
输出 1
LUOGU4!

 

董宇昊在2020-06-28 17:32:35追加了内容

有错误可以提出来


0
已采纳
沈峻宇
沈峻宇
资深天翼
资深天翼

有点水,兄弟

沈峻宇在2020-06-29 17:44:36追加了内容

但是我会了!

谢谢讲解

0
赵逸凡
赵逸凡
初级启示者
初级启示者

奥赛书比你说的详细多了,标题中gets(getline)是什么鬼?全文没一个字提到了“getline”

 

正如你所说的,你就也发一次 ,所以请好好听课学习,不要水了!

赵逸凡在2020-06-28 17:44:20追加了内容

@董宇昊 getline我学过,跟gets并不一样,不要弄混了!

 

0
被禁言 何冯成
何冯成
中级光能
中级光能

emm....

scanf好像c++用不到吧,用cin就行了,而且这个还更麻烦

gets好像也不常用

下次可以发一些有用的

0
0
李瑞曦
李瑞曦
高级天翼
高级天翼

wow~ ⊙o⊙,在些是你自己打出来的吗?对我来说你已经是大神级别的了!总结的很好,加油!希望你下次再多发一些讲解给我们看看!

0
被禁言 姜思远
姜思远
初级光能
初级光能

草(一种植物),我明白了许多东西,谢啦

姜思远在2020-06-29 22:01:13追加了内容

ps:水的可以和“是小周吖”这位主播比了

0
我要回答