




已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 判断电话号码是否合法 要注意情况包含 有可能会同时出现几种不好的情况 要按照顺序输出错误 不能同时 输出好几种错误 应该是这样包含 先判断长度是否符合 再判断是否以 86 打头 再判断 有无其他字符 int fun char num char p num int n strlen num if n 13 if p 8 else return 2 if p 0 return 0 else return 3 else return 1 int main char num 87139a3887671 int k fun num cout k 0i j if arry1 i arry2 j k return k int main int num1 1 3 5 int num2 77 21 1 3 5 int k f 3 num1 5 num2 cout k endl return 0 3 约瑟夫问题 问题描述 输入一个由随机数组成的数列 数列中每个数均是大于0的整数 长度已知 和初始计数 值m 从数列首位置开始计数 计数到m后 将数列该位置数值替换计数值m 并将数列该位 置数值出列 然后从下一位置从新开始计数 直到数列所有数值出列为止 如果计数到达 数列尾段 则返回数列首位置继续计数 请编程实现上述计数过程 同时输出数值出列的 顺 比如 输入的随机数列为 3 1 2 4 初始计数值m 7 从数列首位置开始计数 数值3所 在位置 第一轮计数出列数字为2 计数值更新m 2 出列后数列为3 1 4 从数值4所在位置从新开 始计数 第二轮计数出列数字为3 计数值更新m 3 出列后数列为1 4 从数值1所在位置开始计数 第三轮计数出列数字为1 计数值更新m 1 出列后数列为4 从数值4所在位置开始计数 最后一轮计数出列数字为4 计数过程完成 输出数值出列顺序为 2 3 1 4 要求实现函数 void array iterate int len int input array int m int output array 输入 int len 输入数列的长度 int intput array 输入的初始数列 int m 初始计数值 输出 int output array 输出的数值出列顺序 示例 输入 int input array 3 1 2 4 int len 4 m 7 输出 output array 2 3 1 4 函数如下 void fun int len int a1 int len2 int a2 int n 0 i 1 k 1 m len2 while 1 for int j 0 j m i i 1 len 注意这个是 不要写成 if a1 i 0 j m a1 i a2 n a1 i a1 i 0 if k len break k 4 简单四则运算 问题描述 输入一个只包含个位数字的简单四则运算表达式字符串 计算该表达式的值 注 1 表达式只含 四则运算符 不含括号 2 表达式数值只包含个位整数 0 9 且不会出现0作为除数的情况 3 要考虑加减乘除按通常四则运算规定的计算优先级 4 除法用整数除法 即仅保留除法运算结果的整数部分 比如8 3 2 输入表达式保证无0 作为除数情况发生 5 输入字符串一定是符合题意合法的表达式 其中只包括数字字符和四则运算符字符 除 此之外不含其它任何字符 不会出现计算溢出情况 要求实现函数 int calculate int len char expStr 输入 int len 字符串长度 char expStr 表达式字符串 输出 无 返回 计算结果 示例 1 输入 char expStr 1 4 5 8 3 函数返回 19 2 输入 char expStr 8 3 3 函数返回 6 简化版的四则运算 没有括号 只有加减乘除四种运算 int fun char a int len 字符数组和字符数组的长度 int num 20 char str 20 int k1 0 k2 0 int data 0 for int i 0 i 0 if a i a i str k2 a i if a i num k1 1 num k1 1 a i 1 0 i 遇见 就运算 结果保存在数 组中 if a i num k1 1 num k1 1 a i 1 0 i int temp num 0 int j 0 两个数组只剩下数组和加减运算符 while j k2 顺序运算 if str j temp temp num j 1 else if str j temp temp num j 1 j return temp int main har a 3 3 7 4 3 int k fun a 9 cout k endl return 0 函数实现 2 中序表达式转换为后序表达式 使用算法实现 int isp char c int p switch c case case p 1 break case case p 0 break return p char transf int len char a char b int k 0 stack s1 for int i 0 i 0 else if s1 empty s1 push a i else while isp a i isp s1 top b k s1 top s1 pop s1 push a i while s1 empty b k s1 top s1 pop b k 0 return b void fun char c stack s2 char p1 p2 if s2 empty p1 s2 top s2 pop else pos false cout kongzhan endl if s2 empty p2 s2 top s2 top else pos false cout kongzhan endl if pos true switch c case s2 push p1 p2 break case s2 push p2 p1 break case s2 push p1 p2 break case s2 push p2 p1 break void eval char a stack s2 for int i len i len i switch a i case case case case fun a i break default s2 push a i 0 break int main char a 1 4 5 8 3 int len strlen a char b 20 char q transf 9 a b cout q endl return 0 5 一副牌中发五张扑克牌给你 让你判断数字的组成 有以下几种情况 1 四条 即四张一样数值的牌 牌均不论花色 2 三条带一对 3 三条带两张不相同数值的牌 4 两对 5 顺子 包括 10 J Q K A 6 什么都不是 7 只有一对 思路 将数组排序 统计相同的数字的个数 再分情况讨论 void sort int a int temp for int i 0 i 5 i for int j 0 ja j temp a i a i a j a j temp void test int a int b new int 5 int k 1 for int i 0 i 5 i b i a i for int j 0 j 4 j if a j a j 1 k if k 4 if b 1 b 3 cout 四条 endl else cout 三条带一对 endl if k 3 if b 1 b 2 b 2 b 3 cout 三条带两个不同的牌 endl else cout 两对 endl if k 2 cout 一对 endl if k 1 if b 4 b 0 4 else cout 什么都不是 endl int main int a 1 2 4 4 4 test a return 0 6 求两个数组的和差就是去掉两个数组中相同的元素然后将两个数组中的元素存放在一个 新的数组中 按大小顺序排序 思路 将数组 A 和数组 B 分别进行排序 然后将 A 与 B 进行比较 重复的跳过去 不重复 的赋给数组 C 依次输出 while i la sub j else if aa i bb j i j for i la i c sub aa i sub for j next while p2 p3 p2 next p2 next p1 p1 p2 p2 p3 head next NULL head p1 return head 8 将一个字符串的元音字母复制到另一个字符串 并排序 30 分 问题描述 有一字符串 里面可能包含英文字母 大写 小写 数字 特殊字符 现在 需要实现一函数 将此字符串中的元音字母挑选出来 存入另一个字符串中 并对字符串 中的字母进行从小到大的排序 小写的元音字母在前 大写的元音字母在后 依次有序 说明 1 元音字母是 a e i o u A E I O U 2 筛选出来的元音字母 不需要剔重 最终输出的字符串 小写元音字母排在前面 大写元音字母排在后面 依次有序 要求实现函数 void sortVowel char input char output using namespace std void fun char a char s 提取元音字母 放入数组 int i 0 n 0 while a i 0 if a i a a i e a i i a i o a i u s n a i else if a i A a i E a i I a i O a i U s n a i i char temp 将数组排序 for int i 0 i n 1 i for int j 0 js j 1 temp s j s j s j 1 s j 1 temp int k 0 定位大写字母的最后位置 while s k A for int j 0 j n j 输出原字符串 cout s j cout endl char p new char 20 将字符串变换位置 输出 char q p for int i k i n i p s i p for int j 0 j k j p s j p p 0 cout q endl int main char str HaJsdStOoAOeINaPQaWEiAIiO char s 20 fun str s return 0 9 身份证号码合法性判断 我国公民的身份证号码特点如下 1 长度为 18 位 2 第 1 17 位只能为数字 3 第 18 位可以是数字或者小写英文字母 x 4 身份证号码的第 7 14 位表示持有人生日的年 月 日信息 例如 511002 19880808 0111 或 511002 19880808011x 请实现身份证号码合法性判断的函数 除满足以上要求外 需要对持有人生日的年 月 日信息进行校验 年份大于等于 1900 年 小于等于 2100 年 需要考虑闰年 大小月的情 况 所谓闰年 能被 4 整除且不能被 100 整除 或 能被 400 整除的年份 闰年的 2 月份为 29 天 非闰年的 2 月份为 28 天 其他情况的合法性校验 考生不用考虑 函数返回值 1 如果身份证号合法 返回 0 2 如果身份证号长度不合法 返回 1 3 如果身份证号第 1 17 位含有非数字的字符 返回 2 4 如果身份证号第 18 位既不是数字也不是英文小写字母 x 返回 3 5 如果身份证号的年信息非法 返回 4 6 如果身份证号的月信息非法 返回 5 7 如果身份证号的日信息非法 返回 6 请注意闰年的情况 要求实现函数 int verifyIDCard char input 示例 1 输入 511002 111222 函数返回值 1 2 输入 511002 abc123456789 函数返回值 2 3 输入 511002 19880808123a 函数返回值 3 4 输入 511002 188808081234 函数返回值 4 5 输入 511002 198813081234 函数返回值 5 6 输入 511002 198808321234 函数返回值 6 7 输入 511002 1989 0229 1234 函数返回值 7 8 输入 511002 198808081234 函数返回值 0 int fun char str int year 0 month 0 day 0 if strlen str 1 18 1 for int i 0 i 0 i1900i0i 14 i day day 10 str i 0 if day 31 6 if year 4 0 else if year 4 0 else if year 4 4 else return 6 else return 6 else return 5 else return 4 else return 3 else return 1 int main char a 340621198608377817 int k fun a cout k endl return 0 10 比较一个数组的元素 是否为回文数组 判断是否是回文数组 bool fun char a int n strlen a int i 0 j n 1 while i j if a i a j return false i j return true 11 求两个数组的和差 就是去掉两个数组中相同的元素 然后将两个数组中的元素存放在 一个新的数组中 且数组A中元素要在B数组元素之前 思路 利用循环比较 将相同的数字的标记为0 再赋给数组C int main int a 1 3 5 7 9 12 13 int s 1 3 5 6 7 8 9 int len1 sizeof a sizeof int int len2 sizeof s sizeof int for int i 0 i len1 i for int j 0 j len2 j if a i s j a i 0 s j 0 int t 30 int k 0 i 0 j 0 while i len1 if a i 0 t k a i i while j len2 if s j 0 t k s j j for int i 0 i k i cout t i return 0 12 选秀节目打分 分为专家评委和大众评委 score 数组里面存储每个评委打的分数 judge type 里存储与 score 数组对应的评委类别 judge type 1 表示专家评委 judge type 2 表示大众评委 n表示评委总数 打分规则如下 专家评委和大众评委 的分数先分别取一个平均分 平均分取整 然后 总分 专家评委平均分 0 6 大 众评委 0 4 总分取整 如果没有大众评委 则 总分 专家评委平均分 总分取整 函数最终返回选手得分 int cal score int score int judge type int n int sum1 0 sum2 0 avg1 0 avg2 0 int m 0 k 0 for int i 0 i n i if judge type i 1 sum1 sum1 score i m if judge type i 2 sum2 sum2 score i k avg1 sum1 m avg2 sum2 k return int avg1 0 6 avg2 0 4 int main int input 3 6 1 9 7 8 int output 1 1 2 1 2 2 int n sizeof input sizeof int int p cal score input output n cout p endl return 0 13 给定一个数组input 如果数组长度n为奇数 则将数组中最大的元素放到 output 数组最中间的位置 如果数组长度n为偶数 则将数组中最大的元素放到 output 数组 中间两个位置偏右的那个位置上 然后再按从大到小的顺序 依次在第一个位置的两边 按照一左一右的顺序 依次存放剩下的数 例如 input 3 6 1 9 7 output 3 7 9 6 1 input 3 6 1 9 7 8 output 1 6 8 9 7 3 函数接口 void sort int input int n int output using namespace std void sort int input int n int output int i 0 j n 1 int temp for int i 0 i n 1 i for int j 0 jinput j 1 temp input j input j input j 1 input j 1 temp int k 0 i 0 j n 1 while i j output i input k output j input k cout output 3 endl int main int input 3 6 1 9 7 8 int output 20 sort input 6 output return 0 14 操作系统任务调度问题 操作系统任务分为系统任务和用户任务两种 其中 系统任 务的优先级 50且 255 优先级大于255的为非法任务 应 予以剔除 现有一任务队列task 长度为n task中的元素值表示任务的优先级 数值越 小 优先级越高 函数scheduler实现如下功能 将task 中的任务按照系统任务 用户 任务依次存放到 system task 数组和 user task 数组中 数组中元素的值是任务在 task 数组中的下标 并且优先级高的任务排在前面 数组元素为 1表示结束 task 0 30 155 1 80 300 170 40 99 system task 0 3 1 7 1 user task 4 8 2 6 1 函数接口 void scheduler int task int n int system task int user task int p new int n int i j temp int k1 0 k2 0 for i 0 i n i p i i for i 0 i n 1 i for j 0 j task p j 1 temp p j p j p j 1 p j 1 temp 此处是排下标 for j 0 j n j if task p j 50 s data k p next s p s head head next 开始的的时候head是表头节点 现在是第一个节点 p next NULL return head node reverse node head node p1 p2 p3 p1 head p2 head next while p2 p3 p2 next p2 next p1 p1 p2 p2 p3 head next NULL head p1 return head node del node head int num node p s p head while p data nump p next if p data num if p head head p next delete p else s next p next delete p else cout 未找到要删除的节点 data num while p datanext NULL s p p p next if numdata if p head t next p head s else t next p s next t else 把插入点定位在了链尾 p next t t next NULL return head node sort node head node p int temp int n sizeof head sizeof node if head NULL p head for int i 0 i n i p head for int j 0 jdata p next data temp p data p data p next data p next data temp return head 16 栈的基本操作 struct list int data struct node next node void initstack node void push node p new node p data num p next top top p void pop node int n top data top top next cout n i j if s j s j 1 b 1 temp s j s j s j 1 s j 1 temp for j i js j 1 b 1 temp s j s j s j 1 s j 1 temp i 18 扫描数组 求出最大的增量长度 int main int a 7 2 3 4 5 6 8 int n 7 int max 1 len 1 for int i 1 i a i 1 len continue 跳出本次循环 继续以下的部分 if max len max len len 1 cout max endl return 0 19扫描整数序列 求出最大长度子序列 思路 定义两个游标i j分别在数组的左右 从两边收缩 计算i j之间数组的总和 然后 比较 求出最大的记录 并将此时的i j 记录下来 int main int s 1 20 3 49 59 10 30 20 41 90 2 30 60 29 int n sizeof s sizeof int int i k j a b num max 0 for i 0 i i j num 0 for k i k j k num num s k if max num max num a i b j for int m a m b m cout s m return 0 直接插入排序 void insertsort int a int n int x j for int i 1 i 0j a j 1 a j a j 1 x 20 提取字符串中的数字 在字符串 ab00cd 123fght456 253 005fgh 中提取的字符是0 123 456 253 5 void fun char str int outArray char p str int count 0 value 0 while p 0 if p 9 value 0 while p 9 value value 10 p 0 p outArray count value p 21 数字转换成字符串 int main char str 20 temp 20 int i 0 j 0 int num 1234567 while num 0 str i num 10 0 num num 10 i i while i 0 temp j str i temp j 0 cout temp N 定义输入的行数 getchar 输入的N行字符 for int i 0 i N i while 1 记住控制方法 ch getchar 这是单个字符 if ch a num if ch n break cout num 0 k p i 0 q j 0 10 i j while i 0 result n p i 0 k 10 0 k p i 0 k 10 i while j 0 result n q j 0 k 10 0 k q j 0 k 10 i if k 1 result n 1 如果是两个负数相加 加上result n result n 0 24 求字符串中最大的回文长度 void fun char a int len strlen a int i 0 j len 1 len2 0 len2是回文的一半长度 char p q int max 0 pos1 0 pos2 0 for i 0 ii j p q while p q if p q len2 p q Else 上式中 如若不成立 保留下来的len的值可能很大 要将其变 成0 以便继续使用 len 0 break if
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 韶山语文面试题及答案
- 街道团委面试题及答案
- 华为从战略到执行培训
- 2025年中国排球器材行业市场全景分析及前景机遇研判报告
- 《数智时代下的供应链管理:理论与实践》课件 第十一章 供应链绩效评估
- 幼儿蘑菇美术课件
- 中医护理课件
- 航空航天复合材料 课件 第10章 新型复合材料
- 基层群众文化活动组织的定位及实践方法研究
- 塔吊安全技术培训
- 生理学全套课件
- 孕期保健主题宣教培训课件
- 《高血压健康教育规范》
- 骨科手术后的康复用具与辅助器具
- 小学特色课程《口风琴课程》校本教材
- 电脑教室搬迁方案
- 《如何写文献综述》课件
- 汽车美容店计划书案例
- 2023高教版中职中国特色社会主义基础模块课程标准
- 信息机房火灾事故应急处置方案
- 火灾调查专业技能.全国比武单项科目解析
评论
0/150
提交评论