输入一个数组 使得所有负的在正的前面

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int a[10] = {0};
    int i;
    int j = 0;
    int temp;
    int start = 0;
    int end = 9;
    printf("please input the arr:");
    while(scanf("%d",&i) != EOF){
        a[j++] = i;
    }
    while(start <= end){
        if(a[start] < 0 && a[end] > 0){
            temp = a[start];
            a[start] = a[end];
            a[end] = temp;
            start++;
            end --;
        }else if(a[start] >= 0){
            start++;
        }else if(a[end] <= 0){
            end--;
        }
    }
    for(i = 0; i < 10;i++){
        printf("%4d",a[i]);
    }
    system("pause");
    return 0;
    }
时间: 2024-10-11 11:01:33

输入一个数组 使得所有负的在正的前面的相关文章

C中怎么利用指针实现一个函数输入一个数组且输出一个数组

1 #include<stdio.h> 2 3 int num[]={1,3,5,45,67,18,64,82,34,62}; 4 5 int *pnum; 6 7 int *Fun(int *num);//该函数可以实现输入一个数组且输出一个数组的功能 8 9 void main() 10 { 11 char i=0; 12 //num=Fun(num);//这样写是错误的,因为num是一个指针常量,不能被赋值 13 pnum=Fun(num); 14 for(i=0;i<10;i++

用指针??输入一个数组,逆序输出该数组

/* *Copyright(c) 2014 烟台大学计算机学院 *All rights reserved. * Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作 者:杨汉宁 * 完成日期:2014年 12 月 11 日 * 版 本 号:v1.0 * * 问题描述:输入一个数组,逆序输出该数组 * 输入描述:输入一个数组 * 程序输出:逆序输出该数组 */ #include <iostream> us

剑指Offer(Java版)第四十题:在数组中的两个数字,如果前面一个数字大于后面的数字, 则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。 并将P对1000000007取模的结果输出。 即输出P%1000000007

/*在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数P.并将P对1000000007取模的结果输出. 即输出P%1000000007 */ import java.util.*; public class Class40 { public int InversePairs(int[] array){ int length = array.length; int P = 0; for(int i = 0; i < lengt

编程练习:输入一个数组,编写一个函数,使所有奇数位于数组的前段部分,所有的偶数位于数组的后段部分

想法类似于快速排序 使用两个指针,一个指针指向最前面的元素,另一个指针指向最后一个元素: 第一个指针向右移动,直到遇到偶数停下:第二个指针向前移动,直到遇到奇数停下:然后交换这两个数据. 直到左边的指针和右边的指针相遇时就结束,然后返回数组即可. 1 #!/usr/bin/env python3 2 3 def ji_first_ou(ary): 4 indexa,indexb = 0,len(ary)-1 5 while indexa < indexb: 6 while ary[indexa]

输入一个数组,求最小的K个数

被这道题困了好久,看了剑指Offer才知道OJ上的要求有点迷惑性. 题目: 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4. 一直以为要按照顺序输出,想的方法是插入排序算法复杂度是O(N*K),当然这个地方就显得自己有点蠢了.不过我想在“按序输出”的错误题意下还没有啥更好的方法. 然后看了剑指Offer原书,原来输出不必按照顺序.所以第一种方法是快速选择.这种方法算法复杂度是O(N).不过在实际的使用中可能有点隐含的时间参数

控制台输入一个数组,然后倒序输出

static void Main(string[] args) { Console.WriteLine("请输入十个数,并以空格隔开:"); string string1 = Console.ReadLine(); string[] string2 = System.Text.RegularExpressions.Regex.Split(string1, @"[ ]+");//表示按空格分隔,正则[0-9]表示匹配0到9的任意字符,这里匹配的是空格 string[]

【课堂练习】输出一个数组中的最大值并测试

设计思想 用函数封装求数组最大值的代码,主函数中调用函数实现功能. 源程序代码 #include <iostream> using namespace std; int Largest(int list[],int length) { int i; int max=list[0]; for (i=0;i<length;i++) { if (list[i]>max) { max=list[i]; } } return max; } void main() { int i,Max; i

剑指offer-第四章解决面试题思路(判断一个数组是否为二叉搜索树的后序遍历序列)

二叉搜索树:二叉搜索树根节点的左边都比根节点小,右边都比根节点大. 例题:输入一个数组,判断是否为二叉搜索树的后序遍历序列,如果是,返回true,如果不是,返回flase,假设没有重复的元素. 思路:由于是后序遍历,所以数组的最后一个节点是根节点,而且,由于是二叉收索树,所以,前面的数据被分为两部分,右边部分比根节点小,左边比根节点大.左右两边又分别为二叉收索树,因此可以用递归来实现. Java代码: public class IsBinarySearchTree { public boolea

判断一个数能否通过一个数组中的数相乘而得到(数组中的数使用次数不限)

题目:判断一个数能否通过一个数组中的数相乘而得到(数组中的数使用次数不限) 例如:第一行输入目标数x,第二行再输入一个数组(每个数用空格隔开),如果能则输出1,不能则输出-1: 输入例1: 20 2 3 5 7 输出: 1 解释:20 = 2*2*5,可以组成,所以输出1. 输入例2: 20 3 5 7 输出: -1 解释:无法组成,所以输出-1. 解题思路:转化成完全背包问题来解决(因为每个因子都可以使用无限次) #include <iostream> #include <bits/s