查看“︁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> == 知识点 == === 数组的赋值方式 === 方法一:逐个赋值。注意索引值从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个数)。 到此,经过不断比较和交换,最小的数不断上升,大的数逐个下沉,完成了从小到大的排序。 整个过程像气泡上升一样,所以也称为“冒泡排序”。 == 扩展 == 【例4-1】的数组遍历,可以改用while 循环语句实现吗? 【例4-2】是按从小到大排序的,如果要改成从大到小排序,应该怎么修改? 【例4-2】和【例4-3】的排序有什么不同?
返回
Cpp class exercise 4
。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
帮助
工具
链入页面
相关更改
页面信息
联系我们
微信公众号