8 20
十四
编写一个程序,寻找用户输入的几个整数中的最小值。并假定用户输入的第一个数值指定后面要输入的数值个数。
程序运行结果如下: 输入:
5 20 15 300 9 700 输出: 9
十五
有一分数序列如下:
2/1, 3/2, 5/3, 8/5, 13/8, 21/13, ....
即后一项的分母为前一项的分子,后项的分子为前一项分子与分母之和,求其前n项之和。
程序运行结果如下: 输入: 6 输出: 10.0071
十六
求a+aa+aaa+aaaa+... ...+aa...a(n个),其中a为1~9之间的整数。 例如:当a = 1, n = 3时,求1+11+111之和;
当a = 5, n =7时,求5+55+555+5555+55555+555555+5555555之和。
程序运行结果如下: 输入: 2 3 输出: 246
十七
所谓孪生素数是指间隔为2的相邻素数,如最小的孪生素数是3和5,5和7也是。找出2-k之间的所有孪生素数,每行打印1对输出。k由键盘输入(K>=200,k<=10000)
十八
从键盘输入一个正整数,然后将该整数分解为1和各个质因子相乘,如果输入的整数本身就是质数,则分解为1和该数本身相乘。如 输入: 6 输出: 6=1*2*3
十九
给一维数组输入7个整数,找出该数组中的最大数。 程序运行结果如下: 输入:
234 12 34 56 34 23 89 输出: 234
二十
编写一个用于对整型数组(长度<10)进行排序的程序,排序方法使用简单的交换排序法
程序运行结果如下(输入的第一个数为的数组中元素的个数): 输入: 6
45 12 345 56 7 89 输出:
7 12 45 56 89 345
二十一
利用整型数组计算N!N比较大,所以不能直接用int等数据类型计算。
程序运行结果如下: 输入: 50 输出:
30414093201713378043612608166064768844377641568960512000000000000
二十二
编写一个程序,要求用户输入一个十进制正整数,然后分别转换成为二进制数、八进制数和十六进制数输出。
程序运行结果如下(输出依次为二进制、八进制和十六进制数): 输入: 16 输出: 10000 20 10
二十三
恺撒加密法加密规则是:将原来的小写字母用字母表中其后面的第3个字母的大写形式来替换,大写字母按同样规则用小写字母替换,
对于字母表中最后的三个字母,可将字母表看成是首未衔接的。如字母c就用F来替换,字母y用B来替换,而字母Z用c代替。
编程实现以下功能:输入一个字符串,将其加密后输出。
程序运行结果如下: 输入: AMDxyzXYZ 输出: dpgABCabc
二十四
所谓回文数是指其各位数字左右对称的整数,例如12321、789987、1等都是十进制回文数。
程序运行结果如下:
请输入回文数起始和结束位置: 1000 2000
1001 1111 1221 1331 1441 1551 1661 1771 1881 1991 注:元素之间空一个空格。
二十五(数组作为参数 无法非引用?
编写字符串反转函数mystrrev,该函数的功能为将指定字符串中的字符顺序颠倒排列。然后再编写主函数验证之。函数原型为 void mystrrev(char string[]) 程序运行结果如下: 输入: Hello,everyone 输出: enoyreve,olleH
二十六
编写函数isprime(int a)用来判断变量a是否为素数,若是素数,函数返回1,否则返回0。调用该函数找出任意给定的n个整数中的素数。
程序运行结果如下:
输入(n个整数,输入0表示结束): 9 8 7 210 101 0 输出(只输出素数): 7 101
二十七
编写一组求数组中最大最小元素的函数。该组函数的原型为 int imax(int array[], int count); // 求整型数组的最大元素 int imin(int array[], int count); // 求整型数组的最小元素
其中参数count为数组中的元素个数,函数的返回值即为求得的最大或最小元素之值。要求同时
编写出主函数进行验证。
程序运行结果如下:
输入(第一个数为数组元素的个数): 5
90 89 30 45 55
输出(第一个数为最大值,第二个数为最小值): 90 30
课外作业(无需上交)
整副单张扑克牌随机生成
编写函数 void GenerateCard() ,生成 1 ~ 52 之间的数,返回对应的牌张信息。
在随机数为 1 ~ 13 时对应? C ?(梅花, club ), 14 ~ 26 时对应? D ?(方块, diamond ), 27 ~ 39 时对应? H ?(红桃, heart ), 40 ~ 52 时对应“ S ”(黑桃, spade )。例如,若随机数为 1 则输出“ CA ”(梅花 A ),为 2 则“ C2 ”(梅花 2 ),为 52 则输出“ SK ”(黑桃 K )。读者可以尝试使用 ASCII 码值代替花色名称, ASCII 值为 3 时代表红桃符号,为 4 时代表方块符号,为 5 时代表梅花符号,为 6 时代表黑桃符号。注意,部分操作系统中这些特殊字符可能无法显示。编写程序,连续调用 GenerateCard ,随机生成 13 张牌验证结果。
课外思考题
编程模拟扑克牌发牌过程。将去除大小王的 52 张扑克牌平均分配给四个玩家,每家 13 张牌。即程序需要连续生成 52 张扑克牌,按东南西北的顺序一次一张地发给四方牌手,共发 13 轮,在屏幕上输出这四个牌手的扑克牌。
在随机数为 1 ~ 13 时对应? C ?(梅花, club ), 14 ~ 26 时对应? D ?(方块, diamond ), 27 ~ 39 时对应? H ?(红桃, heart ), 40 ~ 52 时对应“ S ”(黑桃, spade )。例如,若随机数为 1 则输出“ CA ”(梅花 A ),为 2 则“ C2 ”(梅花 2 ),为 52 则输出“ SK ”(黑桃 K )。读者可以尝试使用 ASCII 码值代替花色名称, ASCII 值为 3 时代表红桃符号,为 4 时代表方块符号,为 5 时代表梅花符号,为 6 时代表黑桃符号。注意,部分操作系统中这些特殊字符可能无法显示。编写程序,随机生成 4 组各 13 张牌。
问题分析: 一副完成的扑克牌生成要比简单生成部分牌张要复杂得多。我们需要使用四个数据对象分别表示东南西北四家,按照顺序逐一发牌。整个程序执行期间,都必须保持东南西北四家的牌张记录,因而必须使用数组存储这些数据。
实现要点: 在随机生成时,不允许出现重复生成的扑克牌。例如,如果已经发出了 CA (梅花 A ),则再次生成的随机数 1 必须被抛弃。