课后习题 2-7 数组非零元素前移

题目:

假定数组A[arraySize]中有多个零元素, 试写出一个函数, 将A 中所有的非零元素依次移到数组A的前端A[i]。

Array.h

#pragma once
#include<iostream>
using namespace  std;

class Array {
    int* data;
    int num;
public:
    Array(int n) {
        num = n;
        data = new int[num];
    }
    void creat(int* arr) {
        for (int i = 0; i < num; i++) {
            data[i] = arr[i];
        }
    }
    void show() {
        for (int i = 0; i < num; i++) {
            cout << data[i] << " ";
        }
        cout << endl;
    }
    void move() {
        int p = 0;
        int temp;
        for (int i = 0; i < num; i++) {
            if (data[i] != 0) {
                temp = data[i];
                data[i] = data[p];
                data[p] = temp;
                p++;
            }
        }
    }
};

main.cpp

#include"Array.h"

int main() {
    Array L(11);
    int arr[] = { 0,8,3,0,4,0,5,4,0,9,0 };
    L.creat(arr);
    L.show();
    L.move();
    L.show();
    return 0;
}

原文地址:https://www.cnblogs.com/SlowIsFast/p/12501801.html

时间: 2024-11-02 02:35:47

课后习题 2-7 数组非零元素前移的相关文章

Java数组课后习题

package javafirst; import java.util.Arrays; class Show{ public void showArray(int[] arr){ for(int i : arr){ System.out.print(i + " "); } System.out.println(); } } public class ArrayTest { public static void main(String[] args){ Show sh = new Sho

2018.1.7 计算机算法课后习题总结

习题解答提要 习题1 1-1 分数分解算法描述 把真分数a/b分解为若干个分母为整数分子为"1"的埃及分数之和: (1) 寻找并输出小于a/b的最大埃及分数1/c: (2) 若c>900000000,则退出: (3) 若c≤900000000,把差a/b-1/c整理为分数a/b,若a/b为埃及分数,则输出后结束. (4) 若a/b不为埃及分数,则继续(1).(2).(3). 试描述以上算法. 解:设 (这里int(x)表示取正数x的整数),注意到 ,有 算法描述:令c=d+1,则

计算机组成原理_第四版课后习题答案(完整版)

计算机组成原理_第四版课后习题答案(完整版) ?第一章 1.?比较数字计算机和模拟计算机的特点. 解:模拟计算机的特点:数值由连续量来表示,运算过程是连续的: 数字计算机的特点:数值由数字量(离散量)来表示,运算按位进行. 两者主要区别见P1?表1.1. 2.?数字计算机如何分类?分类的依据是什么? 解:分类: 数字计算机分为专用计算机和通用计算机.通用计算机又分为巨型机.大型机. 中型机.小型机.微型机和单片机六类. 分类依据:专用和通用是根据计算机的效率.速度.价格.运行的经济性和适应性来划

《七周七语言:理解多种编程范型》のruby课后习题答案

本系列是<七周七语言>的课后习题答案.这本书不拘泥于语法细节,而是横向比较各种编程语言(非热门)之间的编程范式. 是本对编程觉悟能有所帮助的好书,这里就不多做介绍了,感兴趣的同学不妨去看一下. 不得不说,Ruby的风格很黑客. 1. 打印字符串"Hello, world." puts "Hello, world." 2. 在字符串“Hello, Ruby.”中,找出"Ruby."所在下标. puts "Hello, Ruby

C Primer Plus 第十二章课后习题……2015.5.10

第十二章课后习题 1.自动存储 寄存器存储 静态空连接 2.静态空连接 内部链接 外部链接 3.静态外部链接  静态内部链接 4.空连接 5.在声明中使用表面这个变量或函数已经定义过 6.都分配一个具有100个int值的数组,calloc还把每个元素设置为零. 7.daisy全局变量  lily局部变量 8.#include<stdio.h> char color='B'; void first(void); void second(void); int main(void) { extern

《数据结构教程》(李春葆 主编)课后习题【练习题6】

[6.5] 1 #include <iostream> 2 3 using namespace std; 4 #define MAXN 100 5 #define N 4 6 #define M 4 7 int x,y,num; 8 int a[MAXN][MAXN] = { 9 {0,2,3,4}, 10 {1,5,6,7}, 11 {8,9,10,11}, 12 {12,13,14,15}}; 13 bool FindX(int X) 14 { 15 while(a[x][y]!=X){

C语言程序设计教程(第三版)课后习题10.4

1353: C语言程序设计教程(第三版)课后习题10.4 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 296  Solved: 219[Submit][Status][BBS] Description 有n个整数,使前面各数顺序向后移m个位置,最后m个数变成前面m个数,见图.写一函数:实现以上功能,在主函数中输入n个数和输出调整后的n个数. Input 输入数据的个数n n个整数移动的位置m Output 移动后的n个数 Sample Input

曾经做过的40道程序设计课后习题总结(一)

曾经做过的40道程序设计课后习题总结(一) 课后习题目录 1 斐波那契数列2 判断素数3 水仙花数4 分解质因数5 杨辉三角6 学习成绩查询7 求最大公约数与最小公倍数8 完全平方数9 统计字母.空格.数字和其它字符个数10 求主对角线之和11 完数求解12 求s=a+aa+aaa+aaaa+aa...a的值13 高度计算14 乘法口诀15 无重复三位数16 菱形打印17 利润计算18 第几天判断19 从小到大输出数列20 猴子吃桃问题21 乒乓球比赛22 求分数之和23 求阶乘的和24 递归求

1026: C语言程序设计教程(第三版)课后习题7.4数组排序

1026: C语言程序设计教程(第三版)课后习题7.4 题目描述 已有一个已排好的9个元素的数组,今输入一个数要求按原来排序的规律将它插入数组中. 输入 第一行,原始数列. 第二行,需要插入的数字. 输出 排序后的数列 样例输入 1 7 8 17 23 24 59 62 101 50 样例输出 1 7 8 17 23 24 50 59 62 101 提示 来源 #include<stdio.h> int main() {     int a[10],i,t;     for(i=0; i<