




免费预览已结束,剩余19页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言作业解析 第三弹 寄语 本次作业比较变态 涉及到一些初等的算法 11级第四次作业 删数问题1 问题描述 输入一个高精度的大正整数S S最长可达240位 去掉其中任意N位数字后剩下的数字按原次序组成一个新的正整数S 编程对给定的N和S 寻找一种方案使得剩下的数字组成的新数S 最小 输入形式 输入有两行 1 第一行是大整数S 其中S最长可达240位 2 第二行是整数N S N均以非0数字开头 输出形式 输出有一行 是在S中删除N位后所得的最小数字S 样例输入1 1785434 样例输出1 13 样例输入2 10021 样例输出2 002 样例说明 样例1中输入整数S 178543 N 4 要求在178543中删除4位 使剩下的数字最小 正确答案为S 13 样例2中输入整数S 1002 N 1 删完一位后S 002 而不是2 即2之前的0也必须输出 运行时限 程序一次运行的最长时间限制在15秒内 超出则认为程序错误 评分标准 该题要求输出一个大整数的各位数字 结果完全正确得20分 每个测试点4分 上传C语言文件名为delete c 本题解析 这道题主要的障碍存在于两个方面 1 怎么读入2 怎么删 读入的话简单的说就是将一个数以字符串的形式存储下来然后通过字符串处理对数字的每一位进行操作 删除的方式比较精髓 这里介绍一个比较容易懂的方法 每次删除都搜索第一个第i位比第i 1位大的 然后把第i位删掉 重复m次就可以得到最优解了 include includeintmain chars 245 inti j k intn m scanf s s scanf d 输出 11级第四次作业 扩展字符2 问题描述 编写一函数expand s1 s2 用以将字符串s1中的缩记符号在字符串s2中扩展为等价的完整字符 例如将a d扩展为abcd 该函数可以处理大小写字母和数字 并可以处理a b c a z0 9与 a z等类似的情况 在main函数中测试该函数 从键盘输入包含缩记符号的字符串 然后调用该函数进行扩展 输出扩展结果 教材P63 Exercise3 3 注意 待扩展字符串中有可能包含空格 例如 a dx z应扩展成 abcdxyz 所以读入待扩展字符串时 应能够读入包含空格的字符串 只要缩记符号 之后的字符比之前的字符的ASCII码值大 就要将它们之间的所有字符扩展出来 例如 Z a之间的字符也要扩展出来 特殊情况 a b c将被扩展为 abc a a将被扩展为 a a 输入形式 从键盘输入包含扩展符的字符串 输出形式 输出扩展后的字符串 输入样例 a c u B 输出样例 abcdefghijklmnopqrstu B 本题解析 这个题目乍一看比较麻烦 其实是这次作业中比较简单的题目之一 因为特殊的字符只有一个 那就是 只要判断好 这个题目就完成了 这个方法比较朴素 就是用一个flag来表示前一个字符是不是 如果不是 那么就输出这个字符 如果是的话就进行判断 判断这个字符跟 前字符的关系 如果这个字符 前字符 那就输出 在输出这个字符 否则的话就从 前字符到这个字符循环输出即可 include includevoidexpands chars1 chars2 intmain chars1 200 s2 200 gets s1 读入 expands s1 s2 printf s s2 这个程序写的微微有些长 下页还有 voidexpands chars1 chars2 intflag charj inti l intsum 1 l strlen s1 确定字符串长度 flag 0 for i 0 i l i if s1 i flag 1 continue 如果这个字符是 那么将flag赋值为1 if flag 如果flag为0的话 sum s2 sum s1 i 直接输出 elseif s1 i s1 i 2 否则如果这个字符比 前的字符小 sum 2 s2 sum 1 s2 sum s1 i 就先打一个 再打这个字符 else 否则的话就应该从前一个字符打印到这个字符 for j s1 i 2 1 j s1 i j 这里注意 前一个字符已经存在于数组中了就不需要再打印了 所以是从s1 i 2 1开始而不是s1 i 2 sum s2 sum j flag 0 s2 sum 1 0 在字符串的最后放一个 0 表示结束 寄语 这个题写起来比较繁琐 可能理解起来有些困难 有能力的同学可以分步调试一下来查看结果 实在不会的话就去中408找我吧 11级第四次作业 矩阵运算3 问题描述 对于多个N阶矩阵 依次进行加 减运算 输入形式 从标准输入读取输入 第一行只有一个整数N 1 N 10 代表矩阵的阶数 接下来是一个矩阵 是N行 每行有N个整数 可能是正 负整数 是矩阵的所有元素 然后一行只含一个字符 或 代表加 减操作 然后用同样的方式输入另一个矩阵 后续仍然是运算符和矩阵 直至运算符为 时停止计算 将结果输出 输出形式 向标准输出打印矩阵的操作结果 输出N行 每行对应矩阵在该行上的所有元素 每一行末均输出一个回车符 每个元素占5个字符宽度 包括负号 向右对齐 不足部分补以空格 输入样例 31 2728 5369 357 1263710 1 2728 5369 输出样例 下图中 代表空格 3 5 7 1 2 6 3 7 10 本题解析 这个题 乍一看吓一跳 其实仔细读题以后发现这个题是比较水的 首先是题目叙述问题 样例输出中 下图中 代表空格 应该是打错了 其实是 代表空格 然后矩阵加法就是把矩阵中对应的元素相加 减法就是对应的元素相减 比如说答案中第一行第一个数的3就是1 3 1得到的 includeintmain intn ints 10 10 inti j k charch scanf d if ch for i 0 i n i for j 0 j n j printf 5d s i j 5d 输出5位位数不足的用空格补齐 printf n return0 退出 for i 0 i n i for j 0 j n j 这里是进行加减操作 scanf d 由于题目难度增加 可能有些程序不能够在一页以内打完 所以可能看起来稍微费劲 见谅 11级第四次作业 魔方阵4 问题描述 输入一个自然数 1 N 9 要求输出如下的魔方阵 即边长为2 N 1 在中心出现一次 其余位置上的数字从外向中心逐渐增大 N 3时 1111112221123211222111111N 4时 1111111122222112333211234321123332112222211111111 输入形式 从标准输入读取一个整数N 输出形式 向标准输出打印结果 输出符合要求的方阵 每个数字占一个字符宽度 在每一行末均输出一个回车符 本题解析 这个题有多种做法 其中一种做法是将这个大矩阵看做是n个正方形叠放在一起的 最后看每个位置的重叠次数就可以了 面积重叠的计算方法也可以去看第三次作业的矩阵相交的那个题 基本一样 includeintmain intn inti j k ints 20 20 scanf d 11级第四次作业 文件拷贝25 问题描述 写一程序将一个文件fcopy in拷贝至另一个文件fcopy out 其中在所拷贝的文件中 多个连续空白符 包括空格符 制表符 只拷贝一个空格符 其它字符不变 输入形式 源文件名和目标文件名分别为fcopy in和fcopy out 程序将从当前目录下读取fcopy in文件 输出形式 将fcopy in文件内容拷贝至当前目录下的fcopy out文件中 在所拷贝的文件中 多个连续空白符 包括空格符 制表符 只拷贝一个空格符 若非空白符之间有一个制表符 则该制表符也要替换为空格符 其它字符不变 输入样例 假如文件fcopy in中内容如下 Alcatelprovidesend to endsolutions 输出样例 输出文件fcopy out中内容为 Alcatelprovidesend to endsolutions 样例说明 将文件fcopy in拷贝到fcopy out 同时做适当的转换 评分标准 其中在所拷贝的文件中 多个连续空白符 包括空格符 制表符 只拷贝一个空格符 其它字符不变 完全符合要求得20分 每个测试点4分 提交程序名为copy c 本题解析 这里涉及到文件输入输出 惭愧的是 某个人上课没好好听文件 就用了一种比较方便的方法 先介绍一下 使用与否看各位喜好了 不需要指针 scanf不用改成fscanf includeIntmain freopen test in r stdin 打开输入文件 freopen test out w stdout 打开输出文件 exit 0 关文件 本题解析 这次是真的解析 这个题目比较好思考 就是一个字符一个字符的读入 如果这个字符是空格或者 t 的话就看它的上一个字符是不是空格或者 t 如果是的话就不输出 否则输出一个空格 如果这个字符不是空格或者 t 那么就直接将这个字符输出就可以了 include includeintmain freopen fcopy in r stdin freopen fcopy out w stdout chars s1 inti s getchar while s EOF 没有读完的时候继续读 if s s t if s1 11级第四次作业 括号匹配6 问题描述 假设一个输入字符串中包含圆括号 方括号和花括号三种类型的括号 以及其它一些任意字符 编写程序 判别串中的括号是否正确匹配 即 1 各种左 右括号的个数要一致 2 不能先出现右括号 3 其它规则暂不考虑 例如 ad ce ef 认为是正确的 输入形式 从当前目录下correct in文件中读入一行字符串 字符串最大长度80 不含空格 输出形式 输出到当前目录下correct out文件中 输出只有一个单词 如果括号匹配则输出 True 到文件中 否则输出 False 在输出末尾要有一个回车符 本题解析 这个题目由于是一个不完全的匹配也就是说 是合法的那么只需要三个变量来分别计算圆括号方括号和花括号 遇到左括号的时候那么对应的变量值加一 遇到右括号的时候对应的变量值减一 如果出现了某个变量值为 1的时候也就是说没有出现左括号就出现右括号的时候表示不匹配 或者到了最后三个变量值中有一个不为0也就是说左右括号数量不相等的时候也表示不匹配 否则就是匹配的 include includeintmain freopen correct in r stdin freopen correct out w stdout inta 0 b
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 旅游民宿退房协议范本及清洁维护标准
- 理发店员工招聘与职业规划辅导劳务合作合同
- 跨学科研究生委托培养与技术转移转化合同范本
- 产业园区物业合同终止及产业创新服务协议
- 建筑工程合同审计与财务管理要点解析
- 企业核心技术人员竞业禁止补偿标准合同范本
- 离婚后共同财产分割与同居期间居住权益协议范本
- 签订国际贸易合同时的汇率风险管理与法律应对
- 离婚财产分割补充协议涉及遗产继承权与分割调整
- 通信工程施工合同签订所需的技术标准及通信保障协议
- 中医基础理论经络培训课件
- 亚麻籽油在营养保健领域的应用考核试卷
- 《雷军的管理哲学》课件
- 尿液标本临床微生物实验室检验操作指南
- 电影《白日梦想家》课件
- 正常人体结构课程标准
- 员工上下班交通安全培训课件
- GB/T 15843.2-2024网络安全技术实体鉴别第2部分:采用鉴别式加密的机制
- 初中语文八年级上册13 唐诗五首 《钱塘湖春行》活动式公开课一等奖创新教学设计
- 职业技能大赛-电工职业技能竞赛理论题库(附参考答案)
- 基坑工程质量保证措施
评论
0/150
提交评论