b97902HW 板


LINE

前言 为什麽要打这一篇呢?因为我做 单班计程 HW 1-2 的时候想不出 不用阵列的方法,又听说还没有讲过阵列,所以稍微讲解一下阵列 要怎麽用。 阵列简介 我们可以先把阵列想像成表格的储存格,每一个储存格可以存一个 数值/元素。拿 int 为例子, int array[5]; 就是宣告一个有五个储存格的表格,每一个储存格可以存放一个 int。 而每一个储存格都有一个索引,从前面开始,依序为 0, 1, 2, 3, 4。如果我要存取第一个储存格,我就必需要用 array[0] 我们来看下面的表格: array = 0 1 2 3 4 <= 这就是索引   ┌───┬───┬───┬───┬───┐   │7689 │2348 │8608 │90 │1 │<= 这是储存格(元素)   └───┴───┴───┴───┴───┘ 如果我 printf("%d", array[0]) 会印出 7689,如果我要印其他的 值,则用法如下: printf("%d", array[1]); // 2348 printf("%d", array[2]); // 8608 其余请自行类推。 阵列宣告 阵列的宣告,原则上是 元素型别 阵列名称 [ 阵列大小 ] ; * 元素型别 可以是 char, short, int, long, float, double, long double 族繁不及备载。 * 阵列名称 必需是 合法的 C 语言变数名称。也就是满足以下的正 规表达示。/[A-Za-z_]+[A-Za-z0-9_]*/ * 阵列大小 是你想要的大小,也就是有多小储存格。注意:最大的 索引会比这一个值少 1。 例如: int a[10]; float b[2]; char c[1234]; 还有一些阵列宣告的变化型。我们可以在宣告阵列的时候,同时加上 初始值,方法如下: 元素型别 阵列名称 [ 阵列大小 ] = { 元素0, 元素1, .... }; 例如: int array[5] = {1, 2, 4, 8, 16}; 会让我们有: array = 0 1 2 3 4 <= 这就是索引   ┌───┬───┬───┬───┬───┐   │1 │2 │4 │8 │16 │<= 这是储存格(元素)   └───┴───┴───┴───┴───┘ 如果你有加上初始值,最左边的维度可以省略(编译器会帮我们算出 来),如下: int array[] = {1, 2, 4, 8, 16, 32}; 等价 int array[6] = {1, 2, 4, 8, 16, 32}; 阵列元素的存取 如果要存取单一个元素,你可以用下标运算子(subscript),也就是在 阵列名字之後加上 [],例如: int array[5] = {1, 2, 4, 8, 16}; array[0] == 1 array[1] == 2 array[2] == 4 array[3] == 8 array[4] == 16 如果要印出来,可以配合 for 来使用。 for (i = 0; i < 5; ++i) { printf("%d\n", array[i]); } 如果要当成输入,也是一样, for (i = 0; i < 5; ++i) { scanf("%d", &(array[i])); } 如果我们要改其中的一个值,就像用一般的变数一样。例如 array[3] = 12345; 而如果要 复制 一个阵列,我们必需一个元素一个元素去改, 如下,不可以直接指派: int array2[5]; int i; for (i = 0; i < 5; ++i) { array2[i] = array[i]; } 阵列的常见错误 <错> 阵列指派(Assign) int array[5] = {1, 2, 4, 8, 16}; int array2[5] = array; /* 错!错!错!错!错!没有这种写法 */ 这一个当然也错: int array[5] = {1, 2, 4, 8, 16}; int array2[5]; array2 = array; <错> 溢位(通常可以正常编译,不过会「本程式即将要关闭」或 RE) int array[5] = {1, 2, 4, 8, 16}; int i; for (i = 1; i <= 5; ++i) { printf("%d\n", array[i]); } <错> 动态的阵列大小 int size; scanf("%d", &size); int array[size]; ...... 结语 这一次阵列暂时介绍到这里,有机会再向大家介绍其他阵列还有 指标的用法。如果这一篇文有错,还请大家指教。 还有,我想问:钢弹在哪里?这不是钢弹,这不是钢弹... --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.241.166 ※ 编辑: LoganChien 来自: 140.112.241.166 (10/01 18:38)
1F:推 hrs113355:大大风范>///< 10/01 18:40
2F:推 iForests:好文推,没有阵列应该解不了第二题 10/01 20:34
3F:推 enhuang:收精华了啦 10/01 21:37
4F:推 jimmyken793:别急 钢弹蛋蛋快要开拨了 10/01 21:42
5F:推 ming1053:C好像不能compile用变数当大小宣告的array ... 10/01 22:34
※ 编辑: LoganChien 来自: 140.112.241.166 (10/01 22:39)
6F:→ LoganChien:我把它改得明显一点了。 10/01 22:40
7F:→ martinku:可是我编译没问题ㄟXD~到底是怎麽回事..... 10/01 23:25
8F:→ LoganChien:1. 有可能是 编译器 的 bonus, 它会处理 10/01 23:29
9F:→ LoganChien:2. 可能编译器随便代入一个数字 10/01 23:29
10F:推 ming1053:Dev-C++会用g++来compile吧 gcc就不会过了... 10/01 23:29
11F:→ ming1053:因为那在C++里面是可以的 10/01 23:30
12F:→ LoganChien:至於是哪一种,我们需要强者来反组译! 10/01 23:30
13F:推 jimmyken793:Dev C++是看副档名的 你副档名要存成 .c才会用gcc 10/01 23:34
14F:→ martinku:我是这样写然後上传批改娘过了XD 10/01 23:40
15F:→ LoganChien:gcc 也会过,而且我高度怀疑是 gcc 的 extension。 10/01 23:41
16F:推 pangfeng:好文. 10/01 23:42
17F:→ LoganChien:找道了,参考 http://tinyurl.com/2aprqb 10/01 23:47
18F:→ LoganChien:不过我个人不鼓励使用这一种写法,除非你的环境永远是 10/01 23:49
19F:→ LoganChien:GCC or Standard C99 10/01 23:49
20F:→ ming1053:可以补一下归零的方法 10/01 23:53
21F:→ martinku:批改娘能过还奇妙的 10/02 00:04
22F:→ LoganChien:To Ming1053, 我写到下一集好了,字串、多维阵列、秘密 10/02 00:07
23F:→ LoganChien:To Martinku, 批改娘我猜是 GCC,而且也可以用 C99。 10/02 00:08
24F:推 ckclark:/usr/bin/gcc-3.4 -c -std=c99 -Wall -fno-builtin -O1 10/02 00:09
25F:推 hrs113355:归零用memset... 10/02 00:15
26F:推 ming1053:楼上好用的奥步XD 10/02 00:43
27F:推 hrs113355:快又有效XD 10/02 00:49
28F:推 anfranion:memset()用来归零可以 其他的就不一定了XD 10/02 00:51
29F:推 ckclark:还可以归-1 XD 10/02 00:54
30F:推 sa072686:还可以设不小的数(归infinity?XD) 10/02 01:08
31F:推 hrs113355:还可以归心似箭 10/02 01:08
32F:推 averangeall:还可以归苓膏 10/02 01:11
33F:→ LoganChien:我想出 HW 1-2 不用阵列的方法了,现在才想出来,OTZ。 10/03 00:46
34F:推 Poplarysl:我写出来了XD 一千多行囧RZ 10/03 17:31
35F:→ Poplarysl:助教说他写大概一百多行吧~ 10/03 17:32
36F:→ Poplarysl:是顶多啦 实际怎样就不知道了!! 10/03 17:32
37F:→ LoganChien:刚才我试了一下我的想法,没有问题,49 行。 10/03 23:29
38F:→ LoganChien:提示:小於等於 5 的非负有理数是 6 个。另外,会用到 10/03 23:30
39F:→ LoganChien:for, switch, if 10/03 23:31







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:WOW站内搜寻

TOP