判断数组相同数c语言_C语言等级考试<二级>测试卷(含答案)

点击蓝字关注我们

全国青少年软件编程(C语言)等级考试试卷

(二级)测试卷

2019年12月

分数:100.00            题数:7

一、编程题(第1部分)(共4题,每题15分,共60分)

1.与指定数字相同的数的个数 

输出一个整数序列中与指定数字相同的数的个数。

时间限制:1000

内存限制:65536

输入

输入包含三行:第一行为N,表示整数序列的长度(N <= 100);第二行为N个整数,整数之间以一个空格分开;第三行包含一个整数,为指定的整数m。

输出

输出为N个数中与m相同的数的个数。

样例输入

3

2 3 2

2

样例输出

2

方法1:简单统计

ddd4621b6221015682893bd13fe7a4b8.png

2. 找第一个只出现一次的字符

给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。如果没有,输出no。

时间限制:1000

内存限制:65536

输入

一个字符串,长度小于100000。

输出

输出第一个仅出现一次的字符,若没有则输出no。

样例输入

abcabd

样例输出

c

方法1:桶排序

f94bd5137797cfb9471d806cc25378d8.png

方法2:暴力搜索

b09fabfd3319139759825c7d25e05d68.png

3. 图像相似度

图像相似度

给出两幅相同大小的黑白图像(用0-1矩阵)表示,求它们的相似度。

说明:若两幅图像在相同位置上的像素点颜色相同,则称它们在该位置具有相同的像素点。两幅图像的相似度定义为相同像素点数占总像素点数的百分比。

时间限制:1000

内存限制:65536

输入

第一行包含两个整数m和n,表示图像的行数和列数,中间用单个空格隔开。1 <= m <= 100, 1 <= n <= 100。之后m行,每行n个整数0或1,表示第一幅黑白图像上各像素点的颜色。相邻两个数之间用单个空格隔开。之后m行,每行n个整数0或1,表示第二幅黑白图像上各像素点的颜色。相邻两个数之间用单个空格隔开。

输出

一个实数,表示相似度(以百分比的形式给出),精确到小数点后两位。

样例输入

3 3

1 0 1

0 0 1

1 1 0

1 1 0

0 0 1

0 0 1

样例输出

44.44

方法1:二维数组

fb14a7d8fb0ec3235cf738741e5c42ce.png

4. 最大值和最小值的差

输出一个整数序列中最大的数和最小的数的差。

时间限制:1000

内存限制:65536

输入

第一行为M,表示整数个数,整数个数不会大于10000;第二行为M个整数,以空格隔开,每个整数的绝对值不会大于10000。

输出

输出M个数中最大值和最小值的差。

样例输入

5

2 5 7 4 2

样例输出

5

方法1:使用数组

e3a28096de886da2bd9dfc86bd740f19.png

方法2:不使用数组

3b6f103258b254791303ad61d6ac45bd.png

二、编程题(第2部分)(共2题,每题13分,共26分)

5.  成绩排序

给出班里某门课程的成绩单,请你按成绩从高到低对成绩单排序输出,如果有相同分数则名字字典序小的在前。

时间限制:1000

内存限制:65536

输入

第一行为n (0 < n < 20),表示班里的学生数目;接下来的n行,每行为每个学生的名字和他的成绩, 中间用单个空格隔开。名字只包含字母且长度不超过20,成绩为一个不大于100的非负整数。

输出

把成绩单按分数从高到低的顺序进行排序并输出,每行包含名字和分数两项,之间有一个空格。

样例输入

4

Kitty 80

Hanmeimei 90

Joey 92

Tim 28

样例输出

Joey 92

Hanmeimei 90

Kitty 80

Tim 28

方法1:冒泡排序

d8b30a15eab125c98789473f8c0c79f6.png

方法2 :使用sort函数

2bd7b5d5058b299013820f3f11cc3f21.png

6. 和为给定数

给出若干个整数,询问其中是否有一对数的和等于给定的数。

时间限制:1000

内存限制:65536

输入

共三行:第一行是整数n(0 < n <=100,000),表示有n个整数。第二行是n个整数。整数的范围是在0到10^8之间。第三行是一个整数m(0 <= m <= 2^30),表示需要得到的和。

输出

若存在和为m的数对,输出两个整数,小的在前,大的在后,中间用单个空格隔开。若有多个数对满足条件,选择数对中较小的数更小的。若找不到符合要求的数对,输出一行No。

样例输入

4

2 5 1 4

6

样例输出

1 5

方法1:二分查找

864dc1b752ad0bf9d6ec05d9fc2001a2.png

410c1795d2acf2aca2e7ebdfc70de53d.png

三、编程题(第3部分)(共1题,每题14分,共14分)

7.     计算两个日期之间的天数

给定两个日期,计算相差的天数。比如2010-1-1和2010-1-3相差2天。

时间限制:1000

内存限制:65536

输入

共两行:第一行包含三个整数startYear,startMonth,startDay,分别是起始年、月、日。第二行包含三个整数endYear,endMonth,endDay,分别是结束年、月、日。相邻两个整数之间用单个空格隔开。年份范围在1~3000。保证日期正确且结束日期不早于起始日期。

输出

输出一个整数,即是两个日期相差的天数。

样例输入

2008 1 1

2009 1 1

样例输出

366

方法1:日期差

5d8489dd8871105f72d6fab5e457d0eb.png

10fc86e667e4d7257a149113429b425b.png

e9361ba00df915a677b93f5bc2fd21a5.png

bae46a494446c753ac26df0f67ff5c76.png

微信搜索

NOIP那些事儿

长按识别左侧二维码,关注我们

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值