一些代码小技巧&经典代码
请说明逻辑与(&&)在下边表达式中起到的重要作用
count != 0 && sum/count
答:该表达式使用逻辑与(&&)来确保 sum/count 的除数不为 0。
因为当 count 为 0 时,并不会导致 sum/0,因为根据短路求值的原则,&& 运算符在左侧为假的情况下,并不会计算右侧的表达式。(这个技巧放在实际开发中,逼格顿时嗷嗷的 )
请用一个逻辑表达式来判断某一年是否为闰年
某一年份如果符合下边 A 或 B 其中一个,我们称之为闰年:
A. 能被 4 整除,但不能被 100 整除;
B. 能被 400 整除。
答:
(year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)
解析:|| 左边为 A 条件,右边为 B 条件,符合其中一个,逻辑表达式即为真。
请说明下边语句的作用。
while ((ch = getchar()) == ' ')
{
;
}
答:过滤掉空格。先 getchar() 函数获得的值存放到变量 ch 中,再检测 ch 的值是否为空格(' '),如果是,执行循环体的内容,即空语句,然后开始第二轮循环……
请说明下边语句的作用。(假设下列语句在main函数中且在下列语句之前已经定义了一个动态数组new char[int])
do
{
cout<<"请随便输入一串数字,回车键进行下一次输入:";
cin>>char;
}
while ( getchar() != '/n');
答:用户按回车键即可进行下一次输入。先执行一次循环,用户按回车后进入下一次输入。
如果下边代码被执行,程序将怎么样?
#include <stdio.h>
int main()
{
while (1)
;
return 0;
}
答:进入死循环。因为决定退出 while 循环的条件表达式的值为 1,即永远为真,所以这是一个永远都不会结束的程序。
TIPS:快捷键 ctrl + c 可以强制退出程序。(Windows 系统请在“任务管理器”中结束程序)
请问下边进入循环的条件是什么?
……
while (!condition)
{
// 循环体
}
……
答:只有当变量 condition 的值为 0 时,才进入循环,执行循环体的内容。
TIPS:初学者可能更倾向于写成 while (condition == 0),但 while (!condition) 的写法是 C++ 程序员更常用的,应该尝试去适应这种表示形式。
比起 while 语句,do…while 语句的特点是什么?
答:do…while 语句的特点是先进入循环再判断表达式的值。也就是说,无论如何 do…while 语句都会至少执行循环体的内容一次。
如果不上机实验,你能看出下边代码会打印哪个范围内的所有数值呢?
#include <stdio.h>
int main()
{
signed char i = 0;
while (i <= 0)
{
printf("%d", i);
i = i - 1;
}
return 0;
}
答:会打印 0 ~ -128 这个范围内的所有数值。
为什么 getchar() 返回值为 int 是为了存放 EOF,而 EOF 通常被定义为 -1,char 类型即可存放,为啥还要 int 类型?
答:因为 char 默认定义为 unsigned char 还是 signed char 是取决于编译系统,所以 char 在某些编译系统可能无法存放负数;而 int 默认是 signed int。
putchar和getchar比较
putchar函数(字符输出函数)的作用是像终端输出一个字符,其一般形式是:putchar (c),它输出字符变量是c,能够是字符型变量和整形变量。
getchar函数(字符输入函数) 此函数的作用是从终端(或系统隐含指定的输入设备)输入一个字符。 getchar函数没有参数,其一般形式为getchar( )函数的值就是从输入设备得到的字符。
下列代码执行了什么
while ((ch = getchar()) != '\n')
{
if (ch >= 'A' && ch <= 'Z')
{
ch = ch - 'A' + 'a';
}
else if (ch >= 'a' && ch <= 'z')
{
ch = ch - 'a' + 'A';
}
putchar(ch);
}
putchar('\n');
答:将用户输入的英文句子中的字母大小写进行调换。
字符串中数字转换成整型的数字
请将下边的 for 语句写成 while 语句的表示方式。\
for ( ; ; )
;
答:for 语句省略三个表达式即表示永远为真的循环,即死循环。用 while 语句应该这样写:
while (1)
;
请将下边的 while 语句写成 for 语句的表示形式。
while ((ch = getchar()) != '\n')
{
printf("%c", ch);
}
答:在这种情况下(没有计数的时候),使用 while 语句会更加自然。
for ( ; (ch = getchar()) != '\n'; )
{
printf("%c", ch);
}
用scanf_s判断输入数据是否合法
scanf_s函数会返回成功接收字符的个数,所以我们只需检查每次调用 scanf_s函数的返回值是否为 1 即可。
一些代码小技巧&经典代码的更多相关文章
- C++ 代码小技巧(一)
在写代码的时候,我们常常会用一些小技巧,下面做简单介绍 一.o1+o2+o3(常数优化) 如题,开优化开关. 有的OJ上有O2优化选项,当然,你也可以这样:在代码开头这样加一句: #pragma GC ...
- CSS 小技巧 | 一行代码实现头像与国旗的融合
到国庆了,大家都急着给祖国母亲庆生. 每年每到此时,微信朋友圈就会流行起给头像装饰上国旗,而今年又流行这款: emm,很不错. 那么,将一张国旗图片与我们的头像,快速得到想要的头像,使用 CSS 如何 ...
- iOS开发小技巧--纯代码自定义cell
纯代码自定义cell 自定义cell的步骤(每个cell的高度不一样,每个cell里面显示的内容也不一样) 1.新建一个继承自UITableViewCell的子类 2.在initWithStyle:方 ...
- C# 代码小技巧
一 .自动属性. 1.vs下输入prop,Tab键就出现了. 2.有了自动属性,我们不用再额外为一个类的每个公共属性定义一个私有字段(实际上没多大用处的字段), 但是通过反射还是可以看到对应的私有 ...
- Android——隐藏输入法的小技巧
今天偶然在百度地图提供的DEMO里看到这样一段代码.认为确实是个小技巧,就写下来分享一下. 针对的问题: 我们在开发android界面的时候,常常使用EditText控件.然后每次进入这个页面的时候, ...
- 小技巧找出一个php的cron脚本出问题的代码行
这个小技巧虽然很小,但是很有用. 我写了一个cron脚本,但是隔一天发现,这个昨天的cron脚本还一直在跑着,没有停下来,一定是里面有个程序堵住了. 但是如果我重新跑又需要很多时间.这个怎么办? 现在 ...
- Android课程---Android Studio使用小技巧:提取方法代码片段
这篇文章主要介绍了Android Studio使用小技巧:提取方法代码片段,本文分享了一个快速复制粘贴方法代码片段的小技巧,并用GIF图演示,需要的朋友可以参考下 今天来给大家介绍一个非常有用的Stu ...
- Android Studio使用小技巧:提取方法代码片段
http://www.jb51.net/article/65510.htm 今天来给大家介绍一个非常有用的Studio Tips,有些时候我们在一个方法内部写了过多的代码,然后想要把一些代码提取出来再 ...
- JAVA学习之Ecplise IDE 使用技巧(2)第二章:键盘小快手,代码辅助
上一篇:JAVA学习之Ecplise IDE 使用技巧(1)第一章:我的地盘我做主,工作空间 第二章:键盘小快手,代码辅助 内容包括: 第一:显示行号 如何设置行号:Ecplice菜单Windows& ...
随机推荐
- 递归函数初步理解---python实现(汉诺塔问题)
递归常被用来描述以自相似的方法重复事物的过程,在程序中指的是在函数定义中使用函数自身的方法. 递归是一个树结构,分为递推和回归的过程,当递推到达底部时,就会开始回归. 问题描述:A比B大两岁,B比C大 ...
- PTA 统计二叉树结点个数
6-1 统计二叉树结点个数 (10 分) 本题要求实现一个函数,可统计二叉树的结点个数. 函数接口定义: int NodeCount ( BiTree T); T是二叉树树根指针,函数NodeCo ...
- SSH&SSM
SSH和SSM的区别 SSH是Spring+Struts+Hibernate的缩写,是一种Web应用程序开源框架.框架系统分为四层:表选层.业务逻辑层.数据持久层和模块层.SSM是Spring+Spr ...
- Web 前端 - 优雅地 Callback 转 Promise :aw
前言 当今 ES7 标准大行其道,使用 async + await 将异步逻辑同步书写已经普及,但是却有许多旧库或旧代码尚未完全 Promise 化,急需一个小工具去挖去这代码中藓疾. 设计和实现 由 ...
- [leetcode] 单调栈
本文总结单调栈算法. 原问题 学习一个算法,我们需要清楚的是:这个算法最原始的问题背景是什么样的? 下一个更小元素 给定一个数组 nums,返回每个元素的下一个更小的元素的下标 res,即 res[i ...
- SCIP:构造数据抽象--数据结构中队列与树的解释
现在到了数学抽象中最关键的一步:让我们忘记这些符号所表示的对象.不应该在这里停滞不前,有许多操作可以应用于这些符号,而根本不必考虑它们到底代表着什么东西. --Hermann Weyi <思维的 ...
- Python-Tkinter 使用for循环生成列表式Button及函数调用
Tkinter是轻量级的图形化界面,在使用中我们可能遇到需要生成一串Button按钮的情况,如图: 如果一个一个操作就太麻烦了,但我们可以通过for循环列表的形式来实现 来看看以下例子: from t ...
- java面试一日一题:如何优化sql
问题:请讲下在mysql下如何优化sql 分析:该问题主要考察对mysql的优化,重点考虑对索引优化的掌握. 回答要点: 主要从以下几点去考虑, 1.什么样的sql需要优化? 2.怎么对sql进行优化 ...
- 报错:Method definition shorthands are not supported by current JavaScript version
当你在html中使用调用js中的方法时,会出现这行报错: method definition shorthands are not supported by current JavaScript ve ...
- C语言-字符串函数的实现(五)之strstr
C语言中的字符串函数有如下这些 获取字符串长度 strlen 长度不受限制的字符串函数 strcpy strcat strcmp 长度受限制的字符串函数 strncpy strncat strncmp ...