三级c上机代码有些地方不明白,请高手指点

来源:百度知道 编辑:UC知道 时间:2024/05/28 12:46:40
#include <stdio.h>
#include <string.h>
#include <conio.h>
int aa[200], bb[10];
void jsSort()
{
int i, j, data;
for (i=0; i<199; i++) //为什么i要小于199而不是200?这样i从0开始岂不是只能循环199次。
for (j=i+1; j<200; j++) //为什么j=i+1
{
if (aa[i]%1000 > aa[j]%1000)
{
data = aa[i]; //这三行排序方法不太明白,有没有更好理解的排序方法?
aa[i] = aa[j];
aa[j] = data;
}
else if (aa[i]%1000 == aa[j]%1000) //为什么i和j数组相等的时候下面就没有排序的代码了?
{
if (aa[i] < aa[j]) //为什么这行的代码没有加上%1000?
{
data = aa[i];
aa[i] = aa[j];
aa[j] = data;
}
}
}
for (i=0; i<10; i++)
bb[i] = aa[i];
}
void ReadDat()
{
FILE *in;
int i;
in = fopen("in.dat", "r");
for (i=0; i<200; i++)
fscanf(in, "%d,", &aa[i]);
fclose(in);
}
void WriteDat()
{

#include <stdio.h>
#include <string.h>
#include <conio.h>
int aa[200], bb[10];
void jsSort()
{
int i, j, data;
for (i=0; i<199; i++) //冒泡排序法只要排好了前面的199个,第200个的位 位置不就确定了吗,所以不用排第200次
for (j=i+1; j<200; j++) //为什么j=i+1
{
if (aa[i]%1000 > aa[j]%1000)
{
data = aa[i]; //这个是实现aa[i]与aa【j】的交换。
aa[i] = aa[j];
aa[j] = data;
}
else if (aa[i]%1000 == aa[j]%1000) //这个算法应该是根据后三位的大小进
行排序从小到大,而如果后三位相等
的话按千位数派讯但是却是反过来按
千位从大到小
{
if (aa[i] < aa[j]) //因为后三位已经比较过了,不需要再滤掉千位数。直接
比较即可
{
data = aa[i];
aa[i] = aa[j];
aa[j] = data;
}
}
}
for (i=0; i<10; i++)
bb[i] = aa[i];
}
void ReadDat()
{
FILE *in;
int i;
in = fo