标题:冒泡出现的问题
只看楼主
t1melost
Rank: 1
等 级:新手上路
帖 子:22
专家分:3
注 册:2010-12-6
结帖率:70%
已结贴  问题点数:10 回复次数:3 
冒泡出现的问题
题目要求:将输入的数组按从小到大输出。(输入以遇-222为结束标志)
出现的问题:输出数组后总是无缘出现一个0,且最大值消失。

#include <stdio.h>

#define maxNums 10000
#define endFlag -222

int save(int inputData[]);
void sort(int inputData[],int dataCount);
void prin(int inputData[],int dataCount);
int main(void)
{
    int inputData[maxNums] = {0}, dataCount;  
     dataCount=save(inputData);
    sort(inputData,dataCount);
    prin(inputData,dataCount);
   
    return 0;
}

int save(int inputData[])
{
    int i,m,dataCount=0;
    printf("Please input numbers:");
    for(i=0;i<maxNums;i++)
    {
        dataCount++;
        scanf("%d",&m);
        if(m!=-222)
            inputData[i]=m;
        else break;
    }
    return dataCount-1;
}
void sort(int inputData[],int dataCount)             \\经过昨晚的调试,所有子函数都成功,就在冒泡这出了问题,总是无缘出现0.
{
    int i,j,temp;
    for(i=0;i<dataCount;i++)
    for(j=0;j<dataCount-i;j++)
        if(inputData[j]>inputData[j+1])
            {
                temp=inputData[j];
                inputData[j]=inputData[j+1];
                inputData[j+1]=temp;
            }

}
void prin(int inputData[],int dataCount)
{
    int i;
    for(i=0;i<dataCount;i++)
    {    printf("%-6d",inputData[i]);
    if(((i+1)%6!=0)&&(i!=dataCount-1))
        printf(",");
    else    printf("\n");

}
}

[ 本帖最后由 t1melost 于 2011-6-15 10:35 编辑 ]
搜索更多相关主题的帖子: 无缘 最大值 return 
2011-06-15 10:33
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
得分:5 
楼主想把最大值放到哪里?
2011-06-15 11:02
bccn_2012
Rank: 6Rank: 6
等 级:侠之大者
帖 子:158
专家分:447
注 册:2011-5-14
得分:5 
程序代码:
#include <stdio.h>

 
#define maxNums 10000

 #define endFlag -222

 
int save(int inputData[]);

 void sort(int inputData[],int dataCount);

 void prin(int inputData[],int dataCount);

 int main(void)

 {
     int inputData[maxNums] = {0}, dataCount;  
      dataCount=save(inputData);
     sort(inputData,dataCount);
     prin(inputData,dataCount);
     
    return 0;

 }

 
int save(int inputData[])

 {
     int i,m,dataCount=0;
     printf("Please input numbers:");
     for(i=0;i<maxNums;i++)
     {
         //dataCount++;          //问题在这里 
         scanf("%d",&m);
         if(m!=-222)
          {  dataCount++;           
             inputData[i]=m;
           }
         else break;
     }
     return dataCount-1;

 }

 void sort(int inputData[],int dataCount)             \\经过昨晚的调试,所有子函数都成功,就在冒泡这出了问题,总是无缘出现0.

 {
     int i,j,temp;
     for(i=0;i<dataCount;i++)
     for(j=0;j<dataCount-i;j++)
         if(inputData[j]>inputData[j+1])
             {
                 temp=inputData[j];
                 inputData[j]=inputData[j+1];
                 inputData[j+1]=temp;
             }

 
}

 void prin(int inputData[],int dataCount)

 {
     int i;
     for(i=0;i<dataCount;i++)
     {    printf("%-6d",inputData[i]);
     if(((i+1)%6!=0)&&(i!=dataCount-1))
         printf(",");
     else    printf("\n");

 
}

 }

 
2011-06-15 13:01
t1melost
Rank: 1
等 级:新手上路
帖 子:22
专家分:3
注 册:2010-12-6
得分:0 
回复 2楼 hjywyj
最后面,从小到大排序
2011-06-15 17:20



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-342914-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.148890 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved