第16周项目1--数组的排序(指针)

/*
* Copyright (c) 2014, 烟台大学计算机学院
* All rights reserved.
* 文件名称:test.cpp
* 作    者:刘畅
* 完成日期:2014 年 12  月  10  日
* 版 本 号:v1.0
*
* 问题描述:指针与数组;
* 输入描述:啥也不用输;
* 程序输出:输出该输出的。
。
按给定部分程序的要求,用指向数组的指针变量作为形式参数编写函数,完成排序。重点体会:
(1)排序算法,可以是冒泡,也可以是选择;
(2)用指向数组的指针变量作为形式参数,用数组名(即数组的地址)作为实际参数,函数中对于形参的改变实质上也就是对实参对应内存单元的改变;
(3)形式参数中不指定数组大小,实际数组的大小也一并作为参数传递。
#include <iostream>
using namespace std;
void sort(int *p, int num);
void output(int *, int);
int main()
{
    int a[20] =
    {
        86, 46, 22, 18, 77, 45, 32, 80, 26, 88, 57, 67, 20, 18, 28, 17, 54,
        49, 11, 16
    };
    int b[15] = { 27, 61, 49, 88, 4, 20, 28, 31, 42, 62, 64, 14, 88, 27, 73 };
    sort(a, 20);
    output(a, 20);
    sort(b, 15);
    output(b, 15);
    return 0;
}

void sort(int *p, int num)
{
    int i, j, t;
    for (j = 0; j < num; ++j)
        for (i = 0; i < num - j - 1; ++i)
            if (*(p + i) < *(p + i + 1))
            {
                t = *(p + i);
                *(p + i) = *(p + i + 1);
                *(p + i + 1) = t;
            }
}

void output(int *p, int num)
{
    int i;
    for (i=0; i < num; i++)
        cout << *(p+i) << " ";
    cout << endl;
}

(2)这是另一种指针for循环

void output(int *p, int num)
{
    int *q;
    for (q=p ; q <p+ num; q++)
        cout << *q << " ";
    cout << endl;
}

运行结果:

学习心得:

数组的确麻烦,主要是*号在应用的时候扯不清楚,上午用第二种for循环做这个的时候差点暴走,要么死活编译不了,要么出现一大堆无效的数字.后来问老师才想到用另一个指针来代表原来的指针.

时间: 2024-10-06 14:05:56

第16周项目1--数组的排序(指针)的相关文章

第十六周项目一——数组的排序

/* Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作者:陈丹妮 * 完成日期:2014年 12 月 14 日 * 版 本 号:v1.0 * * 问题描述: 用冒泡法按降序排序a中元素 * 输入描述: 输入一个整数 * 程序输出: 输出降序后的数列 */ #include <iostream> using namespace std; void sort(int *p,int num); //不要对

第十三周项目4——数组的排序(冒泡法)

/* * Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作    者:李晓凯 * 完成日期:2014年 11 月 29日 * 版 本 号:v1.0 * * 问题描述:降序排列数组的数并输出 * 输入描述: * 程序输出:降序排列数组的数并输出 */ #include <iostream> using namespace std; void bubble_sort(int a[],int n); vo

16周(项目四 动态数组)

/* *copyright(c) 2014,烟台大学计算机学院 *All rights reserved. *文件名称:16周(项目四 动态数组) *作者:王忠 *完成日期:2014.12.15 *版本号:v1.0 * *问题描述:新增一个恰当长度的动态数组,将原数组中的数据"复制"到新数组,接着再输入新的数据.增加新数据后的数组,成为保存数据的新数组. *输入描述:输入成绩,学生数 *程序输出:新增的学生数 成绩 #include <iostream> using nam

体育馆团体预约系统UML软件工程第16周项目日志

体育馆团体预约系统 UML软件工程项目日志 June,14th ,2019 目录 一. 博客地址 1 二. 客户提交内容 1 三. 项目背景 2 四. 项目范围和前景 2 五. 沟通记录 3 六. 甲方确认结果: 6 七. 结构化需求分析概述 6 八. 涉众分析 7 九. 硬数据采样及数据分析 8 十. 过程建模 8 十一. 数据建模 9 十二. 预约系统用例分析 10 十三. 工作计划 12 十四. 本周工作日志 13 十五. 项目总进展 13 一.博客地址 https://www.cnblo

第13周上机实践项目4——数组的排序(1)

问题及代码 /* * Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作 者:辛彬 * 完成日期:2014年 11 月 25 日 * 版 本 号:v1.0 * * 问题描述: 编写函数,完成冒泡排序,要求不能改变下面的main函数.. * 输入描述:没有输入. * 程序输出:冒泡排序: */ #include <iostream> using namespace std; //两个函数bubble_s

第三周项目五——数组作数据成员(2)

(2)用salary[50]有限制,实际人数少时,会浪费空间,人数多了,无法完成任务.在main()中先输入职工人数,作为参数传递给输入职工工资的成员函数,然后利用动态分配内存的机制,开辟一个大小正好的连续空间,完成上面的工作. /* Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作者:陈丹妮 * 完成日期:2015年 3 月 29 日 * 版 本 号:v1.0 * 问题描述:用salary[50]有

第三周项目五——数组作数据成员(1)

设计一个工资类(Salary) class Salary { private: double salarys[50]; //多人的工资 int number; //实际人数 }; 要设计的成员函数有: void set_salarys( ):输入职工工资(输入-1标志着工资输入结束),工资保存到salary数组中,实际人数保存到number中: void add_salarys(int x):给每个人涨x元工资 void sort_salarys():对工资排序 void show_salary

第三周 项目五-数组做数据成员(一)

/* * Copyright (c) 2015, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作 者:冷基栋 * 完成日期:2015年 3 月 19 日 * 版 本 号:v1.0 */ 问题 设计一个工资类(Salary),其中类的数据成员如下: class Salary { private: double salarys[50]; //多人的工资 int number; //实际人数 }; 要设计的成员函数有: void set_sal

第三周 项目五-数组做数据成员(三)文件操作-数组

 /* * Copyright (c) 2015, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作    者:冷基栋 * 完成日期:2015年 3 月 21 日 * 版 本 号:v1.0 */ 问题 (3)手工输入工资?!太让人不能忍受了.现给出包含了不足500个职工工资的文件salary.txt(下载),从文件中读数据,完成上面的工作. (4)增加一个成员函数,将排序后结果保存到一个文件中. 代码 #include <iostrea