程序设计基础课程 设计
2019程序设计课程实践编程百题
要求:
1、 每道题都写出解题思路
2、 写出编程过程中自己碰到的问题,总结一下自己在解题过程中碰到的问题及解决方法。
3、 保存所有题目的源代码,并保存输入输出的截图。(注意测试用例需要包括临界值、覆盖所有程序分支)
4、 完成所有题目后编写总结报告(将所有题目的1-3步骤整理到一个文档,并总结)。
5、 报告命名方式为学号+姓名+提交文档日期。(注意文档命名,为按照规范命名的文档可能会收不到,无法记录成绩)
基础题
1、 函数f(x)可表示为:
2x+1 (x<0)
f(x) = 0 (x=0)
3x2-1 (x>0)
编程实现输入一个x值,输出y值。
2、 从键盘上输入一个百分制成绩score,按下列原则输出其等级:
88≤score,等级为A;
78≤score<88,等级为B;
68≤score<78,等级为C;
60≤score<68,等级为D;
score<60,等级为E。用switch实现。
3、 在厨王争霸赛中,有12个评委为现场厨师打分,满分100。每位厨师最后得分是:去掉一个最高分和一个最低分,求其余得分的平均值。请编写一个程序实现。
4、 猴子摘了一堆桃,第一天吃了一半,还嫌不过瘾,又吃了两个;第二天又吃了剩下的一半,然后又多吃了两个;以后每天如此。到第n天,猴子一看只剩下三个了。问最初有多少个桃子?
5、 问77777的约数中最大的三位数是多少?
6、求77的23次方的最后三位数.(mod操作)
7、 在屏幕上显示杨辉三角形
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
8、 输入今年的任意两个日期,格式如“2018-09-10,2018-09-11”,计算两个日期间间隔的天数。
9、 一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同; 丙是数学家,他说:四位的车号刚好是一个整数的平方。请根据以上线索求出车号。
10、 假设银行整存整取存款不同期限的月息利率分别为:0.63% 期限=1年;0.66% 期限=2年;0.69% 期限=3年;0.75% 期限=5年;0.84% 期限=8年。利息=本金*月息利率*12*存款年限。
现在某人手中有2000元钱,请通过计算选择一种存钱方案,使得钱存入银行20年后得到的利息最多(假定银行对超过存款期限的那一部分时间不付利息)。
11、 用数组实现以下功能:输入5个学生成绩,而后求出这些成绩的平均值并显示出来。
12、 输入一个字符串,通过指针对字符串进行处理,将其中的小写字母改成大写后输出。
13、 有一头母猪,它每年初生一头小母猪。每头小母猪从第四个年头开始,每年年初也生一头小母猪。请编程实现在第n年的时候,共有多少头母猪?(先找规律)
14、 通过指针实现删除所有*号。规定输入的字符串中只包含字母和*号。编写函数fun,其功能是:删除字符串中所有的*号。编写函数时,不得使用C语言提供的字符串函数。
例如,字符串中的内容为:****A*BC*DEF*G*******,
删除后字符串中的内容应当是:ABCDEFG。
15、 输入一串字符,如果字符串都是字母、数字组成,则在其后加上“this is a string”,输出修改后的字符串,否则输出“No”。
16、 输入N个数,对前一半数进行升序排序,后一半数进行降序排序;
17、 求一个3×3矩阵主对角线元素之和。从键盘输入矩阵元素的值并输出和的值。
18、 将一个3行5列二维数组每一行的最小值放到最前面,最大值放到最后面。
19、 输入一个3行5列的二维数组,对数组的每一行进行升序排序。
20、 编写一个函数,计算任一输入的整数的各位数字之和。主函数包括输入输出和调用该函数。如给子函数传递参数1234,则子函数返回10。(例10=1+2+3+4)。
21、 输入n(n<=100)个整数,按照绝对值从大到小排序后输出。(保证输入数据的绝对值都不相等)
22、 编写Encrypt函数和Decrypt函数,分别实现字符串的加密和解密。加密方法为字母字符的ASCII码值+5(需要考虑如何处理字母越界)。解密过程为字母字符的ASCII码值-5。在主函数中输入字符串,通过调用加密函数和解密函数,然后输出加密结果和解密后结果。
23、 个位数为6且能被3整除的四位数共有多少?
24、 一个自然数被8除余1,所得的商被8除也余1,再将第二次的商被8除后余7,最后得到一个商为a。又知这个自然数被17除余4,所得的商被17除余15,最后得到一个商是a的2倍。求这个自然数。
25、 设N是一个四位数,它的9倍恰好是其反序数,求N。(反序数就是将整数的数字倒过来形成的整数。例如:1234的反序数是4321。)
26、 一辆以固定速度行驶的汽车,司机在上午10点看到里程表上的读数是一个对称数(即这个数从左向右读和从右向左读是完全一样的),为95859。两小时后里程表上出现了一个新的对称数。问该车的速度是多少?新的对称数是多少?
27、 如果一个正整数等于其各个数字的立方和,则称该数为阿姆斯特朗数(亦称为自恋性数)。如 407=43+03+73就是一个阿姆斯特朗数。试编程求1000以内的所有阿姆斯特朗数。
28、 如果整数A的全部因子(包括1,不包括A本身)之和等于B;且整数B的全部因子(包括1,不包括B本身)之和等于A,则将整数A和B称为亲密数。求3000以内的全部亲密数。
29、 自守数是指一个数的平方的尾数等于该数自身的自然数。
例如:252=625,762=5776,93762=87909376。
请求出200000以内的自守数。(考虑int的表示范围)
30、 求具有abcd=(ab+cd)2性质的四位数。3025这个数具有一种独特的性质:
将它平分为二段,即30和25,使之相加后求平方,即(30+25)2,恰好等于3025本身。
请求出具有这样性质的全部四位数。
31、 歌德巴赫猜想。验证:2000以内的正偶数都能够分解为两个素数之和(即验证歌德巴赫猜想对2000以内的正偶数成立)。
32、 求四位的可逆素数。可逆素数指:一个素数将其各位数字的顺序倒过来构成的反序数也是素数。
33、 素数幻方。求四阶的素数幻方。即在一个4X4 的矩阵中,每一个格填入一个数字,使每一行、每一列和两条对角线上的4 个数字所组成的四位数,均为可逆素数。
34、 中国古代数学家张丘建在他的《算经》中提出了著名的“百钱买百鸡问题”:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?
35、 若一个口袋中放有12个球,其中有3个红的。3个白的和6个黒的,问从中任取8个共有多少种不同的颜色搭配,输出所有的颜色搭配?
36、 最大公约数和最小公倍数。求任意两个正整数的最大公约数和(GCD)和最小公倍数(LCM)
37、 编程比较两个分数的大小。如输入4/5,8/9,对输入的数进行比较。
38、 有n(n<=100)个整数,已经按照从小到大顺序排列好,现在另外给一个整数x,请将该数插入到序列中,并使新的序列仍然有序。输出插入数字后的序列。
39、 用指针实现一个一维数组的前后数据交换。
40、 输入一串文本,统计输入文本中汉字的个数。
41、 输入一个字符串,通过指针对字符串进行处理,将其中的小写字母改成大写后输出。
42、 输入一个字符串,删除里面的数字字符后输出,如输入”23daf89dfdfaiei89”,输出” dafdfdfaiei”。(用指针实现)
43、 数字字符串相加。输入一个字符串,将字符串中连续的数字子串转换成数字后相加,输出相加后的结果。如输入 “23daf89dfdfaiei89”, 输出23+89+89的和。
44、 有一种数列叫做斐波那契数列。F(0)=0,F(1)=1,F(2)=1,F(3)=2,F(4)=3,F(5)=5…现在输入n,输出F(n)结果。(请分别使用递归和非递归的两种方法编写函数)
45、 给定三条边,请你判断一下能不能组成一个三角形。
46、 定义一个结构体数组,包括学生学号、姓名、年龄和3门课的成绩。然后输入5个学生信息,查找各科平均分最高的学生,并输出该学生的信息。
47、 定义一个有5个元素的字符型指针数组,分别初始化执行5个字符串“China”,“France”,“England”,“Italy”,“Japan”,然后编写函数对字符串进行升序排序,排序后的结果在主函数输出。
48、 有一个数组int S[N],要求写一个函数:
int *myfunc(int *p,int n);
将S中的0都移到数组末尾,将非0的移至开始(保持原来的顺序不变)。
如S原来是:1,0,3,4,0,-4,8,处理后是1,3,4,-4,8,0,0
49、 输入两个整数a和b,输出a+b, a-b,(分析int,double,longlong,不同数据类型的表示范围)示例如:
输入:2576493547,65485971
输出:2641979518,2511007576
50、 众所周知,7是一个神奇的数字,所以围绕着7的话题也有很多。输入3个0~100的数字,对其进行任意排序,判断是否可以通过任意顺序的加法和减法得到结果7。如果可以,输出任意一种有效结果,如果不能,输出no。如:
输入:1、1、5
输出:1+1+5=7
输入:2、5、4
输出:5+4-2=7
51、 字符串匹配问题。输入字符串a,b(a的长度大于b),输出b在a中第一次出现的位置,如果不匹配,则输出no。如
输入:ATGVHUL, HU
输出:5
52、 有1、2、3、4个数字,能组成多少个互不相同,且无重复数字的三位数?都是多少?
53、一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
54、 输入7个整数,对这十个数进行冒泡排序法(升序),输出每次冒泡的变化结果。如:
输入:6,3,8,2,9,1
输出:3,6,2,8,1,9 -> 3,2,6,1,8,9 -> 2,3,1,6,8,9 -> 2,1,3,6,8,9 -> 1,2,3,6,8,9
55、 用“#”号输出字母M的图案(大小任意,看着像M就行)
56、 将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
57、 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
58、 利用递归方法求n!,n(<20)用户输入。
59、 输入的5个字符,利用递归函数调用方式,将所输入的多个字符,以相反顺序打印出来。
60、 采用指针数组编程,用户输入数字‘1~7’,对应输出‘星期一~星期日’。
61、本题要求编写程序,顺序读入浮点数1、整数、字符、浮点数2,再按照字符、整数、浮点数1、浮点数2的顺序输出。
输入格式:
输入在一行中顺序给出浮点数1、整数、字符、浮点数2,其间以1个空格分隔。
输出格式:
在一行中按照字符、整数、浮点数1、浮点数2的顺序输出,其中浮点数保留小数点后2位。
输入样例:
2.12 88 c 4.7
输出样例:
c 88 2.12 4.70
62、输出Fibonacci数列前40项。
63、判断一年是否为闰年。
64、冒泡法对10个数据进行排序
65、编程计算1!+2!+…+10!的值。
66、求以下数列前15项的和:2/1,3/2,5/3,8/5,13/8
67、判断输入的字符串是否为“回文”,即顺读和反读都一样。
68、随机输入若干个学生的体重,以输入负数或零结束,分别求最重和最轻的体重,并计算平均体重。
69、实现从键盘输入两个字符串,分别存入两个不同的字符数组中;将两个字符串连接为一个字符串,并打印输出连接后的整个字符。
70、编写一个程序,从4个整数中找出最小的数,并显示此数。
提高题
1、 设有1g、2g、3g、5g、10g、20g的砝码各若干枚(其总重<=1000),求用这些砝码能称出不同的重量个数。输入1g、2g、3g、5g、10g、20g的砝码个数。输出能称出不同重量的个数。
如输入:1 1 0 0 0 0
输出:3
2、 给你n(n<=105)个整数,然后要有m (m<=105)个查询。每个查询包括两个整数i和j,输出每次询问第i个数字到第j个数字所有数字之和。
3、 给你一个有n(n<=100000)个整数的序列,要求求出其中最大连续子序列的和。最大连续子序列的和是指连续的若干个数,其和是所有子序列和的最大值。如
输入:1 5 6 7 9 12 10
输出:18
4、 设计程序判断一个密码是否是安全的,规则如下:
1)、 如果密码长度小于 6 位,则不安全
2)、 如果组成密码的字符只有一类,则不安全
3)、 如果组成密码的字符有两类,则为中度安全
4)、如果组成密码的字符有三类或以上,则为安全
通常,可以认为数字、大写字母、小写字母和其它符号为四类不同的字符。
要求:输入密码,输出密码的安全等级。
5、 输入两个已经按从小到大顺序排列好的字符串,编写一个合并两个字符串的函数,使合并后的字符串,仍然是从小到大排列。如
输入:abcdef bcefghi
输出:abbccdeeffghi
6、 在一些科学研究领域,常常会遇到很大的数字,比如:光年(1光年=9,460,730,472,580,800米) 当面对这些非常巨大的数字时,计算机内基础类型(如int,longlong,double等)就很难存储它们,并进行运算了,所以,现在需要你来解决这个问题。输入a和b,(a,b > 1020),输出a+b的结果
输入:9234567880123, 1111111111111
输出:10345678991234
7、输入一个十进制数N,将它转换成R进制数输出。如:
输入:32,16
输出:20
8、 现在有一个编织地毯的问题。就是把地毯一圈一圈的往外编织,使得从上往下看时,地毯花色交错。输入是三个数据,分别是:地毯尺寸n(n为满足0<n<60的奇整数),中心花色字符,外围花色字符,后二者都为ASCII可见字符。输出是织在一起的地毯图案,中心花色与地毯外边花色字符从内层起交错相叠。输出的地毯之间应有一行间隔。示例如下:
输入:
11 B A
5 @ W
输出:
AAAAAAAAAAA
ABBBBBBBBBA
ABAAAAAAABA
ABABBBBBABA
ABABAAABABA
ABABABABABA
ABABAAABABA
ABABBBBBABA
ABAAAAAAABA
ABBBBBBBBBA
AAAAAAAAAAA
@@@@@
@WWW@
@W@W@
@WWW@
@@@@@
9、 现在有两条子母字符串,母字符串较长,子字符串较短。现在要从母字符串中裁剪出尽可能多的子字符串。
输入中含有一些数据,分别是成对出现的母字符串和子字符串,字符串都是用可见ASCII字符表示的,可见的ASCII字符有多少个,字符串的编码也有多少种样式。输入的字符串都不会超过1000个字符长。如果遇见#字符,则不再进行工作。
输出能从母字符串中剪出的最多子字符串个数,如果一条都没有,那就老老实实输出0,每个结果之间应换行。
输入:
Abcde
a3
aaaaaa
aa
#
输出:
0
3
10、有二个整数,它们加起来等于某个整数,乘起来又等于另一个整数,它们到底是真还是假,也就是这种整数到底存不存在,实在有点吃不准,你能快速回答吗?看来只能通过编程。
例如:
x + y = 9,x * y = 15 ? 找不到这样的整数x和y
1+4=5,1*4=4,所以,加起来等于5,乘起来等于4的二个整数为1和4
7+(-8)=-1,7*(-8)=-56,所以,加起来等于-1,乘起来等于-56的二个整数为7和-8
输入数据为成对出现的整数n,m(-10000<n,m<10000),它们分别表示整数的和与积,如果两者都为0,则输入结束。输出时,只需要对于每个n和m,输出“Yes”或者“No”,明确有还是没有这种整数就行了。
11、有一个经典数塔问题,它是这样描述的:有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少?
输入数据首先包括一个整数C,表示测试实例的个数,每个测试实例的第一行是一个整数N(1 <= N <= 100),表示数塔的高度,接下来用N行数字表示数塔,其中第i行有个i个整数,且所有的整数均在区间[0,99]内。对于每个测试实例,输出可能得到的最大和,每个实例的输出占一行。
输入:
1
5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
输出:
30
12、统计一篇文章里不同单词的总数。有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。每组只输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。
输入:
you are my friend
#
输出:
4
13、输入10个学生的成绩存入数组,分别用函数实现:
(1)求平均成绩;
(2)按分数高低进行排序并输出;
(3)如果输入的学生信息除了成绩外,还包括学生的学号和姓名。实现Search函数,通过输入学生学号查找并返回成绩。(用结构体做)。
14、有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
15、求矩阵中的“鞍点”。鞍点是在某个数值矩阵中,如果某个元素的值在本行中最大数,而在本列中最小数,则该数就为该矩阵的鞍点,一个矩阵只有一个鞍点或没有鞍点,编程寻找某个矩阵的鞍点,如果有则输出该数的值及行号和列号,若没有则输出“not found”信息。寻找鞍点并在函数中实现。
16、编一程序,设置一个排序函数sort,该函数将数组按照从小到大的顺序进行排序,其中有两个形式参数,一个为指向数组的指针p,另一个为数组的元素个数n。在主函数main()中要求从键盘输入10个数存入数组data[10]中,同时要求调用函数sort对data进行排序,并在main()中输出最终的排序结果。
17、输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写三个函数:①输入10个数;②进行处理;③输出10个数。所有函数的参数均用指针。
18、有一个班的4个学生,有5门课程。(建议使用结构体数组)
1)、求第一门课的平均分;
2)、找出有两门以上课程不及格的学生,输出他们的学号和全部课程成绩及平均分
3)、找出平均分在90分以上或全部课程成绩在85分以上的学生。
分别编写三个函数来实现以上三个要求
19、有排成一行的n个方格,用红(Red)、粉(Pink)、绿(Green)三色涂每个格子,每格涂一色,要求任何相邻的方格不能同色,且首尾两格也不同色.求全部的满足要求的涂法。输入数据包含多个测试实例,每个测试实例占一行,由一个整数N组成,(0<n<=50)。对于每个测试实例,请输出全部的满足要求的涂法,每个实例的输出占一行。
输入:
1
/*-
2
输出:
3
6
20、 ISBN号码。【问题描述】 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。ISBN码的首位数字表示书籍的出版语言,例如0代表英语;第一个分隔符“-”之后的三位数字代表出版社,例如670代表维京出版社;第二个分隔之后的五位数字代表该书在出版社的编号;最后一位为识别码。 识别码的计算方法如下: 首位数字乘以1加上次位数字乘以2„„以此类推,用所得的结果mod 11,所得的余数即为识别码,如果余数为10,则识别码为大写字母X。例如ISBN号码0-670-82162-4中的识别码4是这样得到的:对067082162这9个数字,从左至右,分别乘以1,2,…,9,再求和,即0×1+6×2+„„+2×9=158,然后取158 mod 11的结果4作为识别码。请编程对输入的ISBN码进行判断,如果正确则输出right,否则输出wrong。
综合题
1、学生信息管理系统
实现一个学生信息管理系统,学生信息包括(学号,姓名,性别,年龄,5门课成绩)。实现过程中需要用链表,一个节点对应一个学生的信息。数据存放到文件。软件启动时,从文件中读取数据并生成链表。插入、删除和查询都在链表中完成。软件关闭时,将数据更新到文件中。系统具体功能如下:
提示用户要完成什么操作:
A ( Add );D ( Delete );M ( Modify );Q ( Query );S(Statistics);E ( Exit )
用户选择A,完成添加一个新的学生信息;
用户选择D,提示用户输入需要删除的学生学号,如果没有该学号,提示用户输入学号错误,重新输入学号。如果输入的学号存在,则删除对应的学生所有信息。
用户选择M,提示用户输入需要修改的学生学号,如果没有该学号,提示用户输入学号错误,重新输入学号。如果输入的学号存在,则提示用户需要更新的学生信息。
用户选择Q,提示用户输入需要查询的学生学号,如果没有该学号,提示用户输入学号错误,重新输入学号。如果输入的学号存在,则输出该学号对应的学生信息(学号,姓名,性别,年龄,5门课成绩)。
用户选择S,直接输出统计信息,统计信息包括:每门课的平均分、每门课90-100,80-89,70-79,60-69,<60的人数。
用户选择E,退出系统。否则一直重复操作。
D、M、Q、S操作都可以终止,即用户选择D、M、Q或S后,即可以重新进入操作选择阶段,也可以终止。
2、通讯录。
设计要求:编写一个通讯录管理系统进行简单的通讯录信息管理。每个成员的相关信息包括:姓名、性别、年龄、联系电话、E-mail、住址等。 具体实现功能如下:
1)通讯录信息的输入、修改、删除、查找、排序、信息输出、文件保存等功能。
2)查找时如果有同名的记录,需要输出所有的记录信息。
*3)思考如何提高通讯录的查询效率。
3、计算日期差。
中国有句俗语叫“三天打鱼两天晒网”。某人从1990年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”(注意是否包含闰年)。如
输入:1990-01-06
输入:打鱼
4、扑克牌游戏
拱猪是一种很有趣的扑克牌游戏。即使你不知道它的玩法,你也可以由它的计分方式来了解它的趣味性。 假设在此我们仅考虑四个人的拱猪牌局,本题要求你根据下面的计分规则,在牌局结束时计算四位玩家所得分数。
我们分别以S、H、D及C来代表黑桃,红心,方块及梅花,并以数字1至 13来代表A、2、…、Q、K等牌点,例如:H1为红心A,S13为黑桃K。
牌局结束时,由各玩家持有的有关计分的牌(计分牌)仅有S12(猪),所有红心牌,D11(羊)及C10(加倍)等16张牌。其它牌均弃置不计。若未持有这16张牌之任一张则以得零分计算。
若持有C10的玩家只有该张牌而没有任何其它牌则得+50分,若除了C10 还有其它计分牌,则将其它计分牌所得分数加倍计算。
若红心牌不在同一家,则H1至H13等13张牌均以负分计,其数值为-50, -2,-3,-4,-5,-6,-7,-8,-9,-10,-20,-30,-40。而且S12与D11分别以-100及+100分计算。
若红心牌H1至H13均在同一家,有下列情形:
所有红心牌以+200分计算。
若S12、D11皆在吃下所有红心牌之一家,则此玩家得+500分。
而C10还是以前面所述原则计算之。
例一:若各玩家持有计分牌如下: ( 每列代表一玩家所持有之牌 )
S12 H3 H5 H13
D11 H8 H9
C10 H1 H2 H4 H6 H7
H10 H11 H12
则各家之得分依序为: -148 、 +83 、 -138 及 -60 。
例二:若各玩家持有计分牌如下:(第四家未持有任何计分牌)
H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13
S12 C10
D11
则各家之得分依序为: +200 、 -200 、 +100 及 0 。
例三:若有一玩家持有所有 16 张计分牌,则得 +1000 分。其余三家均得零分。
输入: 每个输入文件由多组测试数据构成,每组测试数据有四行,每一行第一个数为该玩家所持有计分牌总数,而后列出其所持有之所有计分牌,牌数与各计分牌均以一个以上的空格分开。相邻两组测试数据之间不会有空白行,读到四家持牌数都为 0 表示文件结束。
输出: 每一行输出一组测试数据对应的结果,依次输出各家所得分数,共四个整数 ( 含正负号,0 除外),相邻两个整数之间以一个空格分开,符号和数字间不可以有空格。每组输出间不需要有空白行。
5、 大数再临
前面我们已经解决了大数加法的问题,现在,我们要来解决大数乘法的问题。输入a和b,(a,b > 1020),输出a*b的结果。(123456*1111 = 123456*1000+123456*100+123456*10+123456*1)
输入:1234567890123, 10000000000000000000
输出:12345678901230000000000000000000
6、 大家都知道,手机号是一个11位长的数字串,同时,作为学生,还可以申请加入校园网,如果加入成功,你将另外拥有一个短号。假设所有的短号都是是 6+手机号的后5位,比如号码为13512345678的手机,对应的短号就是645678。同时,不同学校之间的同学,可以在拨出长号前+“600”,即可在不同学校之间进行校园网通话。(输入数据中,短号不重复)
现在,如果给你n个同学的信息,以及m条查询
输入,第一行输入n,m:代表接下来n行输入数据为学生id,对应学生的手机号码,和对应学生所在的学校;接下来有m行输入,表示有m条呼叫查询,如“A want call B”
输出:每条查询中,学生需要拨出的号码
输入:
6,3
A 13512345678 School 1
B 13556789654 School 1
C 16845678912 School 1
D 16796325874 School 2
E 13569741258 School 2
F 17869854712 School 3
A want call B
A want call F
D want call B
输出:
689654
60017869854712
60013556789654
7、 平常的上机考试虽然有实时的排名,但上面的排名只是根据完成的题数排序,没有考虑每题的分值,所以并不是最后的排名。给定录取分数线,请你写程序找出最后通过分数线的考生,并将他们的成绩按降序打印。
测试输入包含若干场考试的信息。每场考试信息的第1行给出考生人数N ( 0 < N < 1000 )、考题数M ( 0 < M < = 10 )、分数线(正整数)G;第2行排序给出第1题至第M题的正整数分值;以下N行,每行给出一名考生的准考证号(长度不超过20的字符串)、该生解决的题目总数m、以及这m道题的题号 (题目号由1到M)。 当读入的考生人数为0时,输入结束,该场考试不予处理。
对每场考试,首先在第1行输出不低于分数线的考生人数n,随后n行按分数从高 到低输出上线考生的考号与分数,其间用1空格分隔。若有多名考生分数相同,则按他们考号的升序输出。
(建议采用结构体数组)
输入:
4 5 25
10 10 12 13 15
CS004 3 5 1 3
CS003 5 2 4 1 3 5
CS002 2 1 2
CS001 3 2 3 5
1 2 40
10 30
CS001 1 2 2 3 20
10 10 10
CS000000000000000001 0
CS000000000000000002 2 1 2
0
输出:
3
CS003 60
CS001 37
CS004 37
0
1
CS000000000000000002 20
8、 我们每个人都有身份证。从身份证上,我们可以获得每个人的具体个人信息。这个数字有18位,前17位数字有特殊含义:前6位代表你来自的地区,然后是接下来的8位代表你的生日。其他4位代表什么?你可以百度或谷歌它。以下是代表您所在地区的代码。
Zhejiang 330000 |
Beijing 110000 |
* 710000 |
* 810000 |
Macao 820000 |
Tibei 540000 |
Liaoning 210000 |
Shanghai 310000 |
但是,在您的卡中,可能只显示33,因为0000被其他数字替换。这是小明的身份证号码331004198910120036你能说出他来自哪里吗?
前2个数字告诉他来自浙江省,19891012号是他的生日日期(yy / mm / dd)。Ps:第17位是表示性别的哦,男性是奇数,女性是偶数。所以小明是男性。
输入将包含2个部分:第一行中的数字n,这里的n表示有n个测试用例。对于每个测试用例,都有一串ID卡号。基于上述表格输出他来自哪里以及何时是他的生日。您可以参考样本输出的格式。(输入数据的地区编码不会超出上述表格所示范围)
输入:
2
330000198910120036
330000198910120046
输出:
He is from Zhejiang, and his birthday is on 10,12,1989.
She is from Zhejiang, and her birthday is on 10,12,1989.
9、 Sky从小喜欢奇特的东西,而且天生对数字特别敏感,一次偶然的机会,他发现了一个有趣的四位数2992,这个数,它的十进制数表示,其四位数字之和为2+9+9+2=22,它的十六进制数BB0,其四位数字之和也为22,同时它的十二进制数表示1894,其四位数字之和也为22,啊哈,真是巧啊。Sky非常喜欢这种四位数,由于他的发现,所以这里我们命名其为Sky数。但是要判断这样的数还是有点麻烦啊,那么现在请你帮忙来判断任何一个十进制的四位数,是不是Sky数吧。
输入含有四位正整数的n,如果为0,则输入结束。若n为Sky数,则输出“#n is a Sky Number.”,否则输出“#n is not a Sky Number.”。每个结果占一行。注意:#n表示所读入的n值。
输入:
2992
1234
0
输出:
2992 is a Sky Number.
1234 is not a Sky Number.
10、 龟兔赛跑(新)
很久以前,兔子赛跑输给乌龟后,心中郁闷,发誓要报仇,终于练成了绝技,能够以恒定的速度(VR m/s)一直跑。兔子想找机会教训乌龟。于是兔子再次向乌龟发起挑战。乌龟接受挑战。
比赛是设在一条笔直的道路上,长度为L米,规则很简单,谁先到达终点谁就算获胜。
为了能够再赢兔子,乌龟买了一辆电瓶车。这辆车在有电的情况下能够以VT1 m/s的速度“飞驰”,可惜电池容量有限,每次充满电最多只能行驶C米的距离,以后就只能用脚来蹬了,乌龟用脚蹬时的速度为VT2 m/s。更过分的是,乌龟竟然在跑道上修建了很多很多(N个)的供电站,供自己给电动车充电。但是,每次充电需要花费的时间竟然是0秒。每次,乌龟经过一个充电站的时候可以选择去或不去充电,但是因为充电时间为0秒,聪明的乌龟当然是每次都去充电啦。
比赛马上开始了,兔子和带着充满电的电动车的乌龟并列站在起跑线上。你的任务就是写个程序,判断乌龟能不能赢了一直以恒定速度奔跑的兔子。
输入数据:
本题目包含多组测试。每个测试包括四行:
第一行是一个整数L代表跑道的总长度
第二行包含三个整数N,C,分别表示充电站的个数,电动车冲满电以后能行驶的距离
第三行也是三个整数VR,VT1,VT2,分别表示兔子跑步的速度,乌龟开电动车的速度,乌龟脚蹬电动车的速度
第四行包含了N(N<=100)个整数p1,p2...pn,分别表示各个充电站离跑道起点的距离,其中0<p1<p2<...<pn<L
其中每个数都在32位整型范围之内。
输出数据:
当乌龟赢的时候输出一行 “What a pity rabbit!"。否则输出一行"Good job,rabbit!";
题目数据保证不会出现乌龟和兔子同时到达的情况。
输入:
100
3 30
10 20 2
30 60 90
输出:
What a pity rabbit!