当前位置: 首页 > news >正文

温州网站制作套餐麒麟网站建设

温州网站制作套餐,麒麟网站建设,高校网站建设近期情况说明,旅游网站wordpress中国电子学会考评中心历届真题#xff08;含解析答案#xff09; C语言软件编程等级考试三级 2020年06月 编程题五道 总分:100分一、最接近的分数#xff08;20分#xff09; 分母不超过N且小于A/B的最大最简分数是多少? 时间限制: 1000ms 内存限制: 65536kb 输入…中国电子学会考评中心历届真题含解析答案 C语言软件编程等级考试三级 2020年06月 编程题五道 总分:100分一、最接近的分数20分 分母不超过N且小于A/B的最大最简分数是多少? 时间限制: 1000ms 内存限制: 65536kb 输入 三个正整数NAB相邻两个数之间用单个空格隔开。1ABN 1000。 输出 两个正整数分别是所求分数的分子和分母中间用单个空格隔开。 样例输入 100 7 13样例输出 50 93#include stdio.h // 引入C标准输入输出库用于scanf和printf函数// 定义common函数用于计算两个浮点数的最大公约数 double common(double x, double y) {double m x, n y, r;// 使用do-while循环计算最大公约数do {r (int)m % (int)n; // 求m除以n的余数m n; // 更新m为nn r; // 更新n为余数r} while (r ! 0); // 当余数为0时循环结束n中存放的就是最大公约数return m; // 返回最大公约数 }int main() {double sum, a, b, n, i, A, B, max 0, p, q;// 从标准输入读取n, a, b三个值scanf(%lf %lf %lf, n, a, b);// 外层循环B从n递减到1for (B n; B 1; B--) {// 内层循环A从1开始递增for (A 1; ; A) {// 如果A/B大于a/b则跳出内层循环if (A / B a / b)break;// 如果A/B在max和a/b之间则更新max并计算p和qif (A / B max A / B a / b) {max A / B;p A / common(A, B); // 计算A与B的最大公约数并求A除以最大公约数的结果q B / common(A, B); // 计算A与B的最大公约数并求B除以最大公约数的结果}}}// 输出p和q的值printf(%g %g, p, q);return 0; }/*代码的功能是寻找一对分数A/B和p/q其中A和B是整数且满足以下条件1. B n其中n是用户输入的一个整数。2. A/B在0和a/b之间其中a和b也是用户输入的两个整数且b不为0。3. A/B尽可能地接近a/b但不能超过它。4. p和q分别是A和B除以它们的最大公约数GCD的结果。common函数使用辗转相除法欧几里得算法来计算两个浮点数的最大公约数。main函数读取用户输入的n, a, b然后通过两个嵌套的for循环来找到满足条件的A和B。内层循环从A1开始递增并检查A/B是否满足条件。如果满足则更新max、p和q的值。当A/B超过a/b时内层循环结束。外层循环负责递减B的值直到B1。最后程序输出找到的p和q的值。注意代码中的sum和i变量未被使用可以删除。由于使用了double类型来表示分数可能会引入精度问题。在实际应用中可能需要使用其他方法来精确表示分数。common函数中的类型转换(int)m和(int)n可能会导致精度损失。在C语言中double转int会进行向下取整。如果m和n非常大或非常小这可能会导致问题。但在本例中由于m和n都是整数或整数的倒数所以这种转换应该是安全的。 */二、和数20分 给定一个正整数序列判断其中有多少个数等于数列中其他两个数的和。比如对于数列1234,这个问题的答案就是2因为3 2 14 1 3。 时间限制: 1000ms 内存限制: 65536kb 输入 共两行第一行是数列中数的个数n ( 1 n 100)第二行是由n个不大于10000的正整数组成的数列相邻两个整数之间用单个空格隔开。 输出 一个整数即数列中等于其他两个数之和的数的个数。 样例输入 4 1 2 3 4样例输出 2#include stdio.h // 引入标准输入输出库用于scanf和printf函数int main() { // 主函数入口int n; // 定义一个整数n用于存储数组的长度int a[100],count0; // 定义一个最大长度为100的整数数组a和一个计数器count并初始化count为0// 输入数据scanf(%d,n); // 从标准输入读取一个整数并存储到n中for(int i0; in; i){ // 遍历数组a用于输入n个整数scanf(%d,a[i]); // 从标准输入读取一个整数并存储到数组a的第i个位置}// 枚举所有数for(int i0; in; i){ // 遍历数组aint f0; // 定义一个标志变量f用于表示当前数是否可以表示为其他两数之和初始化为0表示不可以for(int c0; cn; c){ // 遍历数组a用于寻找可能的加数cif(ci) // 如果c和i相等即不和自己判断continue; // 则跳过当前循环继续下一次循环for(int d0; dn; d){ // 遍历数组a用于寻找可能的加数dif(di || dc) // 如果d和i或d和c相等continue; // 则跳过当前循环继续下一次循环if(a[i]a[c]a[d]) // 如果a[i]等于a[c]和a[d]的和f1; // 则将标志变量f设置为1表示可以表示为其他两数之和}}// 统计个数if(f) // 如果f为1count; // 则计数器count加1}printf(%d,count); // 输出计数器count的值即可以表示为其他两数之和的数的个数return 0; // 主函数返回0表示程序正常结束 }/*需要注意的是这段代码的时间复杂度是O(n^3)在n较大时可能会非常慢。此外由于它使用了三重循环对于每个数都检查了其他所有数对因此效率不高。在实际应用中可能需要考虑更高效的算法来解决这个问题。 */三、吃糖果20分 名名的妈妈从外地出差回来带了一盒好吃又精美的巧克力给名名盒内共有N块巧克力20N0)。妈妈告诉名名每天可以吃一块或者两块巧克力。假设名名每天都吃巧克力问名名共有多少种不同的吃完巧克力的方案。 例如:如果N1则名名第1天就吃掉它共有1种方案; 如果N2则名名可以第1天吃1块第2天吃1块也可以第1天吃2块共有2种方案; 如果N3则名名第1天可以吃1块剩2块也可以第1天吃2块剩1块所以名名共有213种方案; 如果N4则名名可以第1天吃1块剩3块也可以第1天吃2块剩2块共有325种方案。 现在给定N请你写程序求出名名吃巧克力的方案数目。 时间限制: 1000ms 内存限制: 65536kB 输入 输入只有1行即整数N。 输出 输出只有1行即名名吃巧克力的方案数。 样例输入 4样例输出 5#include stdio.h // 引入C标准输入输出库用于scanf和printf函数int main() { // 主函数入口int n; // 定义一个整数变量n用于存储用户要查询的斐波那契数列的项数int a[20]; // 定义一个整数数组a大小为20用于存储斐波那契数列的前20项// 输入数据scanf(%d,n); // 从标准输入读取一个整数并存储在变量n中// 初始化斐波那契数列的前两项a[0]1; // 斐波那契数列的第0项是1a[1]2; // 斐波那契数列的第1项是2// 计算斐波那契数列的剩余项for(int i2; in; i){ // 从第2项开始计算到第n-1项a[i]a[i-1]a[i-2]; // 每一项都是前两项的和}// 输出斐波那契数列的第n项printf(%d,a[n-1]); // 注意数组是从0开始索引的所以第n项实际上是a[n-1]return 0; // 主函数返回0表示程序正常结束 } /*注意虽然代码逻辑是正确的但是有一个小问题。如果用户输入的n大于20那么代码将会访问数组a的越界索引这会导致未定义的行为。在实际应用中应该添加对n的合法性检查或者动态分配数组的大小以适应更大的n值。 */ 四、汉诺塔问题20分 有三根杆子ABC。A杆上有N个(N1)穿孔圆盘盘的尺寸由下到上依次变小。 要求按下列规则将所有圆盘移至C杆:每次只能移动一个圆盘;大盘不能叠在小盘上面。提示:可将圆盘临时置于B杆也可将从A杆移出的圆盘重新移回A杆但都必须遵循上述两条规则。 如何移?最少要移动多少次? 时间限制: 1000ms 内存限制: 65536kb 输入 输入为一个整数后面跟三个单字符字符串。 整数为盘子的数目后三个字符表示三个杆子的编号。 输出 输出每一步移动盘子的记录。一次移动一行。 每次移动的记录为例如3:a-b的形式即把编号为3的盘子从a杆移至b杆。 我们约定圆盘从小到大编号为12,…n。即最上面那个最小的圆盘编号为1最下面最大的圆盘编号为n。 样例输入 3 a b c样例输出 1:a-c 2:a-b 1:c-b 3:a-c 1:b-a 2:b-c 1:a-c#include stdio.h // 引入C标准输入输出库用于scanf和printf函数// 定义find函数用于将n个盘子从a柱移动到c柱以b柱作为辅助 void find(int n, char a, char b, char c) {if(n 1) { // 如果只有一个盘子printf(%d:%c-%c\n, n, a, c); // 直接从a柱移动到c柱return; // 返回}find(n - 1, a, c, b); // 先将n-1个盘子从a柱移动到b柱以c柱作为辅助printf(%d:%c-%c\n, n, a, c); // 然后将最后一个盘子从a柱移动到c柱find(n - 1, b, a, c); // 最后将n-1个盘子从b柱移动到c柱以a柱作为辅助 }int main() {int n; // 定义盘子数量char a, b, c; // 定义三个柱子的名称scanf(%d %c %c %c, n, a, b, c); // 从用户处获取输入盘子数量和三个柱子的名称find(n, a, b, c); // 调用find函数开始汉诺塔问题的求解return 0; // 程序结束 }/*这段代码使用了递归的方式来解决汉诺塔问题。对于n个盘子它首先将n-1个盘子从起始柱子移动到过渡柱子然后将最大的盘子从起始柱子移动到目标柱子最后再将n-1个盘子从过渡柱子移动到目标柱子。这个过程重复进行直到所有的盘子都被移动到目标柱子。 */五、文件结构“图“20分 在计算机上看到文件系统的结构通常很有用。Microsoft Windows上面的explorer程序就是这样的一个例子。但是在有图形界面之前没有图形化的表示方法的那时候最好的方式是把目录和文件的结构显示成一个图的样子而且使用缩排的形式来表示目录的结构。比如: ROOT | dir1 | file1 | file2 | file3 | dir2 | dir3 | file1 file1 file2这个图说明:ROOT目录包括三个子目录和两个文件。第一个子目录包含3个文件第二个子目录是空的第三个子目录包含一个文件。 时间限制: 1000ms 内存限制: 65536kb 输入 你的任务是写一个程序读取一些测试数据。每组测试数据表示一个计算机的文件结构。每组测试数据以’*‘结尾而所有合理的输入数据以’#‘结尾。一组测试数据包括一些文件和目录的名字虽然在输入中我们没有给出但是我们总假设ROOT目录是最外层的目录)。在输入中,以’]‘表示一个目录的内容的结束。目录名字的第一个字母是’d’文件名字的第一个字母是’f’。文件名可能有扩展名也可能没有(比如fmyfile.dat和fmyfile)。文件和目录的名字中都不包括空格,长度都不超过30。一个目录下的子目录个数和文件个数之和不超过30。 输出 在显示一个目录中内容的时候先显示其中的子目录(如果有的话)然后再显示文件(如果有的话)。文件要求按照名字的字母表的顺序显示目录不用按照名字的字母表顺序显示只需要按照目录出现的先后显示)。对每一组测试数据我们要先输出DATA SET x: ,这里x是测试数据的编号(从1开始)。在两组测试数据之间要输出一个空行来隔开。 你需要注意的是我们使用一个’|和5个空格来表示出缩排的层次。 样例输入 file1 file2 dir3 dir2 file1 file2 ] ] file4 dir1 ] file3 * file2 file1 * #样例输出 DATA SET 1: ROOT | dir3 || dir2 || file1 || file2 | dir1 file1 file2 file3 file4DATA SET 2: ROOT file1 file2提示 一个目录和它的子目录处于不同的层次 一个目录和它的里面的文件处于同一层次 #includeiostream // 引入输入输出流库 #includeset // 引入集合库 #includestring // 引入字符串库using namespace std; // 使用标准命名空间int flag; // 定义一个全局变量flag用于标记是否已经打印了ROOT// 定义一个函数printkg用于打印指定长度的竖线和空格 void printkg(int l){for(int i 0; i l; i)printf(| ); }// 定义一个函数pf用于处理用户的输入 void pf(int l){string str; // 定义一个字符串变量str用于存储用户的输入setstring dir; // 定义一个字符串集合dir用于存储目录结构if(!flag){ // 如果flag为0即未打印ROOTprintf(ROOT\n); // 打印ROOTflag 1; // 将flag设置为1表示已经打印了ROOT}while(cin str){ // 循环读取用户的输入switch(str[0]){ // 根据输入的第一个字符进行不同的操作case f: // 如果输入的第一个字符是fdir.insert(str); // 将整个输入字符串添加到目录集合中break; // 结束switch语句case d: // 如果输入的第一个字符是dprintkg(l); // 打印指定长度的竖线和空格cout str endl; // 打印输入的字符串表示一个新的目录pf(l 1); // 递归调用pf函数增加层级break; // 结束switch语句case ]: // 如果输入的第一个字符是]for(setstring::iterator i dir.begin(); i ! dir.end(); i){ // 遍历目录集合printkg(l - 1); // 打印指定长度的竖线和空格比当前层级少一级cout *i endl; // 打印目录集合中的每个字符串表示返回上一级目录}return; // 结束函数case *: // 如果输入的第一个字符是*for(setstring::iterator i dir.begin(); i ! dir.end(); i)cout *i endl; // 打印目录集合中的所有字符串表示列出当前目录的所有文件和子目录cin.get(); // 读取一个字符可能是为了消耗输入流中的换行符或其他字符return; // 结束函数}} }int main(){int n 1; // 定义一个变量n用于表示数据集的编号while(cin.peek() ! #){ // 循环读取输入直到遇到#字符为止printf(DATA SET %d:\n, n); // 打印数据集的编号flag 0; // 将flag重置为0表示未打印ROOTpf(1); // 从第一层级开始处理用户的输入n; // 增加数据集的编号printf(\n); // 打印一个空行用于分隔不同的数据集}return 0; // 程序结束 }/*这个程序通过用户输入的不同字符来模拟目录树的操作如创建新目录、返回上一级目录、列出当前目录的内容等。程序使用了一个字符串集合来存储目录结构并使用递归函数来处理不同层级的目录操作。 */
http://www.pierceye.com/news/553254/

相关文章:

  • 淘宝接单做网站wordpress能做企业网站吗
  • 网站建设运营公众号运营合同app网站开发书籍下载
  • 网站seo流程网站开发开账务处理
  • 婚介网站方案长沙网络公司电话
  • 自助网站搭建系统做网站接电话一般要会什么
  • 雷州网站建设公司网站建设与管理说课ppt
  • 问答类网站怎么做wordpress 调取页面缩略图
  • 做电影资源网站手机版wordpress实例配置
  • 广西网站建设方案品牌官网方案
  • 游戏工作室网络组建方案seo81
  • 搭建个人网站的步骤温州专业微网站制作价格
  • 网站怎么做充值系统php图书管理系统网站开发
  • 多商家网站建设自助建站系统源码 资源网
  • 广州番禺网站制作公司哪家好文章网站建设
  • 漯河网站建设e辽宁身营商环境建设局网站
  • 营销网站建设套餐企业信息公示管理系统
  • 网站布局设计排版网站外部链接做多少合适呢
  • 成品网站 源码1688上海网站建设 找德华专业
  • 网站建设费用申报佛山电脑培训班哪里有
  • 免费网站服务器厦门网站建设推广哪家好
  • 青海海东平安县建设局网站如何建设旅游网站
  • 成都响应式网站开发百度里面的站长工具怎么取消
  • 手机购物网站设计广告设计有限公司
  • 新手制作网站wordpress lamp 教程
  • 响应式的网站做优化好吗wordpress删掉自豪
  • 做网站第一步创建网站根目录
  • vs2010做网站前台专门做试题的网站
  • 柳州集团学校网站建设做美食推广的网站
  • 网站开发 发送邮件功能深圳做分销商城网站
  • 网站备案 取消网上智慧团建官网入口