输入数组例如是Array [10] = {12,23,0,-7,138,22,7,99,10,-2}
我想在一端打印出偶数的数组,在另一端打印奇数,如下所示:Array [10] = {12,0,-2,10,22,138,-7,99,7 ,23}
int main()
{
int N = 0, i = 0, j = N-1, index = 0;
printf("Enter N (0>N<10): ");
scanf("%d", &N);
int Array[N];
for(i=0;i<N;i++){
printf("Enter the value number %d :", i+1);
scanf("%d", &Array[i]);
}
printf("Array[%d] ={",N);
for(i=0;i<N;i++){
printf("%d\t", Array[i]);
}
printf("}");
// swaping odd and even numbers
int Array2[N];
while (i < j){
if(Array[i]%2 == 0){
Array2[i] = Array[index];
i++;
}
else{
Array2[j] = Array[index];
j++;
}
index++;
}
// view the new array
printf("\n Array[%d] ={",N);
for(i=0;i<N;i++){
printf("%d\t", Array2[i]);
}
printf("}");
return 0;
}
这似乎不起作用。任何帮助将不胜感激。
注意:我知道数组[N]部分不是它应该如何完成的,它只是为了简化事情。
答案 0 :(得分:1)
在你的陈述中:
else{
Array2[j] = Array[index];
j++;
}
您需要j--;
而不是j++
。
答案 1 :(得分:1)
在你的陈述中:
if(Array[i]%2 == 0){
您不想检查要排序的项目(Array[index]
)吗?
答案 2 :(得分:0)
本声明中程序的开头
int N = 0, i = 0, j = N-1, index = 0;
j
设置为-1
,因为N
初始化0
。
所以这个循环
while (i < j){
//...
将迭代永远不会取决于它是否有意义。:)
至于循环,它不会交换偶数和奇数。
如果我理解你的方法,你需要像下面这样的东西。您可以修改演示程序,以便用户可以使用数组元素的值。
#include <stdio.h>
#define N 10
int main( void )
{
int a[N] = { 12, 23, 0, -7, 138, 22, 7, 99, 10, -2 };
int i, j;
printf( "Array[%d] = { ", N );
i = 0;
do
{
printf( "%d", a[i] );
} while ( ++i < N && printf( ", " ) );
printf( " };\n");
i = 0; j = N;
while ( i != j )
{
if ( a[i] % 2 == 0 )
{
++i;
}
else if ( a[--j] % 2 == 0 )
{
int tmp = a[j];
a[j] = a[i];
a[i] = tmp;
}
}
printf( "Array[%d] = { ", N );
i = 0;
do
{
printf( "%d", a[i] );
} while ( ++i < N && printf( ", " ) );
printf( " };\n");
return 0;
}
程序输出
Array[10] = { 12, 23, 0, -7, 138, 22, 7, 99, 10, -2 };
Array[10] = { 12, -2, 0, 10, 138, 22, 7, 99, -7, 23 };
答案 3 :(得分:0)
干运行,你就会明白这个概念
#include <stdio.h>
int main()
{
int arr[10];
int i,temp;
printf("Enter elements into arry\n");
for(i=0;i<=9;i++)
{
printf("Element #%d-->",i);
scanf("%d",&arr[i]);
}
for(i=0;i<=9;i=i+2)
{
if((arr[i]%2)!=0)
{
if((arr[i+1]%2)!=0)
{
arr[i]=arr[i];
arr[i+1]=arr[i+1];
}
else if((arr[i+1]%2)==0)
{
temp=arr[i];
arr[i]=arr[i+1];
arr[i+1]=temp;
}
}
else
{
if((arr[i+1]%2)==0)
{
arr[i]=arr[i];
arr[i+1]=arr[i+1];
}
else if((arr[i+1]%2)!=0)
{
temp=arr[i];
arr[i]=arr[i+1];
arr[i+1]=temp;
}
}
}
for(i=0;i<=9;i++)
{
printf("Element #%d-->%d\n",i,arr[i]);
}
return 0;
}