百度首页 | 百度空间
 
查看文章
 
全国计算机等级考试上机题(南开100题)第90题
2007年09月21日 20:09

90:下列程序的功能是:将一正整数序列{K1,K2,...,K9}重新排列成一个新的序列。新序列中,比K1小的数都在K1的左面(后继的再向U左存放),比K1大的数都在K1的右面(后续的再向右存放),从k1想右扫描。要求编写函数jsvalue()实现此功能,最后调用writeDat()函数所新序列输出到文件out.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()的内容。
--------------------
jsValue(int a[10][9]) /*标准答案*/
{int value,I,j,k,num;
for(I=0;I<10;I++)
{value=a[I][0];
for(j=0;j<9;j++)
if (a[I][j]<value)
{num=a[I][j];
for(k=j;k>0;k--)
{num=a[I][j];
for(k=j;k>0;k--)
a[I][k]=a[I][k-1];
a[I][0]=num; }
}}
}
或者:
jsvalue(int a[10][9])
{ int i,j,k,m,c,b[10][9];
for(i=0;i<10;i++)
for(j=0;j<9;j++)
b[i][j]=a[i][j];
for(i=0;i<10;i++)
{ k=b[i][0];
for(j=1;j<9;j++)
if(b[i][j]<k)
{ c=b[i][j];
for(m=j;m>0;m--)
a[i][m]=a[i][m-1];
a[i][0]=c; } }
}
原程序如下:
#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("out.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);
system("pause");
}


类别:计算机考试(上机) | 添加到搜藏 | 浏览() | 评论 (0)
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码:
 

     

©2008 Baidu