编写一函数ins_sort,函数功能是在一个已排好序的敷组中插入一个数据使之保持有序。要求在主函数main 中输入N-1(设N=10)个有序数据(如升序)和一个要新增的数据,并输出处理后的数据。      例如:输入有序数列1 2 3 5 6 7 8 9 10     输入新增数据4  则处理后数据1 2 3 4 5 6 7 8 9 10

题目

编写一函数ins_sort,函数功能是在一个已排好序的敷组中插入一个数据使之保持有序。要求在主函数main 中输入N-1(设N=10)个有序数据(如升序)和一个要新增的数据,并输出处理后的数据。      例如:输入有序数列1 2 3 5 6 7 8 9 10     输入新增数据4  则处理后数据1 2 3 4 5 6 7 8 9 10

如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

下列程序中函数sort()的功能是对数组a中的数据进行由大到小的排序。includevoid sort(i

下列程序中函数sort()的功能是对数组a中的数据进行由大到小的排序。

#include<stdio.h>

void sort(inta[],int n)

{int i,j,t;

for(i=0;i<n-1;i++)

for(j=i+1;<n;j++)

if(a[i]<a[j])

{t=a[i];a[i]=a[j];a[j]=t;

}

}

main()

{int a[10]={1,2,3,4,5,6,7,8,9,10},i;

sort(&a[1],7);

for(i=0;i<10;i++)printf("

A.1,2,3,4,5,6,7,8,9,10,

B.10,9,8,7,6,5,4,3,2,1,

C.1,8,7,6,5,4,3,2,9,10,

D.1,2,10,9,8,7,6,5,4,3,


正确答案:C
解析: 本程序中的函数sort(int a[],int n)实现的功能是将数组a中的前n个数进行从大到小排序。 sort(&a[1],7)是将数组中从a[1]到a[7]这7个数进行从大到小排序,其他数不变。

第2题:

下列程序的功能是:将一正整数序列{K1,K2,…,K91重新排成一个新的序列。新序列中,比K1小的数都在K1的左面(后续的再向左存放),比KI大的数都在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

jsValue(int a[lO] [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,62,4,7}

{2,6,1,9,8,35,7,4}

{5,3,7,9,1,82,6,4}

{7,1,3,2,5,89,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 ail0] [9])

{

FILE *fp;

int i,j;

fp=fopen("outg0.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[10][9]) { int valueijkhum; for(i=0;i10;i++) { value=a[i][0]); /*将一行的第一个元素赋给value*/ for{j=0;j9;j++) if(a[i][j]value) /*若后面的数中有比第土个数据小的数*/ { num=a[i] [j]; /*则把这个数取出赋给num*/ for (k=j;k>0;k--) /*将这个数据左侧的数依次向右移动*/ { a[i][k]=a[i][k-1]; } a[i][0]=num; /*再将这个数放在最左侧*/ } } }
void jsValue(int a[10][9]) { int value,i,j,k,hum; for(i=0;i10;i++) { value=a[i][0]); /*将一行的第一个元素赋给value*/ for{j=0;j9;j++) if(a[i][j]value) /*若后面的数中有比第土个数据小的数*/ { num=a[i] [j]; /*则把这个数取出,赋给num*/ for (k=j;k>0;k--) /*将这个数据左侧的数依次向右移动*/ { a[i][k]=a[i][k-1]; } a[i][0]=num; /*再将这个数放在最左侧*/ } } } 解析:本题考查的知识点如下:
(1)二维数组的访问和数组元素的移动。
(2)循环结构和判断结构的嵌套使用。
数据存放在一个二维数组中,每一行数为数据处理的基本单位。将第1个数取出依次和后面的数比较,若后面的数中有比第1个数据小的数,则将这个数取出。将这个数据左侧的数依次向右移动(包括第1个数),
然后将这个数放在最左侧。扫描完一行后,比第1个数小的数就都在第1个数的左侧,而比它大的就在它的右侧。对数的扫描和移动均可以使用循环实现。再使用循环实现对每一行数据的访问。

第3题:

请补充函数fun(),该函数的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。

例如,若一维数组中的数据是:1,1,1,2,2,2,3, 4,4,5,5,6,6,7,7,8,9,9,10,10。

删除后,数组中的内容应该是:1,2,3,4,5,6,7, 8,9,10。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。

试题程序:

include<stdio.h>

define N 80

int fun(int a[],int n)

{

int i, t,j=0;

t=a[0];

for(i=1;i<n;i++)

if(【 】)

;

else

{

【 】;

t=a[i];

}

a[j++]=t;

return j;

}

main()

{

int a[N]={1,1,2,2,2,3,4,4,5,5,6,6,6,

7,7,8,9,9,10,10},i,n=20;

printf("The original data:\n");

for(i=0; i<n; i++)

printf("%4d",a[i]);

n=fun(a,n);

printf("\n\nThe data after deleted ;

\n");

for (i=0;i<n;i++)

printf("%4d",a[i]);

printf("\n");

}


正确答案:t==a[i] a[j++]=t
t==a[i] a[j++]=t 解析:第一空:本题的特点是,数组中的数已按从小到大的顺序排列,所以如果有相同的数,也是连在一起,而不是分散的。将一个数与它后面的数比较,如果相同,则什么都不做。第二空:如果不相同,则将这个数记录下来,仍然存在数组a中,此时并不会覆盖还没有进行处理的数。注意,数组下标j自加1。

第4题:

下列程序的功能是:将一正整数序列{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[10][9]) { int valueijknum; for(i=0;i10;i++) { value=a[i][0]; /*将一行的第一个元素赋给value*/ for(j=0;j9;j++) if(a[i][j]value) /*若后面的数中有比第1个数据小的数*/ { num=a[i][j]; /*则把这个数取出赋给num*/ for(k=j;k>0;k--) /*将这个数据左侧的数依次向右移动*/ { a[i][k]=a[i][k-1]; } a[i][0]=num; /*再将这个数放在最左侧*/ } } } [解析] 本题考查的知识点如下: (1)二维数组的访问和数组元素的移动。 (2)循环结构和判断结构的嵌套使用。 数据存放在一个二维数组中每一行数为数据处理的基本单位。将第1个数取出依次和后面的数比较若后面的数中有比第1个数据小的数则将这个数取出。将这个数据左侧的数依次向右移动(包括第1个数)然后将这个数放在最左侧。扫描完一行后比第1个数小的数就都在第1个数的左侧而比它大的就在它的右侧。对数的扫描和移动均可以使用循环实现。再使用循环实现对每一行数据的访问。
void jsValue(int a[10][9]) { int value,i,j,k,num; for(i=0;i10;i++) { value=a[i][0]; /*将一行的第一个元素赋给value*/ for(j=0;j9;j++) if(a[i][j]value) /*若后面的数中有比第1个数据小的数*/ { num=a[i][j]; /*则把这个数取出,赋给num*/ for(k=j;k>0;k--) /*将这个数据左侧的数依次向右移动*/ { a[i][k]=a[i][k-1]; } a[i][0]=num; /*再将这个数放在最左侧*/ } } } [解析] 本题考查的知识点如下: (1)二维数组的访问和数组元素的移动。 (2)循环结构和判断结构的嵌套使用。 数据存放在一个二维数组中,每一行数为数据处理的基本单位。将第1个数取出依次和后面的数比较,若后面的数中有比第1个数据小的数,则将这个数取出。将这个数据左侧的数依次向右移动(包括第1个数),然后将这个数放在最左侧。扫描完一行后,比第1个数小的数就都在第1个数的左侧,而比它大的就在它的右侧。对数的扫描和移动均可以使用循环实现。再使用循环实现对每一行数据的访问。

第5题:

以下程序中,函数sort的功能是对a数组中的数据进行由大到小的排序。void sort(int a[],int n){ int i,j,t; for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(a[i]<a[j]) { t=a[i];a[i]=a[j];a[j]=t;}}main(){ int aa[10]={1,2,3,4,5,6,7,8,9,10},i; sort(&aa[3],5); for(i=0;i<10;i++)printf("%d,",aa[i]); printf("\n");}程序运行后的输出结果是A.1,2,3,4,5,6,7,8,9,10B.10,9,8,7,6,5,4,3,2,1C.1,2,3,8,7,6,5,4,9,10D.1,2,10,9,8,7,6,5,4,3


正确答案:C
本题题目给出了函数sort的功能是对a数组中的数据进行由大到小的排序。在函数sort中,带有两个形参,其中一个为要操作的数组a,在函数体中,通过双重循环对a数组元素进行排序。
在主函数中,定义了一个数字aa,并赋了初值,然后调用函数sort,其两个参数分别为&aa[3]和5,其中&aa[3]表示从数组aa的第四个元素作为首地址,即使形参数组a的首地址等于实参数组aa第四个元素的地址,从数组aa的第四个元素开始操作,即a[0]=aa[3]=4, a[1]=aa[4]=5,…,a[4]=aa[7]=8。
题目告诉我们,sort的功能是对a数组中的数据进行由大到小的排序。那么对4,5,6,7,8排序的结果是8,7,6,5,4。调用函数结束后,数组aa中的值是1,2,3,8,7,6,5,4,9,10。然后程序通过一个循环输出该数组中的元素。因此,最后程序的输出结果为1,2,3,8,7,6,5,4,9,10。

第6题:

以下程序的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。

例如,若一维数组中的数据是:

2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10

删除后,数组中的内容应该是:

2 3 4 5 6 7 8 9 10。

请填空。

#include

#define N 80

int fun(int a[], int n)

{ int i,j=1;

for(i=1;i

if(a[j-1]【19】a[i])

a[j++]=a[i];

【20】;

}

main()

{ int a[N]={ 2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10}, i, n=19;

printf("The original data :\n");

for(i=0; i

for(i=0; i

}


正确答案:
!=;return j

第7题:

以下程序中函数sort的功能是对a所指数组中的数据进行由大到小的排序: float sort(int a[], int n) { int i, j, t; for(i=0; i<n-1; i++) for(j=i+1; j<n; j++) if(a[i]<a[j]){t=a[i]; a[i]=a[j]; a[j]=t; } } main() { int aa[10]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10), i; sort(&aa[3], 5); for(i=0; i<10; i++)printf("% d", aa[i]); printf ("\n"); } 程序运行后的输出结果是______。

A.1, 2, 3, 4, 5, 6, 7, 8, 9, 10

B.10, 9, 8, 7, 6, 5, 4, 3, 2, 1

C.1, 2, 3, 8, 7, 6, 5, 4, 9, 10

D.1, 2, 10, 9, 8, 7, 6, 5, 4, 3


正确答案:C
解析:本题考查数组名作为函数形参的函数调用问题。数组名作函数形参是按地址传递,形参的改变可以传回实参。sort函数的两个形参中一个是数组名,sort函数的功能是对数组元素进行由大到小的排序。主函数调用sort函数时,实参为aa[3]元素的地址和整数5,即sort函数将对数组aa中的元素aa[3]、aa[4]、aa[5]、aa[6]、aa[7]5个元素的值进行由大到小的排序,排序后aa[3]=8、aa[4]=7、aa[5]=6、aa[6]=5、aa [5]=4,而数组aa中其余元素的值不变,因此结果是C。

第8题:

下列程序中函数sort()的功能是对数组a中的数据进行由大到小的排序。 include voidsort(

下列程序中函数sort()的功能是对数组a中的数据进行由大到小的排序。

#include<stdio.h>

voidsort(int a[],int n)

{ int i,j,t;

for(i=0;i<n-1;i++)

for(j=i+1;j<n;j++)

if(a[i]<a[j])

{ t=a[i];a[i]=a[j];a[j]=t;

}

}

main()

{ int a [10]={1,2,3,4,5,6,7,8,9,10},i;

sort(&a[1],7) ;

for(i:0;i<10;i++)printf("%d,",a[i]);

}

程序运行后的输出结果是( )。

A.1,2,3,4,5,6,7,8,9,10,

B.10,9,8,7,6,5,4,3,2,1,

C.1,8,7,6,5,4,3,2,9,10,

D.1,2,10,9,8,7,6,5,4,3,


正确答案:C
解析:本程序中的函数sort(int a[],int n)实现的功能是将数组a中的前n个数进行从大到小排序。 sort(&a[1],7)是将数组中从a[1]到a[7]这7个数进行从大到小排序,其他数不变。

第9题:

以下程序中函数sort的功能是对数组a中的数据进行由大到小的排序:includevoidsort(int

以下程序中函数sort的功能是对数组a中的数据进行由大到小的排序: #include<stdio.h> voidsort(int a[],int n) { int i,j,t; for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(a[i]<a[j]) {t=a[i];a[i]=a[j];a[j]=t;} } main() { int aa[]={1,2,3,4,5,6,7,8,9,10},i; son(&aa[3],5); for(i=0;i<10;i++) printf("%d,",aa[i]); printf("\n"); } 程序运行后的输出结果是( )。

A.1,2,3,4,5,6,7,8,9,10,

B.10,9,8,7,6,5,4,3,2,1,

C.1,2,3;8,7,6,5,4,9,10,

D.1,2,10,9,8,7,6,5,4,3,


正确答案:C
解析:在main函数中调用sort函数时,实参&aa[3]把数组元素aa[3]的首地址传给形参数组a,使aa[3]与a[0]相对应。sort函数将从aa[3]开始的连续5个数进行了从大到小的排序,其他数组元素不变。

第10题:

以下程序的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。例如,若一维数组中的数据是:2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10删除后,数组中的内容应该是:2 3 4 5 6 7 8 9 10。请填空。#include <stdio.h>#define N 80int fun(int a[], int n){ int i,j=1; for(i=1;i<n;i++) if(a[j-1]a[i]) a[j++]=a[i]; ;}main(){ int a[N]={ 2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10}, i, n=19; printf("The original data :\n"); for(i=0; i<n; i++) printf("%3d",a[i]); n=fun(a,n); printf("\nThe data after deleted :\n"); for(i=0; i<n; i++) printf("%3d",a[i]); printf("\n");}


正确答案:<,return j
在本题中,程序的功能是删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。
在主函数中,首先定义了一个一维数组,并进行了初始化操作,然后用一个循环输出该数组,接着调用函数fun去掉数组中重复的元素,最后输出。按照题目要求,我们可以知道函数fun的作用是去掉已排好序数组中的重复元素。
fun函数带有两个形参,从主函数中我们可以看出,这两个形参分别是数组的首地址和数组的长度。在函数体中,首先定义两个整型变量i和j,其中j被初始化为1,而i作为循环变量,然后执行for循环,循环的结束条件是循环变量i小于数组的长度,从题目要求和程序来分析,该循环的作用是删除数组中重复的元素,在循环体中,首先执行条件判断语句if,第13空就是该语句的判断条件表达式,如果条件为真,执行a[j++]=a[i];,从程序中我们推断出a[j++]是用来存储新的数组,而将a[i];赋值给a[j++]时,能确定a[i]是出现一个新数值的时候,即一个更大的数值,那么此时a[i]应该大于a[j-1],因此第13空应该填<运算符。
第14空是在循环结束后的一条语句,从主函数中我们可以看出,函数应该有个返回值,且返回值作为输出数组元素个数的依据,由此我们可以推断出在14空处应该返回新数组的长度。返回的应该是变量j的当前值,因此,第14空的答案是return j。本题的答案应该分别是<和return j

更多相关问题