2016-04-10 41 views
-1

输出应该是这样的:

即使阵列按降序:8
即使阵列按降序:6
即使阵列按降序:4
即使阵列中降序:2
即使阵列中降序:0

奇数组中降序:9
奇数组中降序:7
奇数组中降序:5
奇数组按降序:按降序3
奇阵:1创建两个阵列分别

#include<stdio.h> 

void main() 
{ 
    int i=0,j=0,k=0,odd[5],even[5],temp; 

    for(i=0;i<10;i++) 
    { 
     if(i%2==0) 
     { 

       even[j]=i; 
       j++; 
     } 
     else 
     { 

       odd[k]=i; 
       k++; 
     } 
    } 

    for(i=0;i<5;i++) 
    { 
     for(j=1;j<6;j++) 
     { 
      if(even[i]<even[j]) 
      { 
       temp=even[j]; 
       even[j]=even[i]; 
       even[i]=temp; 
      } 
     } 
     printf("Even Array in Descending order: %d \n",even[i]); 
    } 

    for(i=0;i<5;i++) 
    { 
     for(j=1;j<6;j++) 
     { 
      if(odd[i]<odd[j]) 
      { 
       temp=odd[j]; 
       odd[j]=odd[i]; 
       odd[i]=temp; 
      } 
     } 
     printf("Odd Array in Descending order: %d \n",odd[i]); 
    } 
} 
+0

你的实际和具体问题是什么? – kaylum

+0

'for(j = 1; j <6; j ++)'当'j'为'5'时,会导致越界访问,因为有效的偶数/奇数数组索引是从0到4。 – kaylum

回答

0

从你身边的一个小错误,虽然排序是通过运行for(j=1;j<6;j++)首先超过数组边界,所以你需要什么做的是对你的代码进行一些修改。

第一:对于循环应该运行作为

for(i = 0; i < 4; i++) { 
    for(j = i + 1; j < 5; j++) { 

    } 
} 

二:后添加一个printf()声明for循环,因为外环只运行4次。

请参阅本完整:

#include<stdio.h> 

int main() 
{ 
    int i=0,j=0,k=0,odd[5],even[5],temp; 

    for(i=0;i<10;i++) 
    { 
     if(i%2==0) 
     { 

       even[j]=i; 
       j++; 
     } 
     else 
     { 

       odd[k]=i; 
       k++; 
     } 
    } 

    for(i=0;i<4;i++) 
    { 
     for(j= i + 1;j<5;j++) 
     { 
      if(even[i]<even[j]) 
      { 
       temp=even[j]; 
       even[j]=even[i]; 
       even[i]=temp; 
      } 
     } 
     printf("Even Array in Descending order: %d \n",even[i]); 
    } 
    printf("Even Array in Descending order: %d \n",even[i]); 
    for(i=0;i<4;i++) 
    { 
     for(j= i + 1;j<5;j++) 
     { 
      if(odd[i]<odd[j]) 
      { 
       temp=odd[j]; 
       odd[j]=odd[i]; 
       odd[i]=temp; 
      } 
     } 
     printf("Odd Array in Descending order: %d \n",odd[i]); 
    } 
    printf("Odd Array in Descending order: %d \n",odd[i]); 
    return 0; 
} 

参观此link用于演示

乐意帮助!