读书人

(有关问题)关于奇偶排序数据丢失

发布时间: 2012-05-03 14:06:56 作者: rapoo

(问题)关于奇偶排序数据丢失
我是这样写的

C/C++ code
#include<stdio.h>int main(){    int n, i, c, m=0;    printf("How math nums will you input?\n");    scanf("%d", &n);                                         /**********定义输入数组长度**********/    int a[n];                                                 /**********自定义数组长度*********/    for(i=0; i<n; i++)                               /**由(i=0,i<n)开始,由scnaf中的空格结束一次循环**/        scanf("%d",&a[i]);    for(i=0;i<n;i++)                                         /*************实现n次循环*************/    {        {        for(i=0;i<n-m;i++)                         /***********循环中做n-1次比较,得到最大值************/          {              if(a[i]>a[i+1])              c=a[i];              a[i]=a[i+1];              a[i+1]=c;          }        }    m=m+1;    }    printf("\nThe even num(s) is:\n ");    for(i=0;i<n;i++)    {    if(a[i]%2==0)                                   /**********偶数的条件**********/    printf("%d ",a[i]);    }    printf("\n**************\nThe odd num(s) is:\n ");    for(i=0;i<n;i++)    {    if(a[i]%2!=0)                                   /**********奇数的条件**********/    printf("%d ",a[i]);    }    printf("\n ");}

之后运行出现了数据丢失


[解决办法]
不知道什么是“奇偶排序”,但你的两层循环都使用i作为控制变量?这太奇怪了。
此外,你的i有可能等于n-1。这时对a[i+1]的访问会越界。
C/C++ code
for(i=0;i<n;i++)                                         /*************实现n次循环*************/    {        {        for(i=0;i<n-m;i++)                         /***********循环中做n-1次比较,得到最大值************/          {              if(a[i]>a[i+1])              c=a[i];              a[i]=a[i+1];              a[i+1]=c;          }        }    m=m+1;    }
[解决办法]
逻辑上不清楚,两层循环不知道循环的次数。因为你使用的同一个循环变量。
[解决办法]
第二个for循环有问题吧

读书人网 >C语言

热点推荐