跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
帮助
汉语教学技术研究与应用
搜索
搜索
外观
登录
个人工具
登录
查看“︁Cpp class exercise 4”︁的源代码
页面
讨论
大陆简体
阅读
查看源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
查看源代码
查看历史
常规
链入页面
相关更改
页面信息
联系我们
微信公众号
外观
移至侧栏
隐藏
←
Cpp class exercise 4
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
{{DISPLAYTITLE: “C++ 编程入门班” 练习四}} == 预习练习 == 自行输入【例4-1】、【例4-2】,编辑至运行通过。 === 【例4-1】数组的定义、赋值和遍历 === <syntaxhighlight lang="C++" line> #include <iostream> using namespace std; int main() { int a[3]; //定义数组 a[0]= 1; //通过索引引用,并赋值。注意索引是从0开始的。 a[1]= 2; a[2]= 3; int b[3]= {5,6,7}; //定义数组并同时赋值。注意括号是花括号。 for(int i=0;i<3;i++) { cout << a[i] << endl; } //计算数组b的长度,为什么要用这种方法呢? //如果改成 int lenth = sizeof(b); // lenth的值会是多少呢? int lenth = sizeof(b)/sizeof(int); for(int i=0;i<lenth;i++) { cout << b[i] << endl; } return 0; } </syntaxhighlight> === 【例4-2】数组排序 === <syntaxhighlight lang="C++" line> #include <iostream> #include <stdlib.h> #include <time.h> #define random(x) (rand()%x) using namespace std; int main() { int a[10]; srand((int)time(0));//用系统时间来做种子 for(int i=0;i<10;i++) { a[i] = random(100); // 取100以内的随机数 } //原始顺序 for(int i=0;i<10;i++) { cout << a[i] << ","; // 逐个输出 } cout << endl; for(int i=0;i<10;i++) { for(int j=i+1;j<10;j++) { if(a[i]>a[j]) { //交换 int temp = a[i]; a[i] = a[j]; a[j] = temp; } } } //排序以后的顺序 for(int i=0;i<10;i++) { cout << a[i] << ","; // 逐个输出 } cout << endl; return 0; } </syntaxhighlight> http://static.hanyu123.cn/wiki/images/algorithm_compare_sort_w600.gif == 知识点 == === 数组的赋值方式 === 方法一:逐个赋值。注意索引值从0开始。 方法二:批量赋值。 === 数组的遍历 === 1、获得数组的长度 2、使用循环语句,逐个访问数组的元素。 === 冒泡排序算法 === 【例4-3】冒泡排序 <syntaxhighlight lang="C++" line> #include <iostream> #include <stdlib.h> #include <time.h> #define random(x) (rand()%x) using namespace std; int main() { int a[10]; srand((int)time(0));//用系统时间来做种子 for(int i=0;i<10;i++) { a[i] = random(100); // 取100以内的随机数 } //原始顺序 for(int i=0;i<10;i++) { cout << a[i] << ","; // 逐个输出 } cout << endl; int n = sizeof(a)/sizeof(int); for(int i=0;i<n-1;i++) { for(int j=0;j<n-i;j++) { if(a[j]>a[j+1]) { //交换 int temp = a[j]; a[j] = a[j+1]; a[j+1] = temp; } } } //排序以后的顺序 for(int i=0;i<10;i++) { cout << a[i] << ","; // 逐个输出 } cout << endl; return 0; } </syntaxhighlight> 假设共有10个数 '''第一轮:''' 1、从第1个数开始,将第1个数和第2个数比较,如果第1个数比第2个数大,交换两者。 2、将第2个数和第3个数比较,如果第2个数比第3个数大,交换两者。 3、将第3个数和第4个数比较,如果…… …… 9、将第9个数和第10个数比较,如果第9个数比第10个数大,交换两者。 经过这一轮的比较,最大的数就是第10个。 '''第二轮:''' 与第1轮相同(可以只比较到第9个数)经过比较,最大的数是第10个,第二大的数是第9个。 '''第三轮:''' 与之前的相同(可以只比较到第8个数),经过比较,最大的数是第10个,第二大的数是第9个,第二大的数是第8个。 '''第十轮:''' 与之前的相同(可以只比较到第2个数)。 到此,经过不断比较和交换,最小的数不断上升,大的数逐个下沉,完成了从小到大的排序。 整个过程像气泡上升一样,所以也称为“冒泡排序”。 冒泡排序动画演示: http://static.hanyu123.cn/wiki/images/algorithm_bubble_sort_w600.gif http://www.bilibili.com/video/av18176281/ == 扩展 == 【例4-1】的数组遍历,可以改用while 循环语句实现吗? 【例4-2】是按从小到大排序的,如果要改成从大到小排序,应该怎么修改? 【例4-2】和【例4-3】的排序有什么不同? 在各个例子的多个for 循环语句中,都使用了相同的int i,这些i之间是什么关系?互相会有影响吗?
返回
Cpp class exercise 4
。
搜索
搜索
查看“︁Cpp class exercise 4”︁的源代码
添加话题