C++算法入门训练记录——基础语法练习(二)

训练题目来源包括不限于:力扣、PTA、HDU Online Judge System、蓝桥杯训练题库。基础练习篇适用于蓝桥本科BC组、有简单基础C/C++编程知识、有兴趣自学提高等朋友阅读讨论。续C++算法入门训练记录——基础语法练习(一)
摘要由CSDN通过智能技术生成

训练题目来源包括不限于:力扣、PTA、HDU Online Judge System、蓝桥杯训练题库。

基础练习篇适用于蓝桥本科BC组、有简单基础C/C++编程知识、有兴趣自学提高等朋友阅读讨论。

续上篇C++算法入门训练记录——基础语法练习(一)-CSDN博客

答上篇遗留问题:

题目1疑点答疑:

1、读取完首行数字后需不需要使用getchar();吃掉后面的回车?

一般来说需要用getchar();进行处理。但是此题中由于后面也是用了cin>>输入。篇一末尾已经提过,cin>>输入的时候会自动跳过前面的空格、制表符、回车。所以此题中不用专门处理。但养成良好习惯很有必要。

2、直接在循环里面输出会不会导致程序运行时出现问题?

一般来说,在实际应用中,可能会需要再最后进行统一输出。即:将输入与输出分离。中间可能会用数组之类的形式暂存数据。但是在算法练习中,这不是主要关注点,即可以边输入边输出,最后只会统计输出的内容。例如此题中,按照所给程序实际运行结果如下黑图所示:

但是题库验证时,默认输出为白图所示:

3、有没有必要在末尾补上else的空行?

个人认为是有必要的,因为哪怕在else中空指令,也体现出了编程代码的完整性。

题目2疑点答疑:

1、为什么score数组要取10005,而不是10000?

因为只取10000可能会面临数组越界的问题,所以在算法比赛中一般图省事直接取最大值+5即可。当然取10001,10002,10010等一般都可以。

2、为什么在第一种方法输出时,计算的时候要+0.5?

因为在强制类型转换的时候,直接取整了。没有四舍五入的过程。所以如果想直接输出整数int的话,就需要自己手动操作一下。+0.5是一种手动四舍五入的方法,例如对69.2和75.7,四舍五入之后应为69、76。若直接int转换则输出69、75。+0.5之后再取整则为69.7和76.2取整,输出69、76。

题目3疑点答疑:

1、为什么要使用getchar()

这里就是为了吃掉cin遗留下来的回车。因为后面的输入用的不是cin>>。所以不会跳过回车。用getchar()进行处理。

2、为什么要使用cin.getline()

gets函数在VS2015之后就不支持使用了,可以用gets_s进行替换。

具体为:gets(数组名)gets_s(数字名,STLEN),STLEN为数组最大长度。

eg:

char a[100];

gets(a);gets_s(a, 100);

如果你的编译器连gets_s都不支持,可以使用函数cin.getline
具体为:cin.getline(数组名,STLEN,结束标志),STLEN为数组最大长度。
第三个参数可以省略,当第三个参数省略之后,系统默认为’\0’。

3、为什么要在cin.getline(str, 55);之后写flag = 0;

在循环中将标志反复置为有效,避免标志使用一次后就无法起到作用了。

题目4:

Give you the width and height of the rectangle,darw it.

Input

Input contains a number of test cases.For each c

  • 28
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不冰微糖K

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值