




已阅读5页,还剩18页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C C 语言编程竞赛训练题 部分 语言编程竞赛训练题 部分 1 编辑工具一般都具有字符串 查找 功能 试编程实现字符串的查找并统计匹 配的次数 要求如下 1 查找字符串以逗号为分隔符 若遇逗号 则从逗号后的字符重新开始查 找 2 区分字母大小写 3 能支持通配符 和 查找 其中 可表示任意 1 个字符 为含空字符 代表任意 N 个字符 N 0 输入描述 首先输入要查找的字符串个数 M 接着输入 M 个要查找的字符串 每 个字符串占一行 最后是被查找的文本 输出描述 要求分行输出每个字符串在文中出现的次数 运行后若输入 3 A D a D abb DccABV AAAAABB accc Dabc 则结果输出为 4 3 2 参考答案 include iostream h include string h char Strstr char s const char sub 自定义 s串中查找是否有sub子串内容 找到返回其起始位置 sub允许含 通配符 不允许含 char p int i 0 j 0 k 0 abbbcdefbcde bb f abbbcdefbcde fvr if strlen sub strlen s return NULL 若子串更长则退出 while sub i i k 跳过子串前导 if sub i 0 return s 若已经匹配返回其位置 if p strchr s k sub i NULL return NULL 若不含子串字符则退 出 while p j sub i sub i 有 效字符开始匹配 if sub i 0 return p k 若匹配返回其位置 else return Strstr p k 1 sub 否则从其下一位置查找是否有匹配位置 int Search const char s const char sub 在s串中查找sub子串出 现次数 char p t 80 s0 80 int n 0 strcpy t s strcpy s0 sub 备份文本 abbbcdefbcde bb fvr if p strstr s0 NULL 含 情况 不考虑同时含 p 0 return strstr t s0 NULL 含或不含 情况 while p Strstr t s0 NULL n strcpy t p strlen s0 return n int Sch const char s const char sub abcde 0defg abcdebcd char p t 80 strcpy t s 备份文本到t if p strstr t NULL 判断文本中含逗号 若有则以此分界 p 0 p return Search t sub Sch p sub 逗号前部分匹配次数 逗号后部分匹配次数 else return Search t sub 不含逗号直接返回匹配次数 void main int n i char s 80 char p cin n cin getline s 80 p new char n for i 0 i n i cin getline s 80 p i new char strlen s 1 strcpy p i s cin getline s 80 读被查找的文本 for i 0 i n i cout Sch s p i endl 2 平面上任取 n 个点 可以确定一个多边形 在计算机中单击鼠标即可获得点的 并以此确定多边形 现要求通过输入三个点坐标值来确定一个三角形 并求这三 个点所围成的三角形的面积 若这三个点不能确定一个三角形 则输出 No exist 输入描述 先输入一个整数 表示后面有几组三角形坐标值 接着每行两个数 分 别代表一个点的横坐标和纵坐标 三行一组 输出描述 先要输出三角形的序号 再输出面积 运行后若输入 2 00 05 22 11 14 18 则结果输出为 5 No exist 请在 和 之间编写程序 注意 不要删除或增加 和 源程序 2 00 05 22 11 14 18 5 No exist 10 10 0 0 10 0 30 35 10 0 42 37 10 0 17 null 10 0 10 5 10 0 求三角形面积参考答案 include stdio h include math h double Dis double x1 double y1 double x2 double y2 return sqrt x1 x2 x1 x2 y1 y2 y1 y2 void sjx float x1 y1 x2 y2 x3 y3 float a b c p s scanf f f f f f f a Dis x1 y1 x2 y2 b Dis x1 y1 x3 y3 c Dis x2 y2 x3 y3 p a b c 2 s sqrt p p a p b p c if fabs s 1e 6 printf No exist n else printf g n s void main int n i scanf d for i 1 i n i sjx 求四边形面积参考答案 include stdio h include math h double Dis double x1 double y1 double x2 double y2 return sqrt x1 x2 x1 x2 y1 y2 y1 y2 floatsjx doublex1 doubley1 doublex2 doubley2 double x3 double y3 float a b c p s a Dis x1 y1 x2 y2 b Dis x1 y1 x3 y3 c Dis x2 y2 x3 y3 p a b c 2 s sqrt p p a p b p c return s void sbx float x1 y1 x2 y2 x3 y3 x4 y4 s1 s2 s3 s4 scanf f f f f f f f f s1 sjx x1 y1 x2 y2 x3 y3 s2 sjx x1 y1 x3 y3 x4 y4 s3 sjx x1 y1 x2 y2 x4 y4 s4 sjx x2 y2 x3 y3 x4 y4 if fabs s1 1e 6 fabs s2 1e 6 fabs s3 1e 6 fabs s4 1e 6 printf No exist n else printf g n s1 s2 s3 s4 s1 s2 s3 s4 void main int n i scanf d for i 1 i n i sbx 3 某研究所研发了一种除草药水 但其药效会随使用次数降低 经统计 若每次 使用 M 剂量 M 为整数 则第一次使用能除 M 棵草 第二次使用只能除 M 2 棵 草 第三次使用只能除 M 3 棵草 第 N 次使用只能除 M N 棵草 现要统计 M 剂量药 使用 N 次共能除多少棵草 例如 若剂量为 5 使用 6 次 则可除草棵数为 5 1 5 2 5 3 5 4 5 5 5 6 10 输入描述 先输入若干行测试数据 每行包含两个整数 MN 分别代表剂量和使 用次数 直到输入 00 表示结束 输出描述 输出每组测试数据可除草棵数 运行后若输入 2 56 62 则结果输出为 10 9 请在 和 之间编写程序 注意 不要删除或增加 和 源程序 56 62 00 10 9 10 10 0 0 10 0 30 35 10 0 42 37 10 0 17 null 10 0 10 5 10 0 参考答案 include stdio h include math h double f long m long n int i k j double s 0 k sqrt m for i 1 in return s s m i j k for i k 1 i 0 i if j m i m i 1 n s i m i m i 1 j m i m i 1 else s i n j return s return s void main long m n i double s 0 scanf d d while m 效率高 for s 0 i 1 i n i s m i 效率低 printf g n s scanf d d 4 小明在处理一张图像 他把图像中的点写成 x y 1 然后乘上矩阵 13020 010 001 于是图像向右 向下分别移动了 20 30 个像素 接着他把图像中的每一个点 x y 1 都乘上矩阵 100 030cos30sin 030sin30cos 结果图像又旋转了 30 弧度 小明发现了矩阵 的神奇 他准备计算矩阵斜下线元素的积 如果斜下线到右边 则继续从左边的 下一行的第一个元素开始 如 307 645 231 有三条斜下线 积分别为 1 4 3 3 6 7 2 5 0 输入描述 输入的第一个数 n 代表矩阵的阶 接着 n 行 每行 n 个数 接着输入 另一个 n 矩阵的信息 直到输入 0 阶表示结束 输出描述 要先输出序号 运行后若输入 3 13 2 446 403 2 02 14 0 则结果输出为 12 72 0 0 2 请在 和 之间编写程序 注意 不要删除或增加 和 源程序 3 13 2 446 403 2 02 14 0 12 72 0 0 2 10 10 0 0 10 0 30 35 10 0 42 37 10 0 17 null 10 0 10 5 10 0 参考答案 include stdio h int JZ int n i j jj int a 100 100 s 100 ss 0 scanf d for i 0 i n i for j 0 j n j scanf d for j 0 j n j s j 1 jj j jj jj 1 n 为斜线乘积 jj jj 1 n n 为反斜线 乘积 for i 0 i1输出n 然后再计新字符 cout 1 cout n n 1 c s i while s i 比完 0 后结束 cout n cin getline s 80 for i 0 i n i cin getline s 80 YS s 6 军训中甲班 n 位同学已经按从低到高排好队 现有乙班 m 位同学 未排好序 要插入一起集训 请编程实现将乙班同学插入甲班后使队伍仍为从低到高排好的 队列 输入描述 先输入两个整数 nm 分别代表甲班和乙班的人数 然后输入甲班 n 个同学的身高 接着输入乙班 m 个同学的身高 接着输入另两个班的信息 直到 输入班级人数 0 表示结束 输出描述 输出每组排好的 m n 个身高 运行后若输入 53 150152158160168 159159153 24 159165 154167166163 00 则结果输出为 150 152 153 158 159 159 160 168 154 159 163 165 166 167 请在 和 之间编写程序 注意 不要删除或增加 和 源程序 53 150152158160168 159159153 24 159165 154167166163 00 150 152 153 158 159 159 160 168 154 159 163 165 166 167 10 10 0 0 10 0 30 35 10 0 42 37 10 0 17 null 10 0 10 5 10 0 参考答案 C include include LinkList2 h void BInsA int n int m LinkList A int i j x for i 1 i x A InsElem i x 输入表元素 for j 1 j x for i 1 ix A InsElem i x n break if i n A InsElem i x n A DispList 显示表 void main int n m cin n m while ncin n m 7 某电视台有一娱乐节目 主持人让观众猜商品的价格 若观众能在规定的时间 内猜中商品的价格即可获得该商品 例如 有一精美的水壶 假设实际价格为 282 元 事先观众不知道 观众只知道在市面上可能的价格范围为 100 到 400 元 此时若观众猜的价格为 300 元 主持人会告诉观众 大了 若观众猜的价格为 200 元 主持人会告诉观众 小了 直到在规定的时间内观众猜中了商品的价 格 现请你编程模拟猜商品价格的过程 要求在最少的次数内猜中商品的价格 精 确到整数 输入描述 先输入一个整数 表示要猜商品价格的次数 然后每行输入三个整数 BER B 和 E 表示观众估计的商品价格范围 R 表示实际商品价格 输出描述 输出每种商品你所猜的价格 运行后若输入 2 100400282 12015 则结果输出为 250 325 287 268 277 282 10 15 请在 和 之间编写程序 注意 不要删除或增加 和 源程序 2 100400282 12015 250 325 287 268 277 282 10 15 10 10 1243728509 ABabcdCeDF 2 4 2 8 0 1 3 7 5 9 A B C D F a b c d e 10 0 30 35 10 0 42 37 10 0 17 null 10 0 10 5 10 0 参考答案 C include iostream h void CJ int B int E int R int m while B E 起 止 m B E 2 cout m if R m break 猜对退出 else 实价比中间数m小 则用m 1止点 否则用m 1作起点 if R m E m 1 else B m 1 cout n for i 0 i B E R CJ B E R 8 一群小朋友外出郊游 并分组做游戏 要求每组人数一致 现有 n 个小朋友 有几种分法 输入描述 输入正整数 代表小朋友的人数 n 以 0 结束 输出描述 先要输出序号 然后输出分成几组 每组多少人 有多少种情况都要 输出 运行后若输入 5 6 0 则结果输出为 5 能被分成 5 组 每组包含 1 人 6 能被分成 6 组 每组包含 1 人 6 能被分成 3 组 每组包含 2 人 6 能被分成 2 组 每组包含 3 人 请在 和 之间编写程序 注意 不要删除或增加 和 源程序 5 6 0 5 能被分成 5 组 每组包含 1 人 6 能被分成 6 组 每组包含 1 人 6 能被分成 3 组 每组包含 2 人 6 能被分成 2 组 每组包含 3 人 10 10 0 0 10 0 30 35 10 0 42 37 10 0 17 null 10 0 10 5 10 0 参考答案 C include stdio h void WS int x int i for i x i 1 i if x i 0 printf d能被分成 d组 每组包含 d人 n x i x i void main int x scanf d while x WS x scanf d 9 编写程序判断算术表达式的括号 大括号 方括号 圆括号三种 是否匹配 输入描述 先输入一个整数 N 表示要判断的表达式个数 然后 N 行表达式 输出描述 输出每种商品你所猜的价格 运行后若输入 2 3 2 f k dk f kk 则结果输出为 匹配 不匹配 请在 和 之间编写程序 注意 不要删除或增加 和 源程序 1 dk f kk 匹配 10 2 1 a d ds d s d 匹配 10 4 1 s d 不匹配 10 4 42 37 10 0 17 null 10 0 10 5 10 0 参考答案 C include include sqStack2 h int Match char str int i 0 char c sqStack S while c str i switch c case case case S Push c break case if S GetTop S Pop else return 0 break case if S GetTop S Pop else return 0 break case if S GetTop S Pop else return 0 return S Empty void main int i n char s 80 cin n for i 0 i s if Match s cout 匹配 else cout 不匹配 10 编程实现过滤器功能 例如 若是整数 通过此过滤器分离出偶数和奇数 若是字母 通过此过滤器分离出大写和小写字母等 要求分离后两部分的顺序不 变 运行后若输入 1 2 3 4 5 6 7 8 9 0 aABbCcDEde 则结果输出为 2 4 6 8 0 1 3 5 7 9 A B C D E a b c d e 请在 和 之间的空白处填入适当语句或式子 注意 不要删除或增加 和 源程序 1234567890 aABbCcDEde 2 4 6 8 0 1 3 5 7 9 A B C D E a b c d e 10 3 1243728509 ABabcdCeDF 2 4 2 8 0 1 3 7 5 9 A B C D F a b c d e 10 7 30 35 10 0 42 37 10 0 17 null 10 0 10 5 10 0 参考答案 C include include sqStack2 h int DX char x return x A 判断x是否大写 int OS int x return x 2 0 判断x是否偶数 template voidFilter sqStacksqStackt while p Empty x p Pop if TJ x t Push x else q Push x while t Empty p Push t Pop while p Empty q Push p Pop void main sqStack a b int x 1 2 3 4 5 6 8 7 9 0 aABbCcDEde for int j 0 j x a Push x Filter a b OS while b Empty cout b Pop sqStack s r char c for int i 0 i c s Push c Filter s r DX while r Empty cout r Pop 特别说明 若要使用数据结构相关内容 可以添加 include 语句将相关头文件包含到程 序中 也可以自己定义数据结构相关头文件 具体内容如下 C描述顺序堆栈头文件sqStack h 定义的数据元素存于data 栈顶指针存于 top 函数原型如下 void InitStack sqStack S 初始化栈 int Empty sqStack S 判栈空 int Full sqStack S 判栈满 int Push sqStack S ElemType x 入栈 int Pop sqStack S ElemType x 出栈 int GetTop sqStack S ElemType x 取栈顶元素 C描述单链表头文件LinkList h 定义的数据元素存于data 下一结点指针存 于next 函数原型如下 LNode InitList 初始化带头结点单链表 int GetLen LinkList L 求线性表长度 LNode GetElem LinkList L int i 取第i个元素地址 i 1 n int Locate LinkList L ElemType x 查找值为x元素位置 1 n 没找到返回0 int InsElem LinkList L int i ElemType x 第i位置插入元素x i 1 n int InsNode LinkList L int i LNode s 第i位置插入结点x i 1 n int DelElem LinkList L int i 删除线性表中第i个位置上的元素 void DispList LinkList L 链表元素输出 C描述顺序表头文件sqList h 定义的数据元素存于data
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 孩子手机上瘾怎么戒
- 家电公司同业拆借管理细则
- 家电公司跑步活动组织办法
- 跳画技能考试试题及答案
- 启蒙篮球测试题及答案
- 公寓管理试题及答案
- 会展概论试题及答案
- 专职理财经理考试试题及答案
- 倒茶礼仪考试题及答案
- java包装类面试题及答案
- 温硝化制硝基苯装置的改进
- 保教知识与能力幼儿园课件
- 财务部半年度述职汇报PPT模板
- 药品种类清单
- 公共基础知识(社区工作者基础知识)试题(附答案)
- GB/T 37915-2019社区商业设施设置与功能要求
- GB/T 31298-2014TC4钛合金厚板
- 《电业安全工作规程》
- 卡西欧gw5600说明书
- 中兴NGN培训教材 MSG9000结构原理介绍课件
- 穿湖隧道施工组织设计
评论
0/150
提交评论