基础类/算法类/ACM类
1、特殊数据获取(难度系数:2级)
(1)任务描述
编写程序,计算1-3000之间的特殊数: (a)素数;(b)回文数(c)水仙花数(d)亲密数。 (2)功能要求
①采用模板化程序设计方法,每个特殊数的计算用一个函数完成。 ②主程序设计一个功能菜单,格式如下,通过菜单调用各个函数; 0.退出 1.素数 2.回文数 3.水仙花数 4.亲密数
③计算并输出1~1000之间的各种特殊数据的判断与输出数。 (3)设计提示
亲密数,如果整数本身A的全部因子(包括1,不包括本身)之和等于B;且整数B的全部因子(包括1,不包括B本身)之和等于A,则将整数和B称为亲密数。例如:220和284为亲密数。
2、利用公式求π(难度系数:2级)
(1)任务描述
根据公式求出π的近似值。 (2)功能要求 ①公式 π/6=1/2+(1/2)×1/3×(1/2)3+(1/2×3/4)×1/5×(1/2)5+(1/2×3/4×5/6)×1/7×(1/2)7... ②编程求π的近似值,当数列的最后一项小于10的-6次方为止。 ③输出π值,小数点后保留6位有效数字。
3、简单的队列操作(3)
用链表结构存在队列数据。队列尾数指针为NULL,结点的插入只能在链表尾部进行,借点的删除只能在链表头部进行,即先进先出。 (1)任务描述 建立存在整数的队列,可以对其进行常规操作。 (2)功能要求 1.建立结构体,其成员一为整形变量,一为拉链用的指针。 2.在主函数中编写菜单,用户可以选择加入、删除、显示和退出功能。 3.编写插入函数Inseret(),将终端读入的整数加入到队列中(加入到链表尾。注意拉链,表尾置空)。 4.编写删除函数Delete(),当队列不为空时将队列的首元素删除(删除结点,修改链表头),并显示被删除整数;若队列为空,给出提示信息。 5.编写显示函数display(),从头至尾将队列中所有整数依次显示输出。
4、简单的堆栈操作(3)
用链表结构存放堆栈数据,栈尾指针为NULL,结点的插入与删除只能在链表头部进行,先进后出. (1) 任务描述 建立存在浮点数的堆栈,可以对其进行常规操作. (2)功能要求 1.建立结构体,其成员一为浮点型变量,一为拉链用的指针. 2.在主函数中编写菜单,用户可以选择压栈,弹出,显示和退出功能. 3.编写压栈函数push(),将终端读入的浮点数压栈(插入结点,修改链表头) 4.编写他弹出函数POP(),当栈不为空时将栈顶元素弹出(删除结点,修改链表头),并显示被删除的浮点数,若栈空,给出提示信息。 5.编写显示函数DISPLAY(),从栈顶到栈底将栈中所有浮点数一次显示输出。
5、利用堆栈进行表达运算(3)
(1).任务描述 从终端输入一个只带有数据及加减乘除运算符的简单整数运算表达式,利用堆栈进行运算符优先判别,显示表达式的运算结果. (2)功能要求 1.建立两个堆栈,一个存放运算数,一个存放运算符. 2.在主函数中输入的表达式,将其存放到字符数组DATA中. 3.从左向右判别数组中的表达式,如果是运算数就将它转换成整数压入运算数栈. 4.如果是运算符,则与运算符栈顶元素比较,若前者优先级高,则从运算数栈顶弹出两个元素进行相关运算,并把运算结果压入运算数栈. 5.反复执行4步骤,知道当前运算符的优先级高于运算符栈顶元素,将当前运算符压栈. 6.如果表达式书写正确,表示大判别结束后,栈中只剩一个运算结果,将其输出. 7,如果表达式书写错误,表达式判别结束后,栈中残留多余数据,显示报错信息.
6、快速排序整数序列(难度系数:4级)
(1)任务描述 利用指针和递归排序法实现整数的升序排序。 (2)功能要求 1.在主函数中输入若干个整数到数组DATA中。 2.便携函数QUICKSORT(),实现对数组DATA的快速排序,函数的参数是整形指针。 (3)设计提示 1.快速排序算法步骤: 划分数组,确定无序数组的第一个元素在排好序后数组的位置(比位于其左的一元素值大,比其右的所有元素值小);这时数组变成一有一个处于正确位置的 元素和两个无序子数组。 迭代处理,即递归调用,对每个无序数组执行第一步。 如果子数组只剩一个元素,确定它的位置。 2.寻找第一个元素M的位置的方法: 先把数组元素自右向左逐个与M比较,当某个元素的值N比M小,交换位置。 再从左向右,找到比M大的K,交换位置
重复1,2,直到M的位置不变化。
7、整数相除问题(难度系数:4级)
使用数组精确计算两个整数相除的结果,小数点后最多输出40位 (1)任务描述 利用数组精确计算整数M除以整数N的值。 (2)功能要求 1.利用数组保存每一位商。 2.至少输入四组M和N,观察运算结果。 3.如果M/N是无限不循环小数,小数点后最多40位。 4.如果是无限循环,计算第一个循环节,同时要求输出循环接的起始和终止位置。 (3)设计提示 如果M>N,则先求商的整数部分。设不能整除的余数为m,因为m 8、数据查到与统计(难度系数:2级) (1)任务描述 从文件输入n个正整数,且每个数均在1000到9999之间。寻找其中每位数字都是奇数的数,如7131。统计满足条件的数据个数,把符合条件的数排序,输出结果。 (2)功能要求 1.在主函数中输入的数据存放在数组DATA中。 2.编写函数STAT(),寻找满足条件的数字,并将统计结果返回。 3.编写函数SORT(),把满足条件的数据排序后放到另一个数组SORT_DATA中。 4.最后main()函数中调用函数STAR和SORT,并输出统计结果和排序数据元素。 9、算式金字塔(难度系数:2级) (1)任务描述 给出1~9数字中的3位到9位,让用户在数字间添加运算符和空格,使得每个等式计算结果都是1。 (2)功能要求 本任务给出的算式有 1=1 2 3 1=1 2 3 4 . . . 1=1 2 3 4 5 6 7 8 9 ①随即给出以上某个算式。 ②等待用户给出添加运算符的表达式。 ③计算表达是,判断结果是否为1,Yes,重复执行要求①②;No,允许用户再次提交答案,当三次还回答不正确,则询问要看正确答案否?Yes,给出正确答案,No重复执行要求①②。 ④设计一个计分方法,并在要求③中加入计分,当全部表达式都计算结束,则输出总 积分。 10、长整数运算器(难度系数:3级) (1)任务描述 编写程序实现任意长整数的加法、减法、乘法运算。 (2)功能要求 ①长整数长度在十位以上。 ②输入两个任意长度的长整数。 ③实现两个长整数的加、减运算,输出运算结果。 ④实现两个长整数的乘法运算,并输出结果。 12、求解自守数(难度系数:3级) (1).任务描述 如果一个数平方的位数等于该数自身的自然数,这个数就是自守数。如:76的平方=5776,求出20W以内的自守数. (2)功能要求 1.根据设计提示,利用循环,设计出求自守数的算法. 2.设计输出格式,将得到的自守数整齐排列输出. (3)设计提示 乘法运算中,积是由乘数中的每一位和被乘数相乘的部分积相加后得到的。自守数只需考虑积的后几位,并不是每一个部分积的每一位都会对积的后几位有影响,对积的后几位产生影响的部分积为: 第一个部分积:被乘数最后n位 X 乘数倒数第一位。 第二个部分积:被乘数最后n-1位 X 乘数倒数第二位。 。。。。。 将以上部分积的后N位求和后截取后N位就是N位乘积的后n位。 13、收入与纳税计算2,switch语句实现(难度系数 3级) (1)任务描述 根据当前的个人所得税政策,按每月收入计算员工的税后工资。 (2)功能要求 1)了解所在学校的工资结构,建立相应的结构体。 2)在主函数中输入5个以上员工的工资明细,存放在结构体wage数组中。 3)编写计税函数,以结构体数组做函数参数,参照税收政策,用switch语句判别,计算各位员工应缴纳的税额。 4)编写输出函数,以结构体数组做函数参数,列出每位员工的税后工资。 14、进制转换(难度系数:4级) (1)任务描述 编写程序,完成二进制,八进制,十六进制,十进制间的相互转换。 (2)功能要求 1)将输入的0和1数字序列存放到数组中。 2)从终端输入要转换的进制。 3)将转换后的结果保存到数组中,并以适当的形式输出。 15、利用循环或递归函数求数字乘积根(难度系数:3级) (1)任务描述 从文件读入若干正整数,求这些整数的数字乘积根。 (2)功能要求 ? 本程序要求可以连续求得多个整数的数字乘积根 ? 编写函数muti(),把输入的正整数作为参数,求该整数数字乘积根。 ? 在主函数中输出求得的整数的数字乘积根。 ? 尝试用递归函数求解任务。 (3)设计提示 求一个正整数中非零数字的乘积,再求该乘积中非零数字乘积,如此反复计算,直至乘积含一位数字,这个一位数字就叫该整数的数字乘积根。例如:10025的非零数字积为1*2*5=10,10的非零数字积为1,1就是10025的数字乘积根。 16、图中路径的查找(难度系数:4级) (1)任务描述 一张由n个顶点,m条边组成的(有向或无向)图,每条边上都有标记(标记可以相同),有唯一的起始顶点和若干个终止顶点(起始顶点 也可以是终止顶点)。当用户任给一个标记序列,程序可判断该序列是否构成一条从起始顶点到终止定点的路径,即从起始顶点到终止顶点 的路径上的标记组成的序列与该序列相同。 (2)功能要求 1.图由文件形式输入,并可显示于屏幕上,并区分起始和终止顶点。 2.用户从命令行输入标记序列。 3.允许用户选择是否继续检查、是否换一张图、是否退出程序。 17、整形拆分(难度系数:3级) (1)任务描述 编写程序实现正整数n的所有拆分方案,即把n拆分成若干个正整数之和。 (2)功能要求 ① 从文件读入整数n. ② 输出n的所有拆分方案(允许重复)。 ③ 输出n的所有拆分方案(不允许重复)。 ④ 输出n的所有拆分成奇数的拆分方案(允许重复)。 18、共用体的使用(难度系数:2级) 共用体成员分享同一个数据空间,巧妙地设计和使用共用体,有利于数据访问和处理。 ⑴任务描述 定义一个共用体数组,观察分析对不同成员的输入、输出所得到的数值。