请编制一个函数arrangeValue(int inBuf[10][9]),其功能是:将一正整数序列{K1,K2,…,K9)重新排成一个新的序列。新序列中,比K1小的数都在K1的左面(后续的再向左存放),比K1大的数都在K1的右面(后续的再向右存放)。从K

admin2021-06-16  34

问题 请编制一个函数arrangeValue(int inBuf[10][9]),其功能是:将一正整数序列{K1,K2,…,K9)重新排成一个新的序列。新序列中,比K1小的数都在K1的左面(后续的再向左存放),比K1大的数都在K1的右面(后续的再向右存放)。从K1向右扫描。函数WriteData()负责将outBuf[]中的数据输出到文件OUT.DAT中。
    说明:在程序中已给出了10个序列。每个序列中有9个正整数,并存入数组inBuf[10][9]中,分别求出这10个新序列。
    例如:序列排序前{3,5,8,9,1,2,6,4,7)
    序列排序后{2,1.3,5,8,9,6,4.7}
    注意:部分源程序已给出。
    请勿改动主函数main()和写函数WriteData()的内容。
    试题程序:
    #include
    void WriteData();
    int inBuf[10][9]={{6,8,9,1,2,5,4,7,3},
    {3.5,8,9,1,2,6,4.7},
    {8,2,1,9,3,5,4,6,7},
    {3,5,1,2,9.8,6.7,4),
    {4,7,8,9.1,2,5,3,6),
    {4,7,3,5,1,2,6,8,9},
    {9,1,3,5,8,6,2,4,7},
    {2.6,1,9,8,3,5.7,4),
    {5,3,7,9,1,8,2,6,4},
    {7,1,3,2,5,8,9,4,6),
    };
    void arrangeValue()
    {
    }
    void main()
    {
    int i,j;
    arrangeValue();
    for(i=0;i<10;i++)
    {
    for(j=0;j<9;j++)
    {
    printf(“%d”,inBuf[j]);
    if(j<=7)printf(“,”);
    }
    printf(“\n”);
    }
    WriteData();
    }
    void WriteData()
    {
    FILE*fp;
    int i,j;
    fp=fopen(“OUT.DAT”,“W”);
    for(i=0;i<10;i++)
    {
    for(j=0;j<9;j++)
    {
    fprintf(fp,“%d”,inBuf[j]);
    if(i<=7)fprintf(fp,“.”);
    }
    fprintf(fP,“\n”);
   }
    fclose(fp);
}

选项

答案void arrangeValue() { int i,j,temp[9],hum_low.mum_high; for(i=0;i<10;i++)//对10行数据进行扫描 { mum_low=0,mum_high=8; for(j=8;j>=0;j--) //从最后一列向前扫描 { if(inBuf[i][j]>inBuf[i][0]) //如果当前数据比首位数据大 { temp[num_high]=inBuf[i][j]; //将当前数据放到temp中的第mum high位 mum_high--; //将存放比首位数据大的数据的下标前 移,以指定下次存放的位置 } else { temp[num_low]=inBuf[i][j]; //将当前数据放到temp中的第mum low位 hum_low++} //将存放比首位数据小的数据的下标后 移,以指定下次存放的位置 } } tempEnum_high]=inBuf[i][0]; //在最后留下的位置上存放原数组的首位数据 for(j=0;j<9;j++) inBuf[i][j]=tempEj]; //将temp中的内容复制到inBuf中

解析 题主要考查数组中数据按指定要求重新排序的方法。
    从左边开始扫描时。不管是比第一个大的还是小的。都以第一个元素所在的位置来定起始位置,由于第一个元素的位置不确定,所以比第一个元素大的和小的元素的起始存放位1也不能确定。若从右侧开始扫描,则比第一个元素大的和小的元素的起始存放位置是数组的两侧,起始位置固定。
    程序步骤:①从右侧开始查找,如果当前元素比第一个元素大,则从数组temp的右侧起存放,反之,则从数组temp的左侧起存放。最后将第一个元素存放在剩下的位置。②将letup中的值赋给数组inBuf。
转载请注明原文地址:https://kaotiyun.com/show/jgOZ777K
0

最新回复(0)