导读
信息学提高班上了十多节课,我们深入学习了数组和函数的基本概念,练习了相关习题。
本次课程,我们由浅入深,通过练习题,一起巩固一下所学知识,强化一下对知识的掌握。
1 说在前面的话
信息学提高班内容最多的两大部分,已经讲完了!
总的来说,数组和函数难度更大,逻辑性更强,也需要我们更加深入的去理解代码。
想学好信息学,需要我们不断深入,不断探索,不断思考!
这一节课,让我们一起,通过一些练习题目加深我们对数组和函数的认知。
2 数组与函数综合练习
数组几乎是我们后续代码中必备的结构了。也是信息学竞赛必备的基础结构,几乎每道题目都需要用到数组。数组的重要性不言而喻。
函数可以帮助我们更好地实现更多有趣的内容,可以帮助我们将常用的代码封装起来,我们只需要调用即可。如果没有函数,可能我们的代码会整体看着很乱,但是,添加了函数,就能让我们的代码结构更清晰。
让我们从最简单的开始,一步一步深入,对于大多数题目,希望大家都能尝试使用函数与不使用函数的方式实现!特别的,大多数题目,代码不唯一哦,希望大家的解法能够多种多样!
1 热身
热身题目为基础题目,主要帮助大家巩固数组最基本的操作。
1、依次完成如下要求
定义一个整型数组,数组长度为10,赋初值分别为1-10;
输出第六个数据;
将第七个数据变为0;
使用输入赋值给第八个数据赋值;
将第三个数据扩大为原来的5倍;
将第一个数据加到第二个数据上去;
将第四个数据和第五个数据互换;
2、成绩输出
存储五位同学的成绩,并输出。
输入输出示例:
【输入】:
91 82 83 94 59
【输出】:
第1名同学的成绩是91;
第2名同学的成绩是82;
第3名同学的成绩是83;
第4名同学的成绩是94;
第5名同学的成绩是59;
3、成绩统计
输入n位同学的成绩,统计90分以上(含90分)的学生的个数和学号。
输入输出说明:
【输入】:
第一行一个数据n,表示n位同学,1≤n≤100;
接下来n行数据,每行两个数据id和score:
第一个数据id为学生学号,第二个数据score为学生成绩,0≤n≤100;
【输出】:
2行数据:
第一行为90分以上学生的个数;
第二行为90分以上学生的学号,用空格隔开;
输入输出示例:
【输入】:
5
0 91
1 82
2 83
3 94
4 59
【输出】:
2
0 3
4、字符串输入输出
定义一个字符数组,输入一段带有空格的字符串,并输出。
输入输出示例:
【输入】:
ABC DEF
【输出】:
ABC DEF
5、字符统计
输入一串字符串,包含数字、字母(区分大小写)、空格、半角逗号和半角句号。输入一个检测字符,求字符串中检测字符的个数。
输入输出示例:
【输入】:
Hello, AI and BlockChain technology.
a
【输出】:
2
【注】
区分大小写,不统计大写字母A。
6、依次完成如下要求
定义一个二维整型数组,3行5列;
使用定义时赋值,赋的值分别为1-15;
输出第第二行第二列的数据;
将第一行第二列数据赋值为12;
使用输入赋值给第一行第五列的数据赋值;
将第三行第四列的数据扩大为原来的5倍;
将第一行最后一个数据加到第一行第一个数据上去;
将左上角的数据和右下角的数据互换;
使用循环嵌套输出这个二维数组;
7、判断等式
有一个n行3列的数组,如果每一行的第一个数据加上第二个数据等于第三个数据,则称这一行为一个等式。输出二维数组中等式的个数。
输入输出示例:
【输入】:
1 2 3
4 5 6
4 5 9
2 3 5
2 5 8
【输出】:
3
2 入门
入门题目,我们更加深入探讨数组,对数组有更加清晰的认识。
1、找最值
输入一个整数n,并输入n个整数,然后输出这n个整数的最大值和最小值。
输入输出说明:
【输入】:
第一行一个数据n,表示n个整数,1≤n≤100;
接下来下来一行n个整数;
【输出】:
2行数据:
第一行为n个数据的最大值;
第二行为n个数据的最小值;
输入输出示例:
【输入】:
5
5 6 7 8 9
【输出】:
9
5
2、数组逆序
输入一个整数n,并输入n个整数,然后将这n个数据逆序。
输入输出说明:
【输入】:
第一行一个数据n,表示n个整数,1≤n≤100;
接下来下来一行n个整数;
【输出】:
1行n个数据,输入数据的逆序输出;
输入输出示例:
【输入】:
5
5 6 7 8 9
【输出】:
9 8 7 6 5
3、陶陶摘苹果(NOIP2005普及组复赛A)
陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。
现在已知10个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。假设她碰到苹果,苹果就会掉下来。
输入输出说明:
【输入】:
包括两行数据。
第一行:10个整数,分别表示10个苹果到地面的高度,用空格隔开。
第二行:一个整数,表示陶陶把手伸直的时候能够达到的最大高度。
以上整数均在100-200之间,单位为厘米。
【输出】:
包括一行,这一行只包含一个整数,表示陶陶能够摘到的苹果的数目。
输入输出示例:
【输入】:
100 200 150 140 129 134 167 198 200 111
110
【输出】:
5
4、统计数字字符个数
定义一个字符数组,输入一段带有空格的字符串,并输出数字0-9字符出现的个数。
输入输出示例:
【输入】:
ABC123 123DEF
【输出】:
6
5、加密传输与解密
输入一串英文字符串,为了保证安全,需要加密传输。加密方式为将每个字符变为其后一个位置的字符。例如,a变为b,A变为B。注意z变为a,Z变为A。
对方收到加密数据后要进行解密,,解密方式为将每个字符变为其前面第五个位置的数据
输入输出示例:
【输入】:
ABcdEF
【输出】:
加密后:BCdeFG
解密后:ABcdEF
6、交换两行元素
定义二维数组,交换二位数组两行元素。
输入输出说明:
【输入】:
一行:2个整数m和n,表示m行n列的矩阵,1≤m,n≤100。
后m行,每行n个数据,表示m行n列的矩阵,数字在0-100之间。
一行,每行两个数据a,b,表示交换第a行和第b行的数据。
【输出】:
输出执行后的二维数组。
输入输出示例:
【输入】:
3 4
1 2 3 4
5 6 7 8
1 6 4 9
1 3
【输出】:
1 6 4 9
5 6 7 8
1 2 3 4
7、计算边缘之和
二维数组第一行,最后一行,第一列和最后一列共同构成二维数组的边缘,计算边缘上所有数据的和。
输入输出说明:
【输入】:
一行:2个整数m和n,表示m行n列的矩阵,1≤m,n≤100。
后m行,每行n个数据,表示m行n列的矩阵,数字在0-100之间。
【输出】:
二维数组的边缘之和。
输入输出示例:
【输入】:
4 3
4 5 1
4 5 9
2 3 5
0 5 5
【输出】:
40
【说明】
4+5+1+9+5+5+5+0+2+4 = 40
3 提升
通过前面的题目,我想大家应该能对相关的知识有更深刻的认识了,让我们继续深入,不断练习吧!
入门题目,我们更加深入探讨数组,对数组有更加清晰的认识。
1、不高兴的津津(NOIP2004普及组复赛)
津津上初中了。妈妈认为津津应该更加用功学习,所以津津除了上学之外,还要参加妈妈为她报名的各科复习班。另外每周妈妈还会送她去学习朗诵、舞蹈和钢琴。但是津津如果一天上课超过八个小时就会不高兴,而且上得越久就会越不高兴。假设津津不会因为其它事不高兴,并且她的不高兴不会持续到第二天。请你帮忙检查一下津津下周的日程安排,看看下周她会不会不高兴;如果会的话,哪天最不高兴。
输入输出说明:
【输入】:
包括七行数据,分别表示周一到周日的日程安排。
每行两个小于10的非负整数,用空格隔开,分别表示津津在学校上课的时间和妈妈安排她上课的时间;
【输出】:
一行一个数字:
如果不会不高兴则输出0,
如果会则输出最不高兴的是周几(用1, 2, 3, 4, 5, 6, 7分别表示周一,周二,周三,周四,周五,周六,周日)。
如果有两天或两天以上不高兴的程度相当,则输出时间最靠前的一天;
输入输出示例:
【输入】:
5 3
6 2
7 2
5 3
5 4
0 4
0 6
【输出】:
3
2、二维数组基本操作
定义二维数组的基本操作包括:
交换:互换两行或者两列数据;
倍增:给某一行或某一列乘一个非零数;
倍加:将一行或一列数据的倍数加到另一行或另一列上去。
现在要求你输入一个二维数组,并执行上述操作:
输入输出说明:
【输入】:
第一行:3个整数m和n和k,表示m行n列的矩阵,执行k次基本操作,1≤m,n,k≤100。
后m行,每行n个数据,表示m行n列的矩阵,数字在0-100之间。
后k行,每行多个数据,且至少有a,b:
a的取值为0,1:0表示对行做操作,1表示对列做操作;
b的取值为1,2,3:1表示交换,2表示倍乘,3表示倍加。
若b为1,则后面有数据c,d:表示交换c行(或列)和d行(或列);
若b为2,则后面有数据c,e:表示将第c行(或列)扩大为e倍;
若b为3,则后面有数据c,d,e:表示将第c行(或列)扩大e倍的值加到d行(或列),c行(或列)的值不做改变。
【输出】:
输出执行后的二维数组,每行每个数据使用空格隔开。
输入输出示例:
【输入】:
3 4 4
1 2 3 4
5 6 7 8
1 6 4 9
0 1 1 2
1 2 3 3
0 3 1 2 2
1 3 2 3 2
【输出】:
5 6 33 8
11 14 79 20
1 6 24 9
说在后面的话
通过这节课,希望大家能够更好地掌握数组和函数,打好相关基础,在后续学习中,越来越棒!
让我们一起努力,在后续的课程中,继续深入,不断前行!
AI与区块链技术
长按二维码关注