001:与指定数字相同的数的个数

  • 总时间限制: 1000ms 内存限制: 65536kB

描述

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

输入

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

输出

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

样例输入

3
2 3 2
2

样例输出

2

AC

#include <iostream>
using namespace std;
int main(){int n,m,str[100],count=0;scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&str[i]);}scanf("%d",&m);for(int i=1;i<=n;i++){if(str[i]==m){count++;}}printf("%d",count);return 0;
}

002:陶陶摘苹果

  • 总时间限制: 1000ms 内存限制: 65536kB

描述

  • 陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。

  • 现在已知10个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。假设她碰到苹果,苹果就会掉下来。

输入

  • 包括两行数据。
  • 第一行包含10个100到200之间(包括100和200)的整数(以厘米为单位)分别表示10个苹果到地面的高度,两个相邻的整数之间用一个空格隔开。
  • 第二行只包括一个100到120之间(包含100和120)的整数(以厘米为单位),表示陶陶把手伸直的时候能够达到的最大高度。

输出

  • 包括一行,这一行只包含一个整数,表示陶陶能够摘到的苹果的数目。

样例输入

100 200 150 140 129 134 167 198 200 111
110

样例输出
5

思考

  • 与上一题类似。

AC

#include <iostream>
using namespace std;
int main(){int num[200],height,count=0;for(int i=1;i<=10;i++){scanf("%d",&num[i]);}scanf("%d",&height);for(int i=1;i<=10;i++){if(num[i]<=height+30){count++;}}printf("%d",count);return 0;
}

003:年龄与疾病

  • 总时间限制: 1000ms 内存限制: 65536kB

描述

  • 某医院想统计一下某项疾病的获得与否与年龄是否有关,需要对以前的诊断记录进行整理,按照0-18、19-35、36-60、61以上(含61)四个年龄段统计的患病人数占总患病人数的比例。

输入

  • 共2行,
  • 第一行为过往病人的数目n(0 < n <= 100),
  • 第二行为每个病人患病时的年龄。

输出

  • 按照0-18、19-35、36-60、61以上(含61)四个年龄段输出该段患病人数占总患病人数的比例,以百分比的形式输出,精确到小数点后两位。每个年龄段占一行,共四行。

样例输入

10
1 11 21 31 41 51 61 71 81 91

样例输出

20.00%
20.00%
20.00%
40.00%

思考

  • 以百分比的形式输出,精确到小数点后两位,double类型输出。

AC

#include <iostream>
using namespace std;
int main(){int n,num[101];double a=0,b=0,c=0,d=0;scanf("%d",&n);for(int i=0;i<n;i++){scanf("%d",&num[i]);if(num[i]>0 && num[i]<=18){a++;}else if(num[i]>=19 && num[i]<=35){b++;}else if(num[i]>=36 && num[i]<=60){c++;}else{d++;}}printf("%.2lf%\n",a/n*100);printf("%.2lf%\n",b/n*100);printf("%.2lf%\n",c/n*100);printf("%.2lf%\n",d/n*100); return 0;
}

004:校门外的树

  • 总时间限制: 1000ms 内存限制: 65536kB

描述

  • 某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米。我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置;数轴上的每个整数点,即0,1,2,……,L,都种有一棵树。

  • 由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将这些树都移走后,马路上还有多少棵树。

输入

  • 第一行有两个整数L(1 <= L <= 10000)和 M(1 <= M <= 100),L代表马路的长度,M代表区域的数目,L和M之间用一个空格隔开。

  • 接下来的M行每行包含两个不同的整数,用一个空格隔开,表示一个区域的起始点和终止点的坐标。

  • 对于20%的数据,区域之间没有重合的部分;

  • 对于其它的数据,区域之间有重合的情况。

输出

  • 包括一行,这一行只包含一个整数,表示马路上剩余的树的数目。

样例输入

500 3
150 300
100 200
470 471

样例输出

  • 298

思考

  • 用数组tree[L+1],赋初值为1 ;
  • 输入一个区间都将a中区间内的元素置值0;
  • 统计a中非0元素个数即答案。

AC

#include <iostream>
using namespace std;
int l,m,count=0;
int tree[10000+10];    //输入L则有L+1棵树
int main(){scanf("%d %d",&l,&m);for(int i=0;i<l+1;i++){tree[i]=1; //用数组tree[L+1],赋初值为1 ;}for(int i=0;i<m;i++){int a,b;scanf("%d %d",&a,&b);for(int j=a;j<=b;j++){tree[j]=0;   //用数组tree[L+1],赋初值为0 ;表示移走 }}for(int i=0;i<l+1;i++){if(tree[i])  count++;} printf("%d\n",count);return 0;
}

005:计算鞍点

  • 总时间限制: 1000ms 内存限制: 65536kB

描述

  • 给定一个5*5的矩阵,每行只有一个最大值,每列只有一个最小值,寻找这个矩阵的鞍点。
  • 鞍点指的是矩阵中的一个元素,它是所在行的最大值,并且是所在列的最小值。
  • 例如:在下面的例子中(第4行第1列的元素就是鞍点,值为8 )。
11 3 5 6 9
12 4 7 8 10
10 5 6 9 11
8 6 4 7 2
15 10 11 20 25

输入

  • 输入包含一个5行5列的矩阵

输出

  • 如果存在鞍点,输出鞍点所在的行、列及其值,如果不存在,输出"not found"

样例输入

11 3 5 6 9
12 4 7 8 10
10 5 6 9 11
8  6 4 7 2
15 10 11 20 25

样例输出

4 1 8

思考

  • 注解就够了!!

AC

#include <iostream>
using namespace std;
#define n 5
int a[n][n];
int main(){int max,min,ni,nj,count=0;for(int i=0;i<n;i++){for(int j=0;j<n;j++){scanf("%d",&a[i][j]);}}for(int i=0;i<n;i++){max=a[i][0];   //初始化最大 for(int j=0;j<n;j++){//每行的最大值 if(a[i][j]>=max){ni=i;nj=j;max=a[i][j];}}min=max;   //初始化最小 for(int k=0;k<n;k++){ //所在列的最小值。 if(a[k][nj]<min){min=a[k][nj];}}if(max==min){  //判断是否符合条件 count=1;printf("%d %d %d\n",ni+1,nj+1,max);break;}}if(count==0)   printf("not found\n");return 0;
}

006:图像模糊处理

  • 总时间限制: 1000ms 内存限制: 65536kB

描述
给定n行m列的图像各像素点的灰度值,要求用如下方法对其进行模糊化处理:

  1. 四周最外侧的像素点灰度值不变;

  2. 中间各像素点新灰度值为该像素点及其上下左右相邻四个像素点原灰度值的平均(舍入到最接近的整数)。

输入

  • 第一行包含两个整数n和m,表示图像包含像素点的行数和列数。1 <= n <= 100,1 <= m <= 100。
  • 接下来n行,每行m个整数,表示图像的每个像素点灰度。相邻两个整数之间用单个空格隔开,每个元素均在0~255之间。

输出

  • n行,每行m个整数,为模糊处理后的图像。相邻两个整数之间用单个空格隔开。
    样例输入
4 5
100 0 100 0 50
50 100 200 0 0
50 50 100 100 200
100 100 50 50 100

样例输出

100 0 100 0 50
50 80 100 60 0
50 80 100 90 200
100 100 50 50 100

思考

  1. 四周最外侧的像素点灰度值不变;

  2. 中间各像素点新灰度值为该像素点及其上下左右相邻四个像素点原灰度值的平均(舍入到最接近的整数)。

  3. Round函数返回一个数值,该数值是按照指定的小数位数进行四舍五入运算的结果。

AC

/*
Round函数返回一个数值,该数值是按照指定的小数位数进行四舍五入运算的结果。
*/
#include <iostream>
#include <stdio.h>
#include <cmath>
using namespace std;
#define N 100
int n,m;
double a[N][N];
int b[N][N];
int main(){scanf("%d %d",&n,&m);for(int i=0;i<n;i++){   //读入数组 for(int j=0;j<m;j++){scanf("%lf",&a[i][j]);}}for(int i=0;i<n;i++){  if(i==0 || i==n-1){//外围行不变for(int j=0;j<m;j++){b[i][j]=(int)a[i][j];}}else{  for(int j=0;j<m;j++){if(j==0||j==m-1){   //外围列不变b[i][j]=(int)a[i][j];}else{ //内圈求平均值b[i][j]=round((a[i-1][j]+a[i][j-1]+a[i][j+1]+a[i+1][j]+a[i][j])/5); }} } }for(int i=0;i<n;i++){    //输出数组 for(int j=0;j<m;j++){printf("%d ",b[i][j]);}printf("\n");}return 0;
}

007:矩阵转置

  • 总时间限制: 1000ms 内存限制: 65536kB

描述

  • 输入一个n行m列的矩阵A,输出它的转置AT。

输入

  • 第一行包含两个整数n和m,表示矩阵A的行数和列数。1 <= n <= 100,1 <= m <= 100。
  • 接下来n行,每行m个整数,表示矩阵A的元素。相邻两个整数之间用单个空格隔开,每个元素均在1~1000之间。

输出

  • m行,每行n个整数,为矩阵A的转置。相邻两个整数之间用单个空格隔开。

样例输入

3 3
1 2 3
4 5 6
7 8 9

样例输出

1 4 7
2 5 8
3 6 9

思考

  • 逆序一维数组的基础加以改变!!!

AC

#include <iostream>
using namespace std;
#define N 100
int n,m;
int a[N][N];
int main(){scanf("%d %d",&n,&m);for(int i=0;i<n;i++){for(int j=0;j<m;j++){scanf("%d",&a[i][j]);}}for(int i=0;i<m;i++){for(int j=0;j<n;j++){ //矩阵转置后行数和例数也随之转置printf("%d ",a[j][i]);}printf("\n");}return 0;
}

第五周全部题解,

程序设计与算法(一)第5周测验(2020春季)相关推荐

  1. 程序设计与算法(三)第09周测验(2020春季)

    001:Set 总时间限制: 5000ms 内存限制: 100000kB 描述 现有一整数集(允许有重复元素),初始为空.我们定义如下操作: add x 把x加入集合 del x 把集合中所有与x相等 ...

  2. 程序设计与算法(三)期末考试(2020春季)

    001:编程填空:二进制输出 输入 第一行是整数n(n<15),表示有n个正整数要处理 第二行是n个正整数 输出 对每个给出的正整数,输出其二进制表示.不足31位则用0补齐到31位 样例输入 3 ...

  3. 数据结构与算法Python版-第一周测验

    1单选(2分) 以下关于基于有穷观点的能行方法说法错误的是: A. 指令执行在有限步骤后终止 B. 由有限数量的任意指令构成 C. 指令每次执行都得到唯一的结果 D. 原则上可以由人单独采用纸笔完成 ...

  4. 北京大学MOOC 程序设计与算法(三)魔兽世界三(开战)

    魔兽世界三(开战) 题目来源 北京大学MOOC 程序设计与算法(三)魔兽世界3(2020秋季) 题目描述 魔兽世界三(开战) 总时间限制: 2000ms 内存限制: 65536kB 魔兽世界的西面是红 ...

  5. 20162303 2016-2017-2 《程序设计与数据结构》第六周学习总结

    20162303 2016-2017-2 <程序设计与数据结构>第六周学习总结 教材学习内容总结 通过继承来创建类,比从零开始编写代码来的更快.更容易也更经济. 继承在父类与子类之间建立了 ...

  6. 学号 20172326 《程序设计与数据结构》第三周学习总结

    学号 20172326 <程序设计与数据结构>第三周学习总结 教材学习内容总结 队列是先进先出的数据结构(FIFO)与栈不同,队列的两端可分别进行操作 first与front相同,返回首段 ...

  7. 20172310 2017-2018-2 《程序设计与数据结构》第八周学习总结

    20172310 2017-2018-2 <程序设计与数据结构>第八周学习总结 教材学习内容总结 我的总结主要是按照课本的顺序,对一些重要的知识点做出的总结和记录,方便后期的查看,当然其中 ...

  8. 20172311《程序设计与数据结构》第八周学习总结

    20172311<程序设计与数据结构>第八周学习总结 教材学习内容总结 第十二章 优先队列与堆 堆(heap)就是具有两个附加属性的一颗二叉树 1.它是一颗完全树 2.对每一个节点,它小于 ...

  9. 20172322 《程序设计与数据结构》第八周学习总结

    20172322 <程序设计与数据结构>第八周学习总结 教材学习内容总结 本章的内容主要讲堆的知识,而所谓堆就是一种具有一些特殊属性的树,就像二叉查找树一样.而堆也有两种分类,分别是 最大 ...

最新文章

  1. (五)Docker镜像管理2之nginx镜像制作
  2. 修改Linux终端命令行字体颜色(对比明显,超炫酷)
  3. [Android]用架构师角度看插件化(2)-Replugin 唯一hook点
  4. Boost:点质心的测试程序
  5. ExtJs2.0学习系列(11)--Ext.XTemplate
  6. JZ55 二叉树深度
  7. spark-streaming-连接kafka的两种方式
  8. python函数 - 函数创建、属性、参数及偏函数
  9. matlab加分号,matlab加分号
  10. pt达人教你如何用pttools批量刷新pt站点数据
  11. 常用邮箱服务器地址大全截止2020-9
  12. 联想官方OEM分区制作
  13. laravel5.5利用网易邮箱发送邮件
  14. 电脑同时连接有线和无线网络怎么设置有线网络优先
  15. 《5K入门级项目实战:好来屋在线影院》之第 9 战 —— 电影信息管理
  16. 滑动窗口有关的算法面试题
  17. DM数据库常用系统视图及数据字典查询部分汇总
  18. 最佳情侣身高差 Java版 PTA
  19. Warning: Data truncated for column at row 1
  20. 100美元哪里去了?

热门文章

  1. CTF-实验吧-认真你就输了
  2. java rrdtool_JAVA调用脚本并传输流数据(java调用rrdtool并传输到页面展示)
  3. MyEclipse:MyEclipse软件界面简介(菜单栏、工具栏、侧边栏、工作区)之详细攻略
  4. java函数式编程:四大Function
  5. 智慧城市系列课程4-智慧城市-城市治理-新能源火灾和水务监管
  6. 新时代城市治理体系智慧大脑的建设误区详情分析
  7. MBI5024驱动程序
  8. 搭建学习环境(七)——Webug4.0
  9. 科研课题查新报告该怎么写?
  10. google地图聚合markerclusterer.js修改聚合点显示内容