Gross>50008%
思考题九~十三:
数字游戏题
✧找出2-1000中的的所有亲密数对(两数A与B称为亲密数对,A的因子之和等于B,B的因子之和等于A,且A≠B)
✧打印1-1000之间的完数(若A的所有因子之和仍为A,则A称为完数,如6=1+2+3)
✧打印100-999之间的水仙花数(若A的数位立方和仍为A,则A称为水仙花数,如153=1*1*1+5*5*5+3*3*3)
✧编程序输入一个给定的数n后,输出的所有不超过n的,其平方由左右对称的数字组成的数.如输入30,输出1,2,3,11,22,26,因为它们的平方是1,4,9,121,484
✧找出1-100之间所有素数
✧1+1猜想:
找出和数为x(x为合数,x>3)的两个素数
✧任一整数x,找出它的素因子并以如下格式输出:
72=2*2*2*3*3
120=2*2*2*3*5
✧找出能三三数之余2,五五数之余三,七七数之余2的最小整数。
✧百钱买百鸡:
公鸡一只5元,母鸡一只5元,小鸡三只1元,给100元恰好买到100只鸡,公鸡母鸡小鸡各多少只?
✧输出Fibonacci序列前40项:
1,1,2,3,5,8,13,21,……
✧一球从100米的高度自由下落,每次落地后反跳回原高度的一半,再落下,求它在第10次落地时,共经过多少米?
第10次反弹多高?
✧一个汉字表示一个数字,不同的汉字表示不同的数字,找出什么数满足:
我们热爱数学
*学
好好好好好好
程序为:
✧一个汉字表示一个数字,不同的汉字表示不同的数字,找出什么数满足:
丰富寒假生活
*2
寒假生活丰富
程序为:
循环累计迭代
✧用公式sin(x)=
求正弦函数在任一变量x0处的值
✧用公式cos(x)=
求余弦函数在任一变量x0处的值
✧用公式ln(1+x)=x-
求对数函数在任一变量x0>0处的值
✧用公式
求圆周率
✧用公式
求ex在任一变量x0处的值
✧用迭代法求
迭代公式为:
✧求
的值(n<10)
✧二分法求
在(-10,10)之间的根。
✧牛顿迭代法求
在(-10,10)之间的根。
✧求定积分
。
✧计算机辅助教育:
帮助小学生学习加法,用rand函数产生一对1位数的整数,如下形式显示:
Howmuchis5plus4?
学生输入答案,程序判断答案正误,若正确则打印“GOOD”,再出下一题;若不正确,打印“No.TryAgin.”,让学生再给答案,直到答案正确。
✧用rand函数模拟投一对骰子,从数学意义上讲,因每骰子投出的值在1~6,所投出的两个值之和为2和12的频率最小,两个值之和为7的频率最大。
试投5000次,分别计算两个值之和为2、7、12的频率。
✧有苹果若干,按以下方法分给五个大人和一位小孩.先由第一人将苹果均分为5堆,多余的一个给小孩,自己取其中的一堆.第二人又将剩下的苹果均分为5堆,多余一个给小孩,自己取其中的一堆.第三、四、五人同样均分,多余一个给小孩,每人各取其中一堆。
问原先最少有多少苹果?
五个大人各得多少苹果?
设第i次均分前有Yi个苹果,均分后某人取走Xi个,剩下Yi+1个,则有以下
递推式:
Xi+1=(Yi-1)/5
Yi+1=4Xi+1i=0,1,2,....5
本题给出两个C程序.
程序1:
以最初苹果Y=Y0(Y0的初始值为6)开始,寻找连续按题意可分的Y,当不能分摊时,则Y0增5,重新开始可分性测试,直到找到一个满足要求的Y0.
程序2:
以最后一次均分每位所得的苹果数X(X的初始值为2)开始,
利用关系式
X=(Y-1)/5,则Y=5X+1
推算出分摊前的苹果数.合理的Y应为前一次分摊后的四堆苹果总数,当发现Y不合理时,将最后一次分摊时每位所得的苹果数X增1,重复上述推算,直到找到合理的Y.
图案打印
✧打印
*
***
*****
*******
*****
***
*
(本行为2n+1个*号,n任意给定)
✧打印
*****
****
***
**
*
(本行n个*号,n任意给定)
✧打印
*
***
*****
(本行为2n+1个*号,n任意给定)
***
*
✧打印
1
1
2
1
1
2
3
2
1
1
2
3
4
3
2
1
…
…
…
…
…
1
2
3
…
8
9
8
…
3
2
1
✧打印杨辉三角形
1
1
1
1
2
1
1
3
3
1
1
4
6
4
1
1
5
10
10
5
1
…
…
…
…
…
1
Cn1
Cn2
…
…
Cn2
Cn1
1
逻辑判断题
✧两乒乓球对比赛,各出3人,甲队为A,B,C,乙队为X,Y,Z,抽签后A不和X比,C不和X与Z比。
编程找出3对赛手情况。
✧有红、黄、兰、白、紫色的珠子分别放在5个包里。
甲说:
第二个包是紫色珠子,第四个包是黄色珠子.
乙说:
第一个包是红色珠子,第五个包是白色珠子.
丙说:
第三个包是白色珠子,第四个包是兰色珠子.
丁说:
第二个包是黄色珠子,第五个包是紫色珠子.
每个人都说对一句,说错一句.各个包里的珠子分别是什么颜色的?
编制求解程序.
思考题十四~三十:
✧输入一个二进制串(由0和1两个符号组成),输出相应的十进制数。
如输入"011001",输出25。
✧输入一个十进制整数,转换为二进制输出。
✧兔子躲进了10个环形分布的洞的某一个中。
狼在第1个洞中没找到兔子,就间隔1个洞,到第3个洞中去找,也没找到兔子,就间隔2个洞,到第6个洞中去找。
以后狼每次多隔1个洞去找兔子,……。
这样狼一直找不到兔子,编程序计算兔子可能躲在哪个洞中。
✧把十个数从小到大排序后输出
✧给定一组由小到大的整数,再任给一x0,用二分法判断x0是否在该数组之中。
✧设数组已赋值,从键盘任意输入一个同类型的数cmp,剔除数组中与cmp的值相同的所有元素,并保持原数组元素的连续排列.
✧输出n个数之中的第m大的数
✧n个人围坐一圈,从1到n编号,从1号开始报数(从1报至m),报m者退出;再从1报数,报m者退出。
依退出顺序输出他们的编号。
✧自编写将一个字符串中的元音字母复制到另一字符串中的程序.
✧自编写将两个字符串比较大小的程序.
✧任给三个串,对其词典排序.
✧输入一字符串行,统计其单词个数
✧输入一字符串,判断它是不是定点浮点数形式,是则输出YES;否则输出NO。
如输入"123"、或"123.57",则输出YES。
如输入"123A"、或"123.57.89",则输出NO。
✧输入一字符串,判断它是不是浮点数形式(定点形式或科学记数形式),是则输出YES;否则输出NO。
如输入"123"、或"123.57"、"123e12",则输出YES。
如输入"123A"、或"123.57.89",则输出NO。
✧程序实现在任给的串s中某位置p(0<=p<=串S长度)之处插入另一任给的串as.
✧任给串s和串subs,串subs可能是s的子串。
当串subs是s的子串时,从s中删除串subs.
初步解法:
子串出现多次但只删除一个的程序
进阶解法:
子串多次出现多次删除——字符数组方法
进阶解法:
子串多次出现多次删除——指针方法
✧输入含圆括号的表达式形式串,判断其是否符合表达式格式,是则输出YES,否则输入NO。
✧给定一浮点数(表示金额),以中文大写形式打印出来。
✧打印任意一年日历
✧输出n阶魔方阵(任给奇数n).
✧任给n个串,对其词典排序.
✧随机生成一批时间串形如:
2005-4-519:
00:
01
判断各时间属于那类时间段:
0=空闲(21:
00:
00-6:
59:
59),1=一般忙(7:
00:
00-17:
59:
59),繁忙(18:
00:
00-20:
59:
59).
随机生成一批时间串的程序如下:
还有%I控制时数(十二时制),%Z控制时间区域,%A控制星期几,%B控制月份英文词。
本题程序如下:
✧
(1)输入字符串,分别找出其中字母和数字,其余字符忽略;
(2)再将重复的字符去掉,分别按从小到大的字母顺序排列输出。
✧将0-9,a-f(或A-F)组成的串以十六进制看待,转换成十进制整数输出。
✧输入一段英文,对其进行一项语法检查,把每全句子的第一个字母改为大写。
假设每个句子由“.”、“!
”或“?
”结尾。
✧键入两个高精度正整数(不超过230位),求它们的和(精确值)。
✧一个字符串中含一个数字子串,子串起始位置和长度是不定的,编程找出这个子串并转为整数打印。
如Verticesequalto20001,and,要打印20001。
✧保龄球娱乐计分
保龄球一局分为十盘,每盘是滚一球或两球——如果某盘第一球未击倒十柱,则本盘未结,再滚第二球;如果某盘第一球击倒十柱,则本盘结束,转下一盘。
其计分原则是根据击倒的柱数累加计分,击倒一柱计一分。
如果某盘第一球未击倒十柱,则直接把本球所击倒柱数计入分数,如果本盘第二球补击也未把剩余柱数击倒,也直接把本球所击倒柱数计入分数;如果本盘第二球补倒(即把剩余柱数全击倒),则把本球所击倒柱数和下一球的击倒柱数计入本球得分。
如果某盘第一球击倒全部十柱(称全倒),则把本球所击倒柱数和下两球的击倒柱数计入本球得分。
例如计分过程:
72(1st盘end)64(2nd盘end)82(3rd盘end)10(4th盘end)54(5th盘end)10(6th盘end)10(7th盘end)36(8th盘end)81(9th盘end)91(10th盘end)5(奖一球)
累计分数过程79(1st盘end)1527(2nd盘end)3547(3rd盘end)66(4th盘end)7175(5th盘end)98(6th盘end)117(7th盘end)120126(8th盘end)134135(9th盘end)144150(10th盘end)155
即本局得155分。
72(1st盘end)64(2nd盘end)82(3rd盘end)10(4th盘end)54(5th盘end)10(6th盘end)10(7th盘end)36(8th盘end)81(9th盘end)10(10th盘end)45(奖两球)
累计分数过程79(1st盘end)1527(2nd盘end)3547(3rd盘end)66(4th盘end)7175(5th盘end)98(6th盘end)117(7th盘end)120126(8th盘end)134135(9th盘end)154(10th盘end)158163
即本局得163分。
72(1st盘end)64(2nd盘end)82(3rd盘end)10(4th盘end)54(5th盘end)10(6th盘end)10(7th盘end)36(8th盘end)81(9th盘end)22(10th盘end)
累计分数过程79(1st盘end)1527(2nd盘end)3547(3rd盘end)66(4th盘end)7175(5th盘end)98(6th盘end)117(7th盘end)120126(8th盘end)134135(9th盘end)137139(10th盘end)
即本局得139分。
作为初学者,先提供一局中各球的得分,再计算本局得分的程序如下:
Input
第一行为每局盘数10
Output
本局得分
SampleInput
10
7264821054101036811045
SampleOutput
163
进阶后,玩家更希望是边玩边累分。
Input
10
027073351006015418911
Output
83
Input
10
61919162542191557030
Output
104
Input
10
159055808263739154735
Output
129
✧找出二维数组的鞍点(即该位置的元素在该行上最大,在该列上最小。
有可能无鞍点)
✧三维坐标系中有n个点(编号从1到n)和k个以原点为中心的同心球面,球半径的步长0.5,各个点会落在或最靠近一个球面,编程打印各个球面最近的点有哪些?
(可分别用二维数组或一维数组指针)
✧重量分别为w[1]……w[n]物品选择若干,装入能装s重的背包是否正好装满?
✧结构体cricket的成员为:
playername
teamname
battingaverage
用cricket定义数组player,有50个元素。
从文件读入50个运动员信息,然后分teamname输出运动员名字和battingaverage.
✧结构体student_record成员有姓名、生日、总分,其中生日是date结构体。
从文件读入10个学生信息,然后按生日的先后顺序输出他们信息。
✧一个文件内容形如:
formatascii1.0
commentzipperoutput
……
elementvertex245
propertyfloatx
propertyfloaty
propertyfloatz
end_header
程序识别出哪一行含有子串"element",并取出该行中的整数。
✧给定三个十六进制数0xfc58fd42,0xea1329bc,0x7601aaff,统计比特为0和1的各有多少。