1120. Friend Numbers (20)-PAT甲级真题

Two integers are called “friend numbers” if they share the same sum of their digits, and the sum is their “friend ID”. For example, 123 and 51 are friend numbers since 1+2+3 = 5+1 = 6, and 6 is their friend ID. Given some numbers, you are supposed to count the number of different friend ID’s among them. Note: a number is considered a friend of itself.

Input Specification:

Each input file contains one test case. For each case, the first line gives a positive integer N. Then N positive integers are given in the next line, separated by spaces. All the numbers are less than 10^4.

Output Specification:

For each case, print in the first line the number of different frind ID’s among the given integers. Then in the second line, output the friend ID’s in increasing order. The numbers must be separated by exactly one space and there must be no extra space at the end of the line.

Sample Input:
8
123 899 51 998 27 33 36 12
Sample Output:
4
3 6 9 26

分析:在接收输入数据的时候就把该数字的每一位相加,并把结果插入一个set集合中。因为set是有序的、不重复的,所以set的size值就是输出的个数,set中的每一个数字即所有答案的数字序列

 

1064. 朋友数(20)-PAT乙级真题

如果两个整数各位数字的和是一样的,则被称为是“朋友数”,而那个公共的和就是它们的“朋友证号”。例如123和51就是朋友数,因为1+2+3 = 5+1 = 6,而6就是它们的朋友证号。给定一些整数,要求你统计一下它们中有多少个不同的朋友证号。注意:我们默认一个整数自己是自己的朋友。

输入格式:

输入第一行给出正整数N。随后一行给出N个正整数,数字间以空格分隔。题目保证所有数字小于104。

输出格式:

首先第一行输出给定数字中不同的朋友证号的个数;随后一行按递增顺序输出这些朋友证号,数字间隔一个空格,且行末不得有多余空格。

输入样例:
8
123 899 51 998 27 33 36 12
输出样例:
4
3 6 9 26

分析:在接收输入数据的时候就把该数字的每一位相加,并把结果插入一个set集合中。因为set是有序的、不重复的,所以set的size值就是输出的个数,set中的每一个数字即所有答案的数字序列~

 

【软件测试】《软件测试技术基础》知识点整理

  1. 为什么要进行软件测试?

为了尽早发现软件中的错误,提高软件质量

  1. 有哪些常见的软件测试分类方式,分别包括哪些内容?

按是否需要查看代码分为黑盒测试和白盒测试

按是否需要执行被测软件分为静态测试和动态测试

按测试阶段分为单元测试、集成测试、系统测试

按测试执行时是否需人工干预分为手工测试和自动测试

  1. 软件测试需要遵守哪些原则?
  1. 软件测试应追溯到用户需求
  2. 穷尽测试是不可能的
  3. 应具有良好的测试态度
    • 避免测试自己的程序
    • 增量测试
    • 测试应该分级
    • 测试应有重点
    • 避免测试的随意性
  4. 测试结果的处理原则
    • 对待缺陷进行复查和确认
    • 测试结果的全面检查
    • 出错统计和分析
    • 妥善保存测试过程文档
  1. 软件缺陷和软件测试的概念分别是什么?

软件缺陷的概念:

软件未达到需求规格说明书中指定的功能

软件出现了需求规格说明书中指明不会出现的错误

软件功能超出需求规格说明书中指明的范围

软件未达到需求规格说明书中虽未指出但应达到的目标

软件测试员认为软件难以理解、不易使用、运行速度缓慢,或者最终用户认为不好

软件测试的概念:

使用人工和自动手段来运行或测试某个系统的过程,目的在于检验其是否满足规定的需要或弄清楚预期结果与实际结果之间的差别

  1. 软件测试的基本流程是什么?

1.单元测试

2.集成测试

3.确认测试

4.系统测试

  1. 对比V模型、W模型、H模型,简述他们各自的特点。

V模型: 强调了在整个软件项目开发中需要经历的若干个测试级别,并与每一个开发级别对应;忽略了测试的对象不应该仅仅包括程序,没有明确指出对需求、设计的测试

W模型: 补充了V模型中忽略的内容,强调了测试计划等工作的先行和对系统需求和系统设计的测试;与V模型相同,没有对软件测试的流程进行说明

H模型: 强调测试是独立的,只要测试准备完成,就可以执行测试

  1. 什么是黑盒测试,有哪些主要方法?

黑盒测试是将被测试软件看做一个黑盒子,只考虑系统的输入和输出,完全不考虑程序内部逻辑结构和处理过程

主要方法有边界值测试,等价类测试,决策表测试,功能图法,场景法,因果图

  1. 等价类划分的原则是什么?

若输入条件规定了取值范围,且取值范围上、下限之间的数据是有意义的数据,则可确立一个有效等价类和两个无效等价类

若输入条件规定了“必须如何”的条件,则可确立一个有效等价类和一个无效等价类

若输入条件是一个布尔型量,则可确定一个有效等价类和一个无效等价类

若输入条件是一个逻辑型量,即规定了输入数据的一组值,且软件要对每个输入值分别进行处理,则可为每一个输入值确立一个有效等价类,还要针对这组值确立一个无效等价类

  1. 如何用场景法进行黑盒测试?
  1. 构造基本流和备选流
  2. 根据基本流和备选流构造场景
  3. 根据场景设计测试用例
  4. 对每个测试用例补充必要的测试数据
  1. 什么是白盒测试,包括哪些方法?

白盒测试是将黑盒子打开,研究源代码和程序内部的逻辑结构。

白盒测试包括代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基路径测试法、路径覆盖

  1. 白盒测试与黑盒测试的不同?

黑盒测试是将被测试软件看做一个黑盒子,只考虑系统的输入和输出,完全不考虑程序内部逻辑结构和处理过程。白盒测试是将黑盒子打开,研究源代码和程序内部的逻辑结构。黑盒测试的依据是各阶段的需求规格说明。白盒测试的依据是程序源代码。

黑盒测试通常用于软件的系统测试、验收测试、功能和性能测试等方面,由测试人员来完成。白盒测试一般主要在单元测试、集成测试中采用,通常由开发人员来完成。

  1. 单元测试主要测试哪些内容?

单元测试的内容有模块接口测试,局部数据结构测试,边界条件测试,模块中所有独立的执行路径测试,模块的所有错误处理路径测试

  1. 什么是驱动模块,什么是桩模块?

驱动模块是模拟被测单元的上级模块,用户接收测试数据、启动被测模块和输出结果

桩模块是模拟被测单元所调用的模块

  1. 简述单元测试的过程。

单元测试过程可分为三个阶段:

计划阶段:完成单元测试计划,制定单元测试策略

设计实现阶段:建立单元测试坏境,完成测试设计和开发

执行评估阶段:执行单元测试用例,记录和评估测试结果

  1. 简述自顶向下和自底向上两种集成测试方法,并比较两者的优点和缺点

自顶向下的集成是从主控模块(主程序,即根结点)开始,按照系统程序结构,沿着控制层次从上而下,逐渐将各模块组装起来。在从上向下的集成测试过程中,需对那些未经集成的模块开发桩模块。在集成过程中,可以采用宽度优先或深度优先的策略向下推进。

自底向上的集成是从最底层模块(即叶子结点)开始,按照调用图的结构,从下而上,逐层将各模块组装起来。在从下而上的集成测试环境中,需对那些未经集成测试的模块开发驱动模块。

  1. 简述系统测试的概念。

系统测试是将已经过良好的集成测试的软件系统,作为整个计算机系统的一部分,与计算机硬件、外部设备、支持软件、数据以及人员等其他系统元素结合在一起,在实际使用环境下对计算机系统进行一系列的严格测试来发现软件中潜在缺陷,保证系统交付给用户之后能够正常使用

  1. 什么是回归测试?什么时候进行回归测试?

在更改完代码之后,用之前测试过的测试用例再次测试,验证此次更改没有破坏原先的代码

  1. 请简述一下α测试和β测试的区别。
  • α测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的测试。
  • β测试是软件在一个或多个用户的实际使用环境下进行的测试。开发者通常不在测试现场,Beta测试不能由程序员或测试员完成

【双拼输入法】自然码辅助码入门教程(辅助码表)

0 摘要

  • 本教程仅针对双拼中自然码方案的辅助码。
  • 在学习辅助码之前,你应该已经能够熟练使用双拼输入法。点击这里:http://www.liuchuo.net/archives/2786有一份双拼输入法入门指南
  • 使用辅助码需要您使用的输入法软件支持双拼且支持辅助码,我使用的是手心输入法mac版和ios版(手心输入法也支持win和安卓)
  • 使用辅助码与不使用辅助码不冲突,也就是说可以在想用辅助码的时候添加一个辅助码字母,不想用的时候就正常当作双拼没有辅助码的时候打字

    1 基本原理

汉语中同音字太多,用拼音打字重码率高,引入辅助码后,将汉字的偏旁部首发音的声母(比如:“像”的部首是“人”,“人”的声母是r)作为拼音之后的补充部分,所以输入”xdr”(xd是“像”的自然码双拼)就能自动筛选出符合声母是r的偏旁的字,“像”这个字也就自然出现在了候选词的第一个(前几个)。

2 部件拆分原理

2.1 独体字

一般是部首汉字,如:“金木水火土辶皿马皮日月目衣耳”等。独体字全部看成部首,不能进一步拆分出部件,只能由笔画构成。
自然码中的笔画码:
①以横竖起笔的在a键上: “一丨亅レ乛フㄥ”
②以点起笔的在 d 键上:“丶冫氵”【d就是点的意思啦】
③以撇起笔的在 p 键上:“丿彡”【p就是撇的意思啦】
举例:金【jnp,jn是金的自然码双拼,辅助码p是金的第一笔撇p】

2.2 有明显部首的汉字
“极、版、码、程、想、 福、袋、鳌、游、洪、递”,辅助码就是部首的声母。(注意:部首以新华字典上的为标准,不是以从上到下从左到右的顺序看部首的,比如“架”的部首是“木”)
举例:架【jwm,jw是架的自然码双拼,辅助码m是木的声母m】
说明:如果一个字有明显两个部首,比如“杏”的部首可以是“木”和“口”,所以随意哪个部首当作辅助码都行,也就是输入【xym】或【xyk】两者皆可。

2.3 不认识或不是整体字部件的汉字
如“录、芈、暨、 释、稽、躅、摭、谧、荔”,这类字的部首或部件可以用首笔画(尾部用末笔画)或能认识的汉字代替。 【比如 躅=足+虫 】


3 基础辅助形码表

【a】一 丨亅 レ 乛 フ ㄥ
【b】 八 丷 卜 冖 宀 匕 比  白 贝  疒  鼻
【c】 艹 卄 廾  廿 屮 卝 寸
【d】 丶 冫 氵刀刂  リ ㄍ ⺈ 丁 歹 癶
【e】 二 儿 阝耳 卩 
【f】 扌  丰  反  方  风  父  缶  巿
【g】 乚  ㄅ ㄋ 勹 弓 工 广 艮 戈 瓜 谷 革 骨 鬼 夬 罓
【h】 灬  火  禾  户  虍  黑  乊  厷
【i】 厂 川 巛 亍 车 虫 臣 辰 赤 齿 髟 豖
【j】 几  九  己  巾  斤  钅  金  见  臼    角
【k】 コ  凵  匚  冂  口  囗  丂
【l】 力  六  立  龙  耒  卤 鹿
【m】 木  门  毛  马  米  矛  母 皿  尨 麻  丏
【n】 女  牛  牜  ⺧  鸟
【o】 日  曰  月  目
【p】 ノ  彡  片  皮  疋  ⺪  攴
【q】 七  犭  犬  丌  欠 气  且
【r】 亻 人  入  肉
【s】 三  罒  巳  纟  糹  糸  厶  
【t】 土 田
【u】 水 手  食 飠饣示 礻山 石 尸 十 士 矢 殳 舌 身 豕 鼠
【v】 隹  ⺮  爫  爪  豸  止  至  舟
【w】 文  亠  攵  夂  夊  ㄨ  王  韦  瓦
【x】 彳 小    心  忄    血  彐  夕  习  西  辛
【y】 乙 又 已 讠言 幺 尤 尢 冘 衣 衤羊 牙 业 由 用 页 酉 鱼 雨 羽 聿 乑 乂
【z】 辶 廴 子 自 走 足 ⻊卆

4 需要特殊记忆的部件

“日、月、曰、目”辅助码为圆圆的【o】
“扌”辅助码为扶手的【f】
“ 彳”辅助码为行人的【x】
“一、丨、亅、乛”横竖折都是【a】
“亠”文字头【d】
“灬”火的变体【h】
“艮”根【g】
“肀”聿yu【y】
“耒”垒【l】——比如耕的双拼+辅助码是【ggl】
“爿”片【p】
“豕”适【u】
“髟”長chang的ch【i】
“隹”锥zhui的zh也就是【v】
“リ”刀的变体【d】
“”艹的变体【c】
“尢”尤的变体【y】
“丌”齐的变体【q】
“弋”弋读yi所以是【y】
“厶”私si的【s】
“ㄨ”叉x的【x】或者勿的【w】

【软件测试】简述自顶向下和自底向上两种集成测试方法

自顶向下的集成是从主控模块(主程序,即根结点)开始,按照系统程序结构,沿着控制层次从上而下,逐渐将各模块组装起来。在从上向下的集成测试过程中,需对那些未经集成的模块开发桩模块。在集成过程中,可以采用宽度优先或深度优先的策略向下推进。

自底向上的集成是从最底层模块(即叶子结点)开始,按照调用图的结构,从下而上,逐层将各模块组装起来。在从下而上的集成测试环境中,需对那些未经集成测试的模块开发驱动模块。

【软件测试】白盒测试与黑盒测试的区别(不同)

黑盒测试是将被测试软件看做一个黑盒子,只考虑系统的输入和输出,完全不考虑程序内部逻辑结构和处理过程。白盒测试是将黑盒子打开,研究源代码和程序内部的逻辑结构。

黑盒测试的依据是各阶段的需求规格说明。白盒测试的依据是程序源代码。

黑盒测试通常用于软件的系统测试、验收测试、功能和性能测试等方面,由测试人员来完成。白盒测试一般主要在单元测试、集成测试中采用,通常由开发人员来完成。