冒泡出现的问题
题目要求:将输入的数组按从小到大输出。(输入以遇-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 编辑 ]