Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
CSDN 技术社区
skill_tree_c
提交
56926367
S
skill_tree_c
项目概览
CSDN 技术社区
/
skill_tree_c
通知
24
Star
4
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
skill_tree_c
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
56926367
编写于
12月 06, 2021
作者:
L
luxin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add 1 exercise for array
上级
f8047c05
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
140 addition
and
1 deletion
+140
-1
data/2.C语言中阶/2.数组/1.数组简介/config.json
data/2.C语言中阶/2.数组/1.数组简介/config.json
+3
-1
data/2.C语言中阶/2.数组/1.数组简介/index.c
data/2.C语言中阶/2.数组/1.数组简介/index.c
+22
-0
data/2.C语言中阶/2.数组/1.数组简介/index.json
data/2.C语言中阶/2.数组/1.数组简介/index.json
+7
-0
data/2.C语言中阶/2.数组/1.数组简介/index.md
data/2.C语言中阶/2.数组/1.数组简介/index.md
+108
-0
未找到文件。
data/2.C语言中阶/2.数组/1.数组简介/config.json
浏览文件 @
56926367
...
...
@@ -7,7 +7,8 @@
],
"children"
:
[],
"export"
:
[
"array_def.json"
"array_def.json"
,
"index.json"
],
"title"
:
"数组简介"
}
\ No newline at end of file
data/2.C语言中阶/2.数组/1.数组简介/index.c
0 → 100644
浏览文件 @
56926367
#include <stdio.h>
#define LEN 10
int
main
(
int
argc
,
char
**
argv
)
{
int
arr
[
LEN
]
=
{
2
,
5
,
1
,
10
,
4
,
8
,
6
,
3
,
9
,
7
};
int
i
,
j
,
max_value
,
position
;
max_value
=
arr
[
LEN
-
1
];
for
(
i
=
0
;
i
<
LEN
-
1
;
++
i
)
if
(
max_value
<
arr
[
i
])
{
max_value
=
arr
[
i
];
position
=
i
;
}
printf
(
"数组中的最大值为:%d
\n
"
,
max_value
);
printf
(
"最大值在数组中的下标为:%d
\n
"
,
position
);
return
0
;
}
\ No newline at end of file
data/2.C语言中阶/2.数组/1.数组简介/index.json
0 → 100644
浏览文件 @
56926367
{
"type"
:
"code_options"
,
"author"
:
"u010280923"
,
"source"
:
"index.md"
,
"exercise_id"
:
"2ee704800a944c51b5fed7173891d773"
}
\ No newline at end of file
data/2.C语言中阶/2.数组/1.数组简介/index.md
0 → 100644
浏览文件 @
56926367
# 数组下标
求整形数组中的最大值,并输出其对应的下标。(1)处为找最大值的核心代码,请判断四个选项中哪一项
<span
style=
"color:red"
>
无法
</span>
实现该功能。
```
c
#include <stdio.h>
#define LEN 10
int
main
(
int
argc
,
char
**
argv
)
{
int
arr
[
LEN
]
=
{
2
,
5
,
1
,
10
,
4
,
8
,
6
,
3
,
9
,
7
};
int
i
,
j
,
max_value
,
position
;
_____
(
1
)
_____
printf
(
"数组中的最大值为:%d
\n
"
,
max_value
);
printf
(
"最大值在数组中的下标为:%d
\n
"
,
position
);
return
0
;
}
```
<font
size=
"2"
>
小知识:为什么数组下标要从0开始编号?
<div
style=
"text-indent:2em;"
>
为什么数组下标要从0开始编号,而不是从1开始呢?从1开始不是更符合人类的思维习惯吗?
</div>
<div
style=
"text-indent:2em;"
>
从数组存储的内存模型上来看,下标实际上指的是偏移量(offset)。例如:一个整型数组 int arr[LEN],
</div>
<div
style=
"text-indent:4em;"
>
* 从0开始编号,元素arr[i]的寻址计算公式是:address(arr[i]) = address(arr) + i *
sizeof(int)。
</div>
<div
style=
"text-indent:4em;"
>
* 从1开始编号,元素arr[i]的寻址计算公式是:address(arr[i]) = address(arr) + (i - 1) *
sizeof(int)。
</div>
<div
style=
"text-indent:2em;"
>
对比两个公式,从1开始编号会多一次减法运算,对应到CPU就会多一条减法指令。而数组取下标是一个高频操作,故从0开始效率更高。另外,C语言的设计者从0开始编号数组元素,之后的C++、Java、Python等高级语言也沿用了C的编号习惯,这也在一定程度上降低了C语言程序员学习其他编程语言的成本。当然,并不是所有语言的数组都是从0开始编号,比如MATLAB。
</div>
</font>
<br/>
## template
```
c
#include <stdio.h>
#define LEN 10
int
main
(
int
argc
,
char
**
argv
)
{
int
arr
[
LEN
]
=
{
2
,
5
,
1
,
10
,
4
,
8
,
6
,
3
,
9
,
7
};
int
i
,
j
,
max_value
,
position
;
max_value
=
arr
[
0
];
for
(
i
=
1
;
i
<
LEN
;
++
i
)
if
(
max_value
<
arr
[
i
])
{
max_value
=
arr
[
i
];
position
=
i
;
}
printf
(
"数组中的最大值为:%d
\n
"
,
max_value
);
printf
(
"最大值在数组中的下标为:%d
\n
"
,
position
);
return
0
;
}
```
## 答案
```
c
max_value
=
arr
[
1
];
for
(
i
=
2
;
i
<=
LEN
;
++
i
)
if
(
max_value
<
arr
[
i
])
{
max_value
=
arr
[
i
];
position
=
i
;
}
```
## 选项
### A
```
c
max_value
=
arr
[
0
];
for
(
i
=
1
;
i
<
LEN
;
++
i
)
if
(
max_value
<
arr
[
i
])
{
max_value
=
arr
[
i
];
position
=
i
;
}
```
### B
```
c
max_value
=
arr
[
0
];
for
(
i
=
LEN
-
1
;
i
>
0
;
--
i
)
if
(
max_value
<
arr
[
i
])
{
max_value
=
arr
[
i
];
position
=
i
;
}
```
### C
```
c
max_value
=
arr
[
LEN
-
1
];
for
(
i
=
0
;
i
<
LEN
-
1
;
++
i
)
if
(
max_value
<
arr
[
i
])
{
max_value
=
arr
[
i
];
position
=
i
;
}
```
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录