首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-05-03 
(问题)关于奇偶排序数据丢失我是这样写的C/C++ code#includestdio.hint main(){int n, i, c, m0printf

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

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循环有问题吧

热点排行