C 常用算法笔试中有部分主要是上机考试中的算法1. 基本算法输出格式控制等求多项式之和、之积1 求sumn 1 2 3 … n 2 函数int funint number返回Sn 1/1 1/2 1/3 … 1/number 3 函数funint n计算在n范围内能被7或11整除的所有整数的倒
数和。4 求xxnnn12412224122 编写函数判断一个数是否是质数素数。算法求两个数的最大公约数和最小公倍数。算法编一个函数用于判断一个年份是否是闰年。函数int funint y int m int d计算并返回某年某月某日是当年的第几天。特殊情况若是闰年且月份大于3则加一天。求一个数的所有约数因子分解质因数。
1 函数funint n计算所有n的因子之和不包括自身
2 求出x的所有约数并调用函数写入文件中。
3 一个数恰好等于它的因子之和这个数就称为“完数”例如6123。编程出1000以内的所有完数。
4 函数funint m int n 判定两个数是否是亲和数。亲和数的定义如果n的所有因子之和因子除掉自身等于m。m的所有因子之和等于n则判定m、n是互为亲和数。
5 函数funint n 完成的功能是将n分解为质数的积的形式。如
902×3×3×5。简54题讲根据n的大小输出由组成的图形如n5输出字符串长度算不算空格
函数int funint n输出一个n行的杨辉三角形。输出9×9口诀涉及输出格式的控制。出在某个范围内满足条件的所有数1 在自然数中寻n个连续的合数非质数。2 在某范围内如10万以内出一个数他加上100后是一个完全平方数再加上268又是一个完全平方数。3 水仙花数。函数bool funint n判断n是否为回文数如23632。若是返回true否则返回false。本题包含了数的分解与合并算法。简62题讲 2. 数制转换将x的值转换成二进制数字符串输出到屏幕。简8题讲将八进制组成的字符串转换成十进制值。如“34”转换结果为28。将字符串形式表示的十六进制数转换成十进制整数如“AD12”转换成整数44306。程序函数void To8char des char str的功能是将二进制数据转换成八进制数据。如1001010的八进制数据为112。二进制和八进制都是以字符串形式存放。简47题讲 3. 数的分解合并循环分解硬性分解/ 函数int funint n实现求n的各个位上数字之和。函数int funint m int n将m的个位和十位放到一个数字z的百位和千位中然后n的百位和千位放到z的个位和十位中最后由函数
返回z。给一个四位整数加密方法是每位数字加上5后除以10的余数代替该数字再将第一位和第四位交换第二位和第三位交换然后返回得到的密码。函数funlong s long t使之从低位开始取出长整型变量s中偶数位上的数依次构成一个新数放在t中。例如当s中的数为7654321时t中的数为642。涉及数的分解与合并。4. 迭代函数double fundouble number通过迭代法返回number的平方根。迭代公式为Xn10.5×Xn number/Xn。牛顿迭代法求数的平方根nnnxaxx211 算法函数double fun 实现求cosx x的一个解。程序采用迭代法迭代法的实现思想如下1设x10 2然后cosx1得到x2如果x2与x1相差小于0.0000001则返回即x2是解3如果大于0.0000001则继续迭代。
5. 递归递归求阶乘非递归求阶乘。ageint n函数实现的功能是在一起的n个人问第n个人年龄是多少他说比第n-1个人大2岁问第n-1个人说比第n-2个人大2岁依次类推最后一个人刚会数数字才2岁。问第n个人多大年龄。用递归算法实现数组a 的前n个元素之和。解答00 函数fundouble n int k实现的功能是求n的0k次方的和。即n0n1n2n3…nk 要求要用递归实现。提示funn k funn k-1 n的k次方。例如fun2 4 124816 31
6. 穷举法水仙花数。三重循环函数funint N4的功能是用4个数字如2、4、6、0组成互不相同且无重复数字的三位数百位数字不能是0将满足条件的所有数输出到屏幕。三重循环简23题讲在某范围内如10万以内出一个数他加上100
后是一个完全平方数再加上268又是一个完全平方数。单循环7. 字符串操作自己编程实现strlen strcpy strcmp strcat 功能。函数void funchar str实现字符串的翻转逆向存放。函数int funchar str实现的功能是判定给定的字符串是否构成回文。忽略大小写忽略非字母字符。程序扫描字符串出字符串数组中最大的ASCII值并返回所在的位置如果有相同变量则输出最后一个所在的位置。字符串加密将字母表看成循环表某字母用其后的第7个字符替换。字符串加密扫描一个串同时扫描另一个串用指定的字符替换如已知源码字母表“ADT”和密码字母表“XQF”表示将主串中的字母ADT分别替换成X Q F。返回指针值的函数。程序统计字符串中各类字符出现的次数指针做参数或引用做参数带回多个统计结果。将一个字符串与另一个字符串交叉生成第3个字符串。例如“123”“abc” “1a2b3c” 判断字符串中左右括号是否匹配。例“
abc”。判断过程中右括号数必须小于左括号数。将一个字符串中偶数位置上的字符取出重复两次后放入新数组如原串为“ABCDEF”
结果串为“AACCEE”。数组元素的偶数下标、奇数下标。将字符串中的大写字母变成小写字母同时将小写字母转换成大写字母写入文件。例如原串为“ABCdef”则结果串为“abcDEF”。函数int funchar str int a 将字符串中出现的数字转换成数值存储在整型数组a 中然后返回转换的个数。例如str “12341454abcdefg234” 则a 中的值为12341454234返回11。程序查子串计算字符串str1中出现字符串str2的个数即寻子串出现的次数忽略大小写。简第2题讲求子串在主串中第n次出现时的位置第一次出现的位置最后一次出现的位置。查子串位置忽略大小写字母。提取字符串中介于两个子串之间的串。模式匹配字符串处理身份证号码校验strncpy 数字串转换为数值。插入子串插入字符将字符串中指定的单词单数变复数本质就是在字符串中插入s字母。字符串每4个值增加一个奇偶校验位使保持偶数个1借助于临时数组。程序例如0100101101011000 结果01001101110101010001 删除子串删除字母函数void funchar str char c实现删除字符串中的所有字符c然后将字符串返回。对字符数组中出现的相同字符只保留第1个。函数funchar des char str的功能是去掉字符串str中相同的字母并将处理后的结果存到des所指字符串中。例如输入This is a test 输出This ate 函数void funchar str char del实现将str中的一些字母删除这些字母出现在指针del指向的字符串中。如str quotI am a student.quot del quotadetquot 则str quot I m sun.quot 程序替换子串替换字符函数void funchar des char str1 char str2 char str3实现把str1中出现的str2替换成字符串str3并存放到des
指向的字符串中。例如str1: quotabc is abc.quot str2: quotabcquot str3: quotbookquot des: quotbook is book.quot 程序函数char funchar des char str char c char str2的功能是如果str中包含字符“”则替换成字符c 如果str中包含字符“”则替换成字符str2 并
用函数返回目标转换后的指针。出字符串中最长的单词。统计字符串中单词个数。拼接两个字符串后将字符串中的字符排序。用字符串模拟的一维数组集合运算加入元素删除元素。用字符串模拟的一维数组集合运算求两个集合的交集。函数char TrimRightchardes char str实现的功能是去掉字符串str最后面的空格或者不可打印字符结果存入des并返回该指针。简45题讲字符指针数组元素指向字符串函数void funchar str int len char des实现将长度为len的字符串数组str压缩到一个
字符串des中。例如char str “abc” “def” “ghi” “jk” 则最后程序输出abcdefghijk
程序将字符串中的单词取出存入一维指针数组各个指针指向的动态空间。字符
指针数组指向的5个字符串排序。见教材例9.30。8. 一维数组冒泡法排序选择法排序及其变种插入法排序。重要教材P98页开始例7.7例7.8例7.9。变种1如结构体数组排序比较的是结构体成员交换的是结构体元素变种2下标为奇数或偶数的元素排序下标每隔m个元素排序。变种3按指定条件排序。例如数组按后三位数字的大小排序。对于两个整数2178和3088如果按后三位数字的大小排升序结果是排3088在2178之前。例如对数组41 18467 6334 26500 19169 的排序结果是41 19169 6334 18467 26500 程序一
维数组插入元素删除元素函数int funint A int len int t实现将t插入到已经由大到小排序的数组中并返回数组插入数据后的长度。如果数据已经存在则不插入返回len即可。插入一个元素。将素数放在数组元素前面其他的放后面。函数int funint n实现由n个人围成一圈由第一个人开始数数从1开始数到3的人退出然后再从1开始函数返回最后一个退出圈的人的编号。将数组中相同元素放在一起并保持它们在数组中第一次出现时的相对位置。如原数组 3 5 3 7 9 5 5 结果数组3 3 5 5 5 7 9 压缩有序数组使相同数只保留一个并返回不同的元
素个数。如1244555777889 结果为1245789不同元素个数为7个。函数void funchar str实现把str中重复的字符删除只余下一个若字符出现超过一次则在这个字符后追加字符的重复次数。例如str “abcccddeffgggg” 则str 将被转换成abc3d2ef2g4 简93题讲元素查用顺序查法在整型数组或字符数组中查任意一个整数或字符c所在位置的下标。教材例7.11 用二分法在已排序整型数组或字符数组中查任意一个整数或字符c所在位置的下标。教材例7.12 两个有序数组合并成第3个有序数组归并算法。合并两个升序数组相同数只保留一个。最大值、最小值问题求两个一维数组对应元素之和的最大值和最小值。将一维数组中最大元素与最小元素互换。求一维数组最大元素值及其下标最大元素值作为函数返回值下标通过指针参数带回到主函数。函数funint ANint n实现的功能是将具有N个元素的一维数组中的元素重新排列。方法是给定n下标为i的元素与下标为inN的元素交换。从下标0开始交换N次则最后的内容为排序后的结果。函数int funint array int cmp int len 的功能是在长度为len的数组array中查大于cm
p的数并返回大于cmp的所有数的和。函数int funint A int len返回数组中大于所有数平均值的元素的个数。函数int funint number将长度为3的数字的各位从大到小排序并返回排序后的结果。例如输入354返回543。磁力数中的部分算法算法1将各位分解到数组排序后组合。算法2硬性分解到三个整型变量中交换数值排序再组合。将一维数组循环右移或左移。函数int funint A int len int m实现将数组中各元素向后循环移动m位。例如A 156******** m3 则A 10154156788 筛选法求素数。教材P102 例7.10 求fibonacci数列前len个数存入数组输出。将数组a看成循环数组产生新数组bb数组元素的值为a数组对应元素前后连续三个元素的平均值结构体数组出排名前m位
的学生。函数int funint A int lenA int B int lenB实现两个超大数的相加。数据的存储方式是下标为0表示个位下标为1表示十位依此类推。lenA和lenB表示当前的位数。返回相加之和的数据的位数。例如A中存储1234567 B中存储2344132 则相加之和为3578699返回7 9. 有关一维数组的数值计算题求一维数组均方差。均方差的计算公式为102/niinxxd 其中平均值为nxxnii/10。一维数组计算∑ 求和计算∏求积计算。......21exp2121122nnniiiwwwwxxxxwxxfy 10. 二维数组对角线元素
求n×n矩阵的对角线数值的平方和周边元素周边元素之和。将二维数组周边
元素置为2中间元素均置为0。二维数组排序实际上按一维数组排序。89516141062153711112134 16151413121110987654321 出二维数组的鞍点该元
素所在行中最大列中最小。移动行列元素将二维数组最右一列移至最左一列
将二维数组最右边的n列循环移至最左边将二维数组第一行循环移至最后一行
二维数组转置二维数组每行元素均逆置每列元素均逆置。程序二维数组中最小值与左上角元素对调最大值与右下角元素对调。将二维数组中最小元素所在的行删除求矩阵中所有质数之和。统计二维数组中正数、负数和零的个数。求出M行N列二维数组每行元素中的最小值并计算它们的和值。和值通过形参指针传回到主函数。N行N列的矩阵中每行都有最大的数本程序求这n个最大数中的最小的一个并作为函数的返回值。程序函数double fundouble A55返回二维数组中大于本行平均数的所有数之和。求二维数组每列行元素平均值并存放到另一个一维数组中。折叠方阵二维 ? 螺旋方阵91011121382122231472025241561918171654321 魔方阵是指这样的一种奇数阶方阵它的每一行、每一列以及对角线之和均相等。294753618 二维数组旋转2122232425201314151619127891811634171052178963452134211 二维数组向右旋转90度二维数组向左旋转90度16151413121110987654321 13951141062151173161284 下标aij biijj iiN-1-j jji 矩阵下三角元素压缩到一维数组中。例如矩阵A为9867834564237531其下三角矩阵为9867345231 如果以行顺序存储下三角部分的元素则矩阵A可存储为一维数组1 3 4 5 4 3 7 6 8 9 。另外假设以一维数组B该数组的大小为nn1/2 作为n阶对称矩阵A的压缩存储结构则矩阵A的元素aij和一维数组元素Bk之间的下标换算关系为ki1i/2j。算法一次扫描二维数组下三角元素按公式ki1i/2j 将aij元素存放到Bk元素中。程序11. 数学中
数值计算题必须看求积分梯形法求积分见教材例9.35 矩形法求积分见C实验指导书P92 解方程弦截法解方程见教材例5.11 二分法解方程见C实验指导书P91 牛顿迭代法见C实验指导书P91 12. 面向对象部分运算符重载友元函数定义矩阵类使用运算符
重载技术实现两个矩阵的相加。如定义矩阵A654321和B333222 通过运算CAB得到结果矩阵C987543。程序分数类重载两个分数的运算求最大公约数算法。建立分数类fraction用于表示最简分数。最简分数为分子和分母没有公约数的分数。该分数类重载运算符和-分别实现两个分数的加法和减法。程序定义一个点point类定义其友元函数求两点之间的距离。点类、线类定义友元函数求点到线的距离。13. 文件调用函数WriteFilechar str将得到的结果字符串写入文件。函数int funchar filename以只读方式打开文件以循环方式判定文件的长度函数void funchar c实现
把从键盘输入的字符c追加到文件尾部。14. 链表全国考试的同学不看江苏考试的同学另时间讲构造降序链表插入不相同元素删除节点节点遍历。综合第6题三个算法函数void funNode head1Node head2将链表head2链接在head1的后面。
15. 队列线性表函数void funNode head int data 产生一个节点节点中存入数据data 然后把节点加入到队列中。程序为了方便提供了一个辅助节点其内不存储数据。备注加入到队列尾。简87题讲16. 堆栈17. 系统函数求随机数、设置随机数种子、时间处理函数18. 指向函数的指针一般只要看懂即可素数算法int isp
rime2int x int k i ksqrtx fori2 iltk i ifxi0 return0 return1 素数算法结束公约数公倍数算法int gysint m int n // 用辗转相除法求最大公约数int d x u dmgtnm:n xmltnm:n udx
whileu0 dx xu udx returnx int gysint m int n//用辗转相除法求最大公约数的优化算法// 所谓优化是指不需要求m、n的最大值int r whilermn0 mn nr returnn int gbsint m int n // 求最小公倍数int maxy maxygysmn returnmn/maxy int gysint m int n // 根据定义求最大公约数int ix xmltnm:n forix igt1 i-- ifmi0 ampamp ni0 break returni int gbsint m int n // 根据定义求最小公倍数int id dmgtnm:n forid iltmn i ifim0 ampamp in0 break returni int gysint m int n //求最大公约数大数减小数直至两数相等whilemn ifmgtnmm-n else nn-m returnm void main int mn cingtgtmgtgtn coutltltquotgong yue shu:quotltltgysmnltltendl coutltltquotgong bei
shu:quotltltgbsmnltltendl 公约数公倍数算法结束简54题讲函数funint n 完成的功能是将n分解为质数的积的形式。如902335。void funint n forint i2 iltn i whileni ifni0 //第一个能把n除尽的i一定是质数。coutltltiltlt //可以将i存放到一个一维数组中nn/i //连续用i去除n else break coutltltnltltendl //输出最后一个质因数变化将质因数分解到数组中。includeltiostream.hgt int funint n int a int j0 forint i2 iltn i whileni ifni0 aji //将i存放到一个一维数组中nn/i else break ajn return j void mainvoid int a100 n nfun90 a forint i0 iltn i coutltltailtltt coutltltendl 简54题讲返回简62题讲include ltiostream.hgt bool funint n int xn y0 //x存放原始数y存放其逆序
数whilengt0 y y10 .
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论