NTUE-CS102 板


LINE

拖稿中(?) 因为那作业没要交,所以想说慢慢来就拖到现在了(思) 先来复习一下上了什麽... 1.二维阵列 2.字串处理 3.泡沫排序法 先来看看这个二维阵列...先从一维开始讲好了 首先,我会解释一维阵列是 "宣告复数个同样类型的变数" 从同样的角度看待二维阵列,可以解释成"宣告复数个同样大小、类型的阵列" 比如下面这页..... -- 这是int a ┌—┐ | | └—┘ 这是int a[10] ┌—┬—┬—┬—┬—┬—┬—┬—┬—┬—┐ |0|1|2|3|4|5|6|7|8|9| ├—┼—┼—┼—┼—┼—┼—┼—┼—┼—┤ |?|?|?|?|?|?|?|?|?|?| └—┴—┴—┴—┴—┴—┴—┴—┴—┴—┘ 这是int a[2][10] ┌—┬—┬—┬—┬—┬—┬—┬—┬—┬—┐ |0|1|2|3|4|5|6|7|8|9| ├—┼—┼—┼—┼—┼—┼—┼—┼—┼—┤ |?|?|?|?|?|?|?|?|?|?| └—┴—┴—┴—┴—┴—┴—┴—┴—┴—┘ ┌—┬—┬—┬—┬—┬—┬—┬—┬—┬—┐ |0|1|2|3|4|5|6|7|8|9| ├—┼—┼—┼—┼—┼—┼—┼—┼—┼—┤ |?|?|?|?|?|?|?|?|?|?| └—┴—┴—┴—┴—┴—┴—┴—┴—┴—┘ -- 大概是这样的感觉跟用法,多维可以用同样的方式去扩张解释 我自己看待、处理二维阵列大概有种XY平面的感觉就是了 只是前面是Y值、後面是X值,不然概念会乱掉(死) 再来是字串处理,所谓的字串就只是一个字元阵列(摆字元的阵列) 用char a[10]; 像这样的阵列,就能够用来摆字串 输入字串时大概用cin或cin.getline() 比如说 cin >> a; 输入ABCDEFG(enter) 阵列内容就会装进这样的内容 ┌—┬—┬—┬—┬—┬—┬—┬—┬—┬—┐ |0|1|2|3|4|5|6|7|8|9| ├—┼—┼—┼—┼—┼—┼—┼—┼—┼—┤ | A| B| C| D| E| F| G|\0|?|?| └—┴—┴—┴—┴—┴—┴—┴—┴—┴—┘ -- 如果是用cin.getline(a,10,'\n')也会是一样的结果 : 嗯..cin.getline标准用法上,好像是不加最後一个标示字串结束在哪个字元就是 cin.getline函式内引用值分别是(阵列名称,最大字串范围,结束字元) 换行的enter同时带有蛮多东西...不过先用\n就可以了 最後是个泡排 这样去解释泡排...有N个未经排序的数值 把最大(或最小)丢到最末端(最首) 然後把次大(次小),摆到次末(次首),然後不断重复这样行为N-1次 就能让这些数值变成一个经过排序的数值,称为泡沫排序法 如同泡沫会往上浮一样,让你的数值(泡沫)往上浮到最顶端(阵列最末端) 这里可以拿出课本7-11、7-12页的地方有图例 它的四个loop内容就是一次一次把阵列中的最大值、次大值由大而小排序 -- 范例code的部份.. 大概是 int a[10]; for (int i=0;i<10;i++) cin >>a[i]; for (int i=0;i<10;i++) for (int j=i;j<10;j++) if (a[i]<a[j]) { int tmp=a[i]; a[i]=a[j]; a[j]=tmp; } 好,我决定就这样草草带过(咦) -- 再来看这个作业目标... 1.输入姓名、成绩 2.照成绩排序 3.输出名次、姓名、成绩 同样不论没意义的介面... 首先是输入姓名、成绩 如果都用cin来写应该没什麽问题,反正分隔就很直观的判断 这部份用cin写的问题,大多是不知道二维阵列怎麽用 回顾一下如何使用cin输入字串 char a[10]; cin >>a; 再来看二维...就像前面说过的,二维就是宣告复数个阵列而已 所以用法很单纯只是 -- char a[10][10]; cin >>a[0]; 像这样,cin>>阵列名称 就好,不要想太多变成cin >> a[0][0]; 另外一方面,使用cin.getline(a[0],10)又有另外一个问题... 照题目要求,所以用getline一定是分行输入,假设有另外一个grade[10]来装成绩 cin.getline (a[0],10); cin >> grade[0]; cin.getline (a[1],10); cin >> grade[1]; 通常会写成这样,或与之等价的for回圈等 而输入 aaa 99 bbb 98 就会发现到 输入完的a[1]会是空的或是根本就乱码化、执行错误...为什麽呢? -- 理由是这样的... 虽然看不到,可是系统中,我们输入这段的实际内容是 aaa\n 99\n bbb\n 98\n 回头跟code比较,一开始aaa\n可以正常输入进a[0] 然後99也进去了...可是cin不会把99後面这个\n吃掉,也不会摆进grade[0]里面 所以这个\n自然被下一行指令处理 由a[1]接受,後面的bbb被硬塞进grade[1]里面...当然就造成执行错误了 解决方式很简单...另外宣告一个char变数,多使用一个cin.getline将那个\n吸收掉 如下页 -- char b[5]; cin.getline (a[0],10); cin >> grade[0]; cin.getline (b,5); cin.getline (a[1],10); cin >> grade[1]; 像这样,就能够正常输入了,那个没有被接受的\n也会被使用掉 再来是排序...单单排序我想不会是太大问题 这有问题我也不知道怎麽救了(囧a) 这里有问题的大概就是不知道怎样把分数、名字一起排 其实就只是分数要交换时,名字在一起交换就是了 记得善用strcpy去做交换就可以了 -- 乱写的范例... char a[10][10]; int grade[10]; for (int i=0;i<10;i++) cin >>a[i] >>grade[i]; for (int i=0;i<10;i++) for (int j=i;j<10;j++) if (grade[i]<grade[j]) { int tmp=grade[i]; char tmpa[10]; strcpy (tmpa,a[i]) grade[i]=grade[j]; strcpy (a[i],a[j]); grade[j]=tmp; strcpy (a[j],tmpa); } 有点恶心,不过大概就是这样 -- 最後的输出.. 排名跟排序方向不同的话两种作法 以范例来说倒是没这种问题,有的人把最大值摆到最後面就会有这样的问题 1.反过来排,这个最直观... 2.输出做处理 什麽意思呢...比如说,今天10个人,排第一的放在a[9]、排第二的放在a[8] 相反的,第一名的名次=10-9,第二名=10-8 像这样就能形成一个规律,所以我可以 for (int i=9;i>=0;i--) cout <<10-i <<' ' <<a[i] <<' ' <<grade[i]; 像是这样去做列出名次这样 类似的用法会用在旁边风娘出的基本练习题里面 大家就加油吧(远目) -- 本命 ○楽园の巫女  博丽 霊梦 职业:博丽神社の巫女さん  Hakurei Reimu   能力:主に空を飞ぶ程度の能力 @东方project系列 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 58.114.76.199
1F:→ CaptainWill:强大推(CDing 囧 01/03 22:21
2F:推 pk873:说好了不想打 结果还是打了 矛盾可爱的凤狼大大-ˇ- 01/03 22:44
3F:推 Arashinoon:凤郎越来越专业了...连PAGEDOWN都那麽完美 01/03 22:46
4F:→ game0416:那个明明一直都有在做编排QQ 01/03 22:55
5F:→ gcobc12632:我记得这只是练习不算作业不是吗= =? 01/03 23:20
6F:推 gingkoginkgo:二楼 那个叫傲娇= W= 01/03 23:59
7F:推 Genya0:是男的,所以叫骄傲!(挺~ 01/04 00:53







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灯, 水草

请输入看板名称,例如:Boy-Girl站内搜寻

TOP