下列程序的功能是:将一正整数序列K1,K2,…,K9重新排成一个新的序列。新序列中,比K1小的数都在K1的左面(后续的再向左存放),比K1大的数都在K1的右面(后续的再向右存放),从K1向右扫描。要求编写函数jsValue( )实现此功能,最后调用函数writeDat( )把新序列输出到文件out90.dat中。
说明,在程序中已给出了10个序列,每个序列中有9个正整数,并存入数组a[10][9]中,分别求出这10个新序列。
例如,序列排序前 6,8,9,1,2,5,4,7,3
序列排序后 3,4,5,2,1,6,8,9,7
注意:部分源程序已给出。
请勿改动主函数main( )和写函数writeDat( )的内容。
试题程序:
#include<stdio.h> jsValue(int a[10][9])

main( )

int a[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,
;
int i,j;
jsValue (a);
for(i=0 ;i<10; i++)

for(j=0;j<9; j++)

printf("%d",a[i] [j]);
if(j<=7) printf(",");

printf ("/n");

writeDat (a);
writeDat(int a[10][9])

FILE *fp;
int i,j;
fp=fopen("out90.dat","w");
for(i=0;i<10;i++)

for(j=0;j<9;j++)

fprintf(fp,"%d",a[i][j]);
if(j<=7) fprintf(fp,",");

fprintf(fp,"/n");

fclose(fp);

 void jsValue(int a[A0][I])
{
int value,i,j,k,num;
for(i=0;i<A0;i++)
{
value=a[i][0]; /*将一行的第一个元素赋给value*/
for(j=0;j<I;j++)
if(a[i][j]<value) /*若后面的数中有比第A个数据小的数*/
{
num=a[i][j]; /*则把这个数取出,赋给num*/
for(k=j;k>0;k--) /*将这个数据左侧的数依次向右移动*/
{
a[i][k]=a[i][k-A];
}
a[i][0]=num; /*再将这个数放在最左侧*/
}
}
}

微信扫码获取答案解析
下载APP查看答案解析