我是靠谱客的博主 高兴老鼠,最近开发中收集的这篇文章主要介绍无限循环输入任意10个整数,然后将这10个整数数列按照奇数在前、偶数在后的顺序重新排放。并要求奇偶两部分都是升序排列,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

方法一

在这里插入图片描述



#include <stdio.h>
int main()
{
    int a[10];
    int b,c;
    int i,j,z;
    int temp;
    while(1)
    {
    	b = 0;//统计奇数
        c = 9;//统计偶数
    	
        printf("请输入10个数:");
        for(i = 0;i < 10;i ++)
     {
        scanf("%d",&a[i]);
        if(a[i] % 2 != 0)
        {
            b ++;
        }
        else
        {
            c --;
        }
     }
   
    for(i = 0;i < b;i ++)
    {
        for(j = 9;j > c;j --)
        {
            if(a[i] % 2 == 0 && a[j] != 0)
            {
            	
                temp = a[i];
                a[i] = a[j];
                a[j] = temp;
               

            }
            
        }
        

    }
    //排奇数:冒泡排序
    for(i = 0;i < b - 1;i ++)
    {
        for(j = 0;j < b - i - 1;j ++)
        {
            if(a[j] > a[j + 1])
            {
                temp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = temp;
            }
        }
    }
    //排偶数:冒泡排序
    for(i = 0;i < c;i ++)
    {
        for(j = c + 1;j < 10 - i - 1;j ++) 
        {
            if(a[j] > a[j + 1])
            {
                temp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = temp;

            }
        }
    }
//    //打印
    for(i = 0;i < 10;i ++)
    {
        printf("%d ",a[i]);
    }
    printf("n*****************************n");


    }
    return 0;

}







方法2

**思路:分别把奇数和偶数取出来在排序

#include <stdio.h>
int main()
{
    int a[10];//存放整体个数
    int b[10];//存放偶数
    int c[10];//存放奇数
    int i,j,k,l;
    int temp;
    int n;
    while(1)
    {
    	j = 0;
		k = 0; 
    printf("请输入10个数:");
    for(i = 0;i < 10;i ++)
    {
        scanf("%d",&a[i]);
        if(a[i] % 2 == 0)
        {
            c[j] = a[i];
            j ++;
        }
        else
        {
            b[k] = a[i];
            k ++;
        }
    }
    n = j;
    //奇数排序
    for(k = 0;k < 10 - n - 1;k ++)
    {
        for(l = 0;l < 10 - n - k - 1;l ++)
        {
            if(b[l] > b[l + 1])
            {
                temp = b[l];
                b[l] = b[l + 1];
                b[l + 1] = temp;
            }
        }
    }
    //偶数排序
    for(j = 0;j < n - 1;j ++)
    {
        for(i = 0;i < n - 1 - j;i ++)
        {
            if(c[i] > c[i + 1])
            {
                temp = c[i];
                c[i] = c[i + 1];
                c[i + 1] = temp;
            }
        }
    }
    //先打印奇数,再打印偶数
    for(i = 0;i < 10 - n;i ++)
    {
        printf("%d ",b[i]);
    }
    for(i = 0;i < n;i ++)
    {
        printf("%d ",c[i]);
    }
    printf("n%%%%####$$$$**********************n");
    }
    return 0;

}

`**

方法3

先整体排序。再取奇数偶数

#include <stdio.h>
int main()
{
    int a[10];
    int b[10];//偶数
    int c[10];//奇数
    int temp;//临时变量
    int n;//存放奇数的个数
    int i,j = 0,k = 0;
    while(1)
    {
        printf("请输入10个数 ");
         for(i = 0;i < 10;i ++)
    {
        scanf("%d",&a[i]);
    }
    //先排序
    for(i = 0;i < 10 - 1;i ++)
    {
        for(j = 0;j < 10 - 1- i;j ++)
        {
            if(a[j] > a[j +1])
            {
                temp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = temp;
            }
        }
    }
    j = 0;
    k = 0;
    //取出奇数和偶数
    for(i = 0;i < 10;i ++)
    {
        if(a[i] % 2 == 0)//判断是偶数
        {
            b[j] = a[i];
            j ++;
        }
        else
        {
            c[k] = a[i];
            k ++;
        }

    }
    n = k;
    for(i = 0;i < n;i ++)
    {
        printf("%d ",c[i]);

    }
     for(i = 0;i < 10 - n;i ++)
    {
        printf("%d ",b[i]);

    }
    printf("n**************************************n");

    }
    return 0;

}


方法4

#include <stdio.h>
int main()
{
    int a[10];
    int b[10];//偶数
    int c[10];//奇数
    int temp;//临时变量
    int n;//存放奇数的个数
    int i,j = 0,k = 0;
    int h = 0;
    while(1)
    {
        printf("请输入10个数 ");
         for(i = 0;i < 10;i ++)
    {
        scanf("%d",&a[i]);
    }
    //先排序
    for(i = 0;i < 10 - 1;i ++)
    {
        for(j = 0;j < 10 - 1- i;j ++)
        {
            if(a[j] > a[j +1])
            {
                temp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = temp;
            }
        }
    }
    j = 0;
    k = 0;
    h = 0;
    //取出奇数和偶数
    for(i = 0;i < 10;i ++)
    {
        if(a[i] % 2 == 0)//判断是偶数
        {
            b[j] = a[i];
            j ++;
        }
        else
        {
            c[k] = a[i];
            k ++;
        }

    }

    for(i = 0;i < k;i ++)
    {
        a[h] = c[i];
        h ++;

    }
     for(i = 0;i < 10 - k;i ++)
    {
        a[h] = b[i];
        h ++;


    }
    for(i = 0;i < 10;i ++)
    {
        printf("%d ",a[i]);
    }
    printf("n**************************************n");

    }
    return 0;

}


总结:方法1和4都改变了原来数组元素的顺序,而2,3都没有改变原数组(2,3慎用嘻嘻(__) 嘻嘻……)

最后

以上就是高兴老鼠为你收集整理的无限循环输入任意10个整数,然后将这10个整数数列按照奇数在前、偶数在后的顺序重新排放。并要求奇偶两部分都是升序排列的全部内容,希望文章能够帮你解决无限循环输入任意10个整数,然后将这10个整数数列按照奇数在前、偶数在后的顺序重新排放。并要求奇偶两部分都是升序排列所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部