第6部分 一维数组和二维数组
第1关:排序问题
任务描述
本关任务:将十个数进行从大到小的顺序进行排列。
相关知识(略)
编程要求
根据提示,在右侧编辑器Begin-End处补充代码。
输入
输入十个整数。
输出
以从大到小的顺序输出这个十个数。
测试说明
样例输入:
1 2 3 4 5 6 7 8 9 10
样例输出:
10 9 8 7 6 5 4 3 2 1
参考答案:
#include<stdio.h>
int main(void)
{/*********Begin*********/int i,j,temp=0;int a[10];for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=1;i<10;i++)for(j=0;j<9;j++)if(a[j]<a[j+1]){temp=a[j];a[j]=a[j+1];a[j+1]=temp;}for(i=0;i<10;i++)printf("%d ",a[i]);/*********End**********/return 0;
}
第2关:查找整数
任务描述
题目描述:给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。
相关知识(略)
编程要求
根据提示,在右侧编辑器Begin-End处补充代码。
输入
第一行包含一个整数n。
第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。
第三行包含一个整数a,为待查找的数。
输出
如果a在数列中出现了,输出它第一次出现的位置(位置从1开始编号),否则输出-1。
测试说明
样例输入:
6
1 9 4 8 3 9
9
样例输出:
2
提示:
数据规模与约定。
1 <= n <= 1000
参考答案:
#include<stdio.h>
int main(void)
{/*********Begin*********/int n,i,a,sum=0;int arr[1000];scanf("%d",&n);for(i=0;i<n;i++)scanf("%d",&arr[i]);scanf("%d",&a);for(i=0;i<n;i++){if(arr[i]==a) {sum=i+1;goto loop;}} loop: if(sum==0) printf("-1");else printf("%d",sum);/*********End**********/return 0;
}
第3关:计算数组中元素的最大值及其所在的行列下标值
任务描述
题目描述:按如下函数原型编程从键盘输入一个m行n列的二维数组,然后计算数组中元素的最大值及其所在的行列下标值。其中m和n的值由用户键盘输入。已知m和n的值都不超过10。
相关知识(略)
输入
输入数组大小:"%d,%d"
下面输入数组中元素。
输出
输出格式:
数组大小输入提示信息:“Input m, n:”
数组元素输入提示信息:"Input %d*%d array: "
输出格式:“max=%d, row=%d, col=%d”
样例输入
5,5
1 2 3 4 5
4 5 6 100 2
3 2 1 5 6
1 2 3 5 4
3 5 6 4 8
样例输出
Input m, n:Input 5*5 array:
max=100, row=2, col=4
开始你的任务吧,祝你成功!
编程要求
根据提示,在右侧编辑器Begin-End处补充代码。
测试说明
平台会对您的代码进行运行测试,如果实际输出与预期输出相同,则算通关。
参考答案:
#include<stdio.h>
int main(void)
{/*********Begin*********/int m,n;int a[5][5];int i,j,max=0,row=0,col=0;scanf("%d,%d",&m,&n);for(i=0;i<m;i++)for(j=0;j<n;j++)scanf("%d",&a[i][j]);max=a[0][0];for(i=0;i<m;i++)for(j=0;j<n;j++)if(max<=a[i][j]){max=a[i][j];row=i+1;col=j+1;}printf("Input m, n:");printf("Input %d*%d array:\n",m,n);printf("max=%d, row=%d, col=%d",max,row,col);/*********End**********/return 0;
}
第4关:二分查找
任务描述
题目描述:将n个从小到大排序的整数(n<1000000)从1~n进行编号,并一个待查找的整数m,请使用二分法进行查找。
####相关知识(略)
####编程要求
根据提示,在右侧编辑器Begin-End处补充代码。
输入
输入包括3行,第一行为整数n,第二行包括n个整数,以空格分隔,第三行为整数m。
输出
如果能够在序列中找到整数m,则输出编号(如果存在多个编号,返回编号最小的),如果不存在,则输出None。
测试说明
样例输入:
10
1 2 4 5 6 7 8 9 10 11
10
样例输出:
9
参考答案:
#include <stdio.h>
int a[1000005],n,t;
int BS(){int l=0,r=n-1;while(l<=r){int m=(l+r)>>1;if(t<a[m])r=m-1;else if(t>a[m])l=m+1;else if(a[m-1]<t)return m;else r=m-1;}return -1;
}
int main(){while(~scanf("%d",&n)){for(int i=0;i<n;i++)scanf("%d",&a[i]);scanf("%d",&t);if(a[0]==t)printf("1");else{int f=BS();if(f!=-1){printf("%d",f+1);}elseprintf("None");}}
return 0;
}
第5关:鞍点
任务描述
题目描述:找出具有m行n列二维数组Array的“鞍点”,即该位置上的元素在该行上最大,在该列上最小,其中1<=m,n<=10。
相关知识(略)
编程要求
输入
输入数据有多行,第一行有两个数m和n,下面有m行,每行有n个数。
输出
按下列格式输出鞍点:
Array[i][j]=x
其中x代表鞍点,i和j为鞍点所在的数组行和列下标,我们规定数组下标从0开始。
一个二维数组并不一定存在鞍点,此时请输出None
我们保证不会出现两个鞍点的情况,比如:
3 3
1 2 3
1 2 3
3 6 8
测试说明
平台会对您的代码进行运行测试,如果实际输出与预期输出相同,则算通关。
样例输入:
3 3
1 2 3
4 5 6
7 8 9
样例输出:
Array[0][2]=3
参考答案:
#define N 10
#include <stdio.h>
int Maxcol(int a[][N],int n,int row){int i,maxcol=0;for(i=1;i<n;i++)if (a[row][i]>a[row][maxcol]) maxcol=i;return maxcol;
}
int Minrow(int a[][N],int m,int col){int i,minrow=0;for(i=1;i<m;i++)if (a[i][col]<a[minrow][col]) minrow=i;return minrow;
}
int main(){int m,n,i,j;int maxcol,minrow;int a[N][N];scanf("%d%d",&m,&n);for(i=0;i<m;i++) for(j=0;j<n;j++)scanf("%d",&a[i][j]);for(i=0;i<m;i++){maxcol=Maxcol(a,n,i);minrow=Minrow(a,m,maxcol);if (i==minrow){printf("Array[%d][%d]=%d",i,maxcol,a[i][maxcol]);break;}}if(i>=m) printf("None");
}
第6关:删除最大值
任务描述
题目描述:输入10个互不相同的整数并保存在数组中,找到该最大元素并删除它,输出删除后的数组
相关知识(略)
编程要求
请仔细阅读右侧代码,结合相关知识,在Begin-End区域内进行代码补充,完成编写删除最大值的小程序。
输入
输入10个互不相同整数
输出
输出删除最大元素后的数组
测试说明
平台会对您的代码进行运行测试,如果实际输出与预期输出相同,则算通关。
样例输入:
1 2 3 4 5 6 7 8 9 0
样例输出:
1 2 3 4 5 6 7 8 0
参考答案:
#include"stdio.h"
#define N 10
void del(int d[],int i,int n)
{for(;i<n-1;i++){d[i]=d[i+1];}
}
int main()
{int a[N],i,max=0;for(i=0;i<=N;i++){ scanf("%d",&a[i]);} for(i=1;i<=N;i++){ if(a[i]>a[max])max=i; } del(a,max,10);for(i=0;i<N-1;i++){printf("%d",a[i]);// if(i<N-2) 老师改过题的 putchar(' ');}return 0;
}
第7关:杨辉三角
任务描述
题目描述:还记得中学时候学过的杨辉三角吗?具体的定义这里不再描述,你可以参考以下的图形:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
相关知识(略)
编程要求
请仔细阅读右侧代码,结合相关知识,在Begin-End区域内进行代码补充,完成编写杨辉三角的小程序。
测试说明
平台会对您的代码进行运行测试,如果实际输出与预期输出相同,则算通关。
输出
打印出杨辉三角图形的10行。格式见题目描述部分。每个整数后面接一个空格来分隔开整数
参考答案:
#include <stdio.h> void main()
{ int a[10][10]={0},i,j; for (i=0;i<10;i++) { for (j=i;j>=0;j--) { if (i==j || j==0) { a[i][j]=1; }else{ a[i][j] = a[i-1][j-1]+a[i-1][j];//这里的规律是如果不是第一项或者最后一项,就把前面的值相加。 } } for (j=i;j>=0;j--) { printf("%d ",a[i][j]); } printf("/n"); }
}
第6部分 一维数组和二维数组相关推荐
- c语言bool怎么用_C语言中的一维数组和二维数组什么?怎么用?
C++| 匠心之作 从0到1入门学编程[免费]yun.itheima.com C语言除了基本数据类型之外,还提供了构造类型的数据,构造类型的数据包括数组类型.结构体类型和共用体类型.下面我们详细介绍 ...
- android 一维数组遍历,$.each()循环遍历一维数组、二维数组、JSON数据和DOM元素
本文介绍$.each()循环遍历一维数组.二维数组.JSON数据和DOM元素. 请注意在使用JQuery $.each()方法前,要首先引用jquery库文件. $.each()循环遍历一维数组 Jq ...
- php 数组与数组之间去重,PHP开发中一维数组与二维数组去重功能实现教程
本篇文章讲述了PHP实现一维数组与二维数组去重功能示例.希望对在php学习和开发的同学有所帮助! 数组中重复项的去除 一维数组的重复项: 使用array_unique函数即可,使用实例如下: ? $a ...
- 【C 语言】数组 ( 验证二维数组内存是线性的 | 打印二维数组 | 以一维数组方式打印二维数组 | 打印二维数组值和地址 )
文章目录 一.验证二维数组内存是线性的 1.打印二维数组 2.以一维数组方式打印二维数组 3.打印二维数组值和地址 二.完整代码示例 一.验证二维数组内存是线性的 验证二维数组内存是线性的 : 验证方 ...
- 二维数组,锯齿数组和集合 C# 一维数组、二维数组(矩形数组)、交错数组(锯齿数组)的使用 C# 数组、多维数组(矩形数组)、锯齿数组(交叉数组)...
二维数组,锯齿数组和集合 一.二维数组 二维数组: 一维数组----豆角 二维数组----表格 定义: 1.一维数组: 数据类型[] 数组变量名 = new 数据类型[数组长度]; 数据类型[] 数组 ...
- C语言中的一维数组和二维数组
该博文为原创文章,未经博主同意不得转载,如同意转载请注明博文出处 本文章博客地址:https://cplusplus.blog.csdn.net/article/details/104344394 一 ...
- 【蓝桥杯Java_C组·从零开始卷】第四节、一维数组与二维数组
整篇文章为对java数组的完整理解以及部分排序,并有一些简单的demo,经典的案例与蓝桥杯的一些经典数组题有专门的文章梳理. 目录 数组概述 什么是数组 数组的结构 数组的特点: 数组分类 一维数组声 ...
- MATLAB 将不同长度的一维数组存入二维数组
将多个不同长度的一维数组存入二维数组时,需要将所有一维数组的长度转为相同长度,可以采用在数组后边补零的方式实现. 如果a是行向量,M是你要的最终向量的长度,用 a=[a , zeros(1,M-len ...
- 怎样定义和引用一维数组,二维数组
s1,s2,s3,...,s30 右下角的数字称为下标(subscript) 一批具有同名的同属性的数据就组成了一个数组(array),s就是数组名. 1.怎样定义和引用一维数组 一维数组.二维数组. ...
- 一维数组和二维数组创建,输出,Arrays.fill()替换
package com.xxx.xxx;import java.util.Arrays;public class demo8 {/*** 1.初始化一维数组 使用一维数组* 2.初始化二维数组 使用二 ...
最新文章
- 20145129 课程总结
- 《Java程序设计》实验二 实验报告
- pat1049. Counting Ones (30)
- python 基础之字符串方法
- java对mysql的简单操作的综合运用——修改密码系统
- linux挂载iso镜像文件_Linux服务器如何识别移动硬盘?
- Bootstrap 提示工具(Tooltip)弹出框
- getBoundingClientRect方法获取元素在页面中的相对位置
- java - 操作系统 Linux
- Java中的数据类型
- C语言——打鱼晒网问题
- 考HCIE大概需要多少钱?
- python数据分析(六)—数据清洗2
- 干货满满!解密阿里云RPA (机器人流程自动化)的产品架构和商业化发展
- 【畅销书】浪潮之巅--吴军
- 毕业设计-基于微信小程序的“助农”销售系统
- 高德地图自定义点标记大小_高德地图实现自定义小蓝点 自定义点标记 绘制多边形/圆形区域 根据地图的移动显示或者隐藏自定义点标记的相关实现...
- 泰迪云课堂大数据培训平台业务介绍
- EasyExcel实现Mysql数据库Excel数据导出
- 复旦计算机专业分数线6,【数据】36所强基计划高校2020入围分数线与专业点评,报名参考!...
热门文章
- 电脑能玩和平精英吗_和平精英新手怎么玩 和平精英快速上手攻略
- LInux 小技巧(转)
- 201771010131孔维滢《面向对象程序设计(java)》第六周学习总结
- 大鱼吃小鱼游戏-mom.js
- pyhanlp 文本聚类详细介绍
- (2110,5): warning MSB3245: 未能解析此引用。未能找到程序集“Windows”。请检查磁盘上是否存在该程序集。 如果您的代码需要此引用,则可能出现编译错误。
- 不仅0元购物,还能赚钱-天花板
- STM32 使用Keil下载仿真时,报错 JLink Info: STM32Fxxxx: Cannot attach to CPU. Trying connect under reset.
- 短路逻辑运算符和非短路逻辑运算符
- 【GPLT】L2-027 名人堂与代金券