-
2022-03-12 09:00:48
本题要求编写程序,找出给定的n个数中的最大值及其对应的最小下标(下标从0开始)。
输入格式:
输入在第一行中给出一个正整数n(1<n≤10)。第二行输入n个整数,用空格分开。
输出格式:
在一行中输出最大值及最大值的最小下标,中间用一个空格分开。
输入样例:
6 2 8 10 1 9 10
输出样例:
10 2
#include <stdio.h> int main(){ int n, max, index = 0; scanf("%d", &n); int num[n]; scanf("%d", &num[0]); // 输入第一个数 max = num[0]; // 让max等于第一个数,index下标为0 for( int i=1; i<n; i++ ){ // 循环取出最大数和下标 scanf(" %d", &num[i]); if( num[i] > max ){ max = num[i]; index = i; } } printf("%d %d\n", max, index); return 0; }
更多相关内容 -
为什么数组下标从0开始
2020-12-23 21:58:52背景有很多编程语言的数组都是从 0 开始编号,你是否下意识地想过,为什么数组要从 0 开始编号,而不是从 1 开始呢? 从 1 开始不是更符合人类的思维习惯吗?那先看下数组的定义。 数组(Array)是一种线性表数据结构...背景
有很多编程语言的数组都是从 0 开始编号,你是否下意识地想过,为什么数组要从 0 开始编号,而不是从 1 开始呢? 从 1 开始不是更符合人类的思维习惯吗?那先看下数组的定义。 数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。
为了更快寻址
计算机会给每个内存单元分配一个地址,计算机通过地址来访问内存中的数据。当计算机需要随机访问数组中的某个元素时,它会首先通过下面的寻址公式,计算出该元素存储的内存地址:
a[i]_address = base_address + i * data_type_size
如果下标从 1 开始,公式就变成
a[i]_address = base_address + (i-1)*type_size
对比两个公式,可知从 1 开始编号,每次随机访问数组元素都多了一次减法运算,对于 CPU 来说,就是多了一次减法指令。 数组作为非常基础的数据结构,通过下标随机访问数组元素又是其非常基础的编程操作,效率的优化就要尽可能做到极致。所以为了减少一次减法操作,数组选择了从 0 开始编号,而不是从 1 开始。
历史原因
上面解释得再多其实都算不上压倒性的证明,说数组起始编号非 0 开始不可。所以我觉得最主要的原因可能是历史原因。C 语言设计者用 0 开始计数数组下标,之后的 Java、JavaScript 等高级语言都效仿了 C 语言,或者说,为了在一定程度上减少 C 语言程序员学习 Java 的学习成本,因此继续沿用了从 0 开始计数的习惯。实际上,很多语言中数组也并不是从 0 开始计数的,比如 Matlab。甚至还有一些语言支持负数下标,比如 Python。
-
c代码-anki--冒泡排序,下标从0开始
2021-07-16 12:07:58c代码-anki--冒泡排序,下标从0开始 -
PHP 多维数组将下标从0开始
2018-03-16 17:13:12//给一个变量,每次循环它就定义成0,到达下标都从0开始 foreach($v as $vs){ $data[$k][$i]['id'] = $vs['id']; $data[$k][$i]['title'] = $vs['title']; $data[$k][$i]['date'] = $vs['date']; $i++;//双重...点击链接加入群【php/web 学习课堂】:https://jq.qq.com/?_wv=1027&k=5645xiw
欢迎大家加入,一起讨论学习
模拟一个:
public function test(){ //自定义一个数组,模拟成在数据库里提取出来的 $array = [ '2018-3-2'=> array('0'=> array('id'=>'1','title'=>'我是标题','date'=>'2018-3-2'), '1'=> array('id'=>'2','title'=>'汪年快乐','date'=>'2018-3-2')), '2018-3-12'=> array('2'=> array('id'=>'3','title'=>'PHP是世界上最好的语言','date'=>'2018-3-12')), '2018-3-16'=> array('3'=> array('id'=>'4','title'=>'男人的血性是否还存在','date'=>'2018-3-16'), '4'=> array('id'=>'5','title'=>'学习使我快乐','date'=>'2018-3-16'), '5'=> array('id'=>'6','title'=>'活到老学到老','date'=>'2018-3-16')) ];//三维,第一维是 2018-3-2 这类日期格式,第二维是下标0开始的,第三维是键值对 var_dump($array); }
我们去打印出来看看效果:
我们需要转换,看代码:
//我们遍历 foreach($array as $k => $v){ $i = 0;//给一个变量,每次循环它就定义成0,到达下标都从0开始 foreach($v as $vs){ $data[$k][$i]['id'] = $vs['id']; $data[$k][$i]['title'] = $vs['title']; $data[$k][$i]['date'] = $vs['date']; $i++;//双重循环内,i每次加1 } } var_dump($data);
结果:
-
本题要求编写程序,找出给定的n个数中的最大值及其对应的最小下标(下标从0开始)
2021-08-25 10:04:28在一行中输出最大值及最大值的最小下标,中间用一个空格分开。 输入样例: 6 2 8 10 1 9 10 结尾无空行 输出样例: 10 2 #include"iostream" using namespace std; int main() { int a[100], n, i, max,sign; cin...输入格式:
输入在第一行中给出一个正整数n(1<n≤10)。第二行输入n个整数,用空格分开。输出格式:
在一行中输出最大值及最大值的最小下标,中间用一个空格分开。输入样例:
6
2 8 10 1 9 10
结尾无空行
输出样例:
10 2#include"iostream" using namespace std; int main() { int a[100], n, i, max,sign; cin >> n; for (i = 0;i < n;i++) cin >> a[i]; max = a[0]; for (i = 1;i < n;i++) { if (a[i] > max) max = a[i]; } cout << max; for (i =n-1;i>=0;i--) { if (a[i] == max) sign=i; } cout<<" "<<sign; }
-
为什么C数组下标从0开始,而不是从1开始
2018-07-30 14:22:45对于学习过编程语言的人来说,相信绝大多数人都会有这样的疑问:我们平时计数,通常是从一开始计数的,为什么在编程语言中,数组的下标是从0开始计算的呢? 这是因为,C语言中,下标的含意是:当前元素到第一个... -
特殊矩阵的压缩存储(数组下标从0开始存储)
2019-01-05 15:15:51用一维数组压缩存储 对称矩阵 对称矩阵的特点: a[i][j] = a[j][i] ...从a[0][0] 开始,把每行元素都依次存储进一维数组 存储时:a[i][j] 在一维数组 A[ ]中的下标就是该元素前面元素的个数:k= i×(... -
找出给定的n个数中的最大值及其对应的最小下标(下标从0开始)
2019-03-22 09:34:01#include <iostream> using namespace std; int main(int argc, char *argv[]) { int n; cin >> n; int max;... int pt = 0; for (int i = 1; i < n; i++) { int tmp;... -
数组的下标为什么从0开始而不是从1开始
2021-03-13 23:53:20如果从0开始,则a[i]的地址= 首地址 + i*每个数据所占的长度;如果从1开始,则a[i]的地址= 首地址 + (i-1)*每个数据所占的长度。是不是前一种更好计算呢。再举个例子:1、数组在内存中申请是,所申请的内存是一段连续... -
为什么数组的下标从 0 开始?
2021-11-30 19:13:41突然,一个奇怪的念头冒了出来,假如我们将数组的首个下标从 1 开始 ,会怎么样? 我们读取 下标为n 的数据 公式: Tom哥[n] = base_address + (n-1) * data_size 与上面的公式的区别,多了一次 n-1 操作 虽然也... -
(10 分)本题要求编写程序,找出给定的n个数中的最大值及其对应的最小下标(下标从0开始)。输入格式:输入在...
2021-12-25 11:54:57本题要求编写程序,找出给定的n个数中的最大值及其对应的最小下标(下标从0开始)。 输入格式: 输入在第一行中给出一个正整数n(1≤10)。第二行输入n个整数,用空格分开。 输出格式: 在一行中输出最大值及最大值... -
oracle substr 下标从0 开始
2018-08-27 09:01:15substr 下标从0 开始 instr 返回的数值,从1开始 oracle字符串处理 select substr(memo,instr(memo,'hourid=',1)+1,instr(memo,'&',instr(memo,'=',1)+1)-instr(memo,'=',1)-1) from ZCSTATITEM ... -
(20分) 本题要求编写程序,找出给定的n个数中的最大值及其对应的最小下标(下标从0开始)。
2020-05-17 09:20:21本题要求编写程序,找出给定的n个数中的最大值及其对应的最小下标(下标从0开始)。 输入格式: 输入在第一行中给出一个正整数n(1<n≤10)。第二行输入n个整数,用空格分开。 输出格式: 在一行中输出最大值及最大... -
如何编写一个程序,并找出给定的n个数中的最大值及其对应的最小下标(下标从0开始)。
2020-05-26 21:15:02在一行中输出最大值及最大值的最小下标,中间用一个空格分开。 输入样例: 6 2 8 10 1 9 10 输出样例: 10 2 我的代码展示: #include "stdio.h" int main() { int n, i, j=0, max, a[10];  ... -
为什么数组的下标是从0开始而不是从1开始?
2022-04-05 23:00:28一、数组下标从0开始的原因 在回答这个问题之前我们首先要明确一点那就是对于数组元素的访问在操作系统层其实就是对特定内存偏移量的数据的访问,换而言之即如果想要访问一个数组的某一个元素的值那么首先就要计算它... -
为什么计算机语言中的下标都是从0开始的?
2020-12-21 12:21:00为什么计算机语言中的下标都是从0开始的?随着互联网的普及,各工种的泛码农化的现象越来越明显。对于没有学过计算机基础理论的小伙伴,可能会一直有一个困惑:为什么计算机语言中数据容器的下标都是从0开始的?而... -
【 求最大值及其下标 】 本题要求编写程序,找出给定的n个数中的最大值及其对应的最小下标(下标从0开始)...
2018-05-09 22:08:33输出格式:在一行中输出最大值及最大值的最小下标,中间用一个空格分开。输入样例:6 2 8 10 1 9 10 输出样例:10 2#include <stdio.h> main() { int n,i,j; scanf("%d",&n); int a... -
为什么大部分编程语言的数组的下标都从0开始?
2019-02-12 09:30:23众所周知,数组的一大优点...数组是如何实现根据下标随机访问数组元素的呢? 下面我们用一个长度为5的int类型的数组为例,来看一下它的具体实现 https://uploader.shimo.im/f/l1upJJqvVl8DdrnW.png 如上图,数组为... -
matlab中如何将数组下标定义为从0开始
2021-04-18 08:49:13这个是没法直接修改语言内置规则的,即下标不可能从0开始,估计你是从C语言改写,可以采用变通的方法。以二维数组为例,定义A为mxn的矩阵,matlab默认的数组下标为行1~m ,列1~n你所谓的下标定义为0,可以引入临时变... -
数组下标为什么是从0开始?
2021-02-25 12:55:25数组的 4 个基本元素:数组名称、数组元素、元素下标、数据类型 数组(Arrary)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据... ①下标从0开始: 数组寻址:arr[i] = base_addre... -
【PTA】求最大值及其下标
2021-01-14 10:49:31本题要求编写程序,找出给定的n个数中的最大值及其对应的最小下标(下标从0开始)。 输入格式: 输入在第一行中给出一个正整数n(1≤10)。第二行输入n个整数,用空格分开。 输出格式: 在一行中输出最大值及最大值...