第16周报告1:冒泡排序指针版

题目:(数组的排序) 按模板中的要求,用指向数组的指针变量作为形式参数编写函数,完成冒泡排序。重点体会:(1)冒泡排序算法;(2)用指向数组的指针变量作为形式参数,用数组名(即数组的地址)作为实际参数,函数中对于形参的改变实质上也就是对实参对应内存单元的改变;(3)形式参数中不指定数组大小,实际数组的大小也一并作为参数传递。详见 指导书

实验目的:学会冒泡排序算法

实验内容:实现冒泡排序算法,并将之定义为一个函数,其中参数是指向数组的指针变量

/* 程序头部注释开始
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:   bubble.cpp
* 作    者:   贺利坚
* 完成日期:   2011 年 12 月 13 日
* 版 本 号:   v1.0      

* 对任务及求解方法的描述部分
* 输入描述:要排序的数据在程序中初始化
* 问题描述:实现冒泡排序
* 程序输出:排序后的结果
*/
#include <iostream>
using namespace std;
void bubble_sort(int *p, int num);  //不要对自定义函数的声明有任何改动
void output_array(int*, int);
int main( )   //不要对main函数有任何改动
{
   inta[20]={86,46,22,18,77,45,32,80,26,88,57,67,20,18,28,17,54,49,11,16};
   intb[15]={27,61,49,88,4,20,28,31,42,62,64,14,88,27,73};
   bubble_sort(a,20);   //用冒泡法按降序排序a中元素
   output_array(a,20);   //输出排序后的数组
   bubble_sort(b,15);   //用冒泡法按降序排序b中元素
   output_array(b,15);   //输出排序后的数组
   return 0;
}
//下面定义自定义函数
void bubble_sort(int *p, int num)
{
   int i,j,t;
   for(j=0;j<num-2;j++)                                               //共进行num-1趟比较
             for(i=0;i<num-j-1;i++)                                   //在每趟中要进行num-j次两两比较
                      if(*(p+i)<*(p+i+1))                             //如果前面的数小于后面的数
                      {
                               t=*(p+i);                              //交换两个数的位置,使小数下沉
                               *(p+i)=*(p+i+1);
                               *(p+i+1)=t;
                      }
   return;
}

void output_array(int *p, int num)
{
   int i;
   for(i=0;i<num-1;i++)
      cout<<*(p+i)<<",";
   cout<<*(p+num-1)<<"\n"; //我这样处理,可以使最后一个数后面不加逗号,看得更舒服
   return;
}

对于输出函数,还可以这样写:

void output_array(int *p, int num)
{
   int i;
   for(i=0;i<num-1;i++,p++)
             cout<<*p<<",";
   cout<<*p<<"\n";
   return;
}

相对而言,bubble_sort()函数还是照原样写好一些,其中的道理留给同学们思考吧。

同学们晕或不晕,都正常。正如很多同学感叹的:要多看书,快到期末了,到了学习效率最高的时候了,加油!

 

时间: 2024-07-30 11:15:33

第16周报告1:冒泡排序指针版的相关文章

C++程序设计-第16周字符数组及指针上机实践项目

回到课程主页,链接:C++程序设计课程主页-2012级 本次上机对应的教学内容:第5章   数组 - 字符数组,第六章 指针 指针的基本概念 第一部分 程序分析 阅读下面的程序,先写出其运行结果,再上机运行进行对比.必要时,单步执行程序,在监视(watch)窗口中观察变量的动态变化,从而掌握程序的运行机理. (1) #include <iostream> using namespace std; void prt(int*, int*, int*); int a=10, b=40, c=20;

第16周报告2:求奇因子

问题:编写函数 int fun(int x, int *pp).其功能是,求出x的所有奇数因子,并按照从小到大的顺序放在pp指向的内存中,函数返回值为这些整数的个数.若x的值为30, 数组中的数为1,3,5,15,函数返回4. 详见 实验指导书 实验目的:学会利用指针解决问题 实验内容:求出一个数所有的奇数因子  /* 程序头部注释开始 * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称:

C++第17周项目5——数组排序指针版

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565 [项目5-数组的排序]按给定部分程序的要求,用指向数组的指针变量作为形式参数编写函数,完成排序.重点体会:(1)排序算法,可以是冒泡,也可以是选择:(2)用指向数组的指针变量作为形式参数,用数组名(即数组的地址)作为实际参数,函数中对于形参的改变实质上也就是对实参对应内存单元的改变:(3)形式参数中不指定数组大小,实际数组的大小也一并作为参数传递. 参考解答 #inclu

C++第17周项目6——指针版多科成绩计算

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565 [项目6(选做)- 指针版多科成绩计算](接15周项目4)用二维数组score[][4]保存同学们的高数.英语.C++成绩及总成绩.在此基础上,尽量用指针法访问数组,完成下面的操作:(1)设计输入成绩的函数,输入3科成绩后可以自动求出总分,并将数据全保存到数组中:(2)输出各门课及总分的最高成绩.最低成绩.平均成绩和成绩的标准偏差:(3)作为拓展,自行建立一个文本文件存储

2013-C++第16周项目参考解答链接集

课程主页在:http://blog.csdn.net/sxhelijian/article/details/11890759 [项目2-指来指去]设计一个程序,利用指针完成下面的工作(1)下面的程序,输入10 100和100 10,均可以输出max=100 min=10,请补充完整程序 #include <iostream> using namespace std; int main( ) { int *p1,*p2,a,b,t; cin>>a>>b; p1=&

16周IPO零申报难阻PE热情 康美生物欲A股上市

IPO持续16周零申报的状态下,一些企业如深圳康美生物科技股份有限公司(下称"康美生物")仍对A股上市蠢蠢欲动. 证监会最新数据显示,截至3月27日,主板排队企业169家(包括2家过会企业):中小板排队281家(包括8家过会企业):创业板排队企业232家(包括17家过会企业).数据表明,已经连续16周无新增初审企业进入首次公开发行(IPO)名单. 4月2日,环保部网站显示,康美生物上市环保核查进入公示期,北京环保局认为其基本符合上市环保核查的相关要求,广东省环保厅.湖北省环保厅都原则上

2014秋C++第16周 项目 指针和数组、函数

课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,课程资源在云学堂"贺老师课堂"同步展示,使用的帐号请到课程主页中查看.  [项目1-数组的排序]按给定部分程序的要求,用指向数组的指针变量作为形式参数编写函数,完成排序.重点体会:(1)排序算法,可以是冒泡,也可以是选择:(2)用指向数组的指针变量作为形式参数,用数组名(即数组的地址)作为实际参数,函数中对于形参的改变实质上也就是对实参对应内存单元的改变:(3)形

第15周报告1: 冒泡排序

任务1:(数组的排序)编函数,完成冒泡排序.要求不能改变下面的main函数. 重点体会:(1)排序算法:(2)数组名作形式参数,将能改变作为实际参数的数组的值,实际参数传递给形式参数的是数组的地址值,也是传值:(3)形式参数中不指定数组大小,实际数组的大小也一并作为参数传递. 实验目的:学会冒泡排序算法 实验内容:实现冒泡排序算法,并将之定义为一个函数 /* 程序头部注释开始 * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All right

第18周报告1:指向字符的指针

任务:有一字符串,包含n个字符.实现函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串,当m值大于str1的长度n时,输出空字符串. 实验目的:学会指针访问字符数组 实验内容:从字符数组中取出指定位置开始的子符串 /* 程序头部注释开始 * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称: substr.cpp * 作 者: 贺利坚 * 完成日期: 2011 年 12 月 22