我是靠谱客的博主 高兴老鼠,最近开发中收集的这篇文章主要介绍无限循环输入任意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个整数数列按照奇数在前、偶数在后的顺序重新排放。并要求奇偶两部分都是升序排列所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复