sokaoti.com
东大19秋学期《高级语言程序设计基础》在线平时作业答案

有以下程序includevoid fun(int*a,intn)/*fun函数的功能是将a所指数组元素从大到小排

有以下程序 #include <stdio.h> void fun(int *a,int n)/*fun函数的功能是将a所指数组元素从大到小排序*/ {int t,i,j; for(i=0;i<n-1;j++) for(j=i+1;j<n;j++) if(a[i]<a[j]) { t=a[i];a[i]:a[j];a[j]=t;} } main() {int c[10]={1,2,3,4,5,6,7,8,9,0},i fun(c+4

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

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

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

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


正确答案:D
解析: 在本题中,主函数在调用fun()函数进行排序时,传递的参数是c+4和6,fun()函数实现的功能是将数组c的第5个元素开始的6个元素依次进行从大到小的顺序排列。排序之后,数组c的内容变为{1,2,3,4,9,8,7,6,5, 0}。


阅读下面程序,则程序段的功能是

#include "stdio.h"

main()

{ int c[]={23,1,56,234,7,0,34},i,j,t;

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

{ t=c[i];j=i-1;

while(j>=0 && t>c[j])

{ c[j+1]=c[j];j--;}

c[j+1]=t;}

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

printf("%d ",c[i]);

putchar(′\n′);}

A.对数组元素的升序排列

B.对数组元素的降序排列

C.对数组元素的倒序排列

D.对数组元素的随机排列


正确答案:B
解析:读懂两个循环的关系,是解这个题目的关键,本题的第一个for循环的作用是实现对数组元素的遍历,第二个循环的作用是排序。while(j>=0 && t>c[j]),这个语句是控制排序的关键语句,它即实现了比较两个元素大小的作用,又实现了元素向后移动的作用,不断地把大的数据向前移动,直到找到一个比它小的,或到数据的上界为止。


下列程序中函数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个数进行从大到小排序,其他数不变。


下列程序中函数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个数进行从大到小排序,其他数不变。


若有以下程序段:inta[]={4,0,2,3,1},i,j,t;for(i=1;i5;i++){t=a[i];j=i-1;while(j=0&&ta[j]){a[j+1]=a[j];j--;}a[j+1]=t;}......则该程序段的功能是()。

A.对数组a进行插入排序(升序)

B.对数组a进行插入排序(降序)

C.对数组a进行选择排序(升序)

D.对数组a进行选择排序(降序)


正确答案:B


19秋学期高级语言程序设计基础在线平时作业1试卷总分:100 得分:100一、单选题 (共 20 道试题,共 100 分)1.下面对typedef的叙述中不正确的是( )。A.用typedef可以定义新的数据类型B.用typedef只是将已存在的类型用一个新的标识符来代表C.用typedef不能定义变量名D.使用typedef有利于程序的通用和移植答案:A2.下面程序( )。(每行程序前的数字为行号) 1 main 2 3 float a10=0.0; 4 int i; 5 for(i=0;i3;i+) scanf(%d,&ai); 6 for(i=1;iaj) aj+1=aj;j-; aj+1=t; 则该程序段的功能是( )。A.对数组a进行插入排序(升序)B.对数组a进行插入排序(降序)C.对数组a进行选择排序(升序)D.对数组a进行选择排序(降序)答案:B16.若有说明:int a4=0,0;则下面不正确的叙述是( )。A.数组a中的每个元素都可得到初值0B.二维数组a的第1维大小为1C.因为二维数组a中第二维大小的值除以初值个数的商为1,故数组a的行数为1D.只有数组元素a00和a01可得到初值0,其余元素均得不到初值0答案:D17.C语言允许函数值类型的缺省定义,此时该函数值隐含的类型是( )。A.longB.intC.floatD.double答案:B18.若二维数组a有m列,则在aij前的元素个数为( )。A.j*m+iB.i*m+jC.i*m+j-1D.i*m+j+1答案:B19.下面程序的输出结果为( )。 main( ) int a=1,b=0; switch(a) case 1: switch (b) case 0: printf(*0*); break; case 1: printf(*1*); break; case 2: printf(*2*); break; A.*0*B.*0*2*C.*0*1*2*D.有语法错误答案:B20.C语言程序从main()函数开始执行,所以这个函数要写在( )。A.程序文件的最后B.程序文件的开始C.程序文件的任何位置D.它所调用的函数的前面答案:C

若有以下程序段: …… int a[]={4,0,2,3,1},i,j,t; for(i=1;i=0 && t>a[j]) {a[j+1]=a[j];j--;} a[j+1]=t; } …… 则该程序段的功能是( )。

A.对数组a进行插入排序(升序)

B.对数组a进行插入排序(降序)

C.对数组a进行选择排序(升序)

D.对数组a进行选择排序(降序)


参考答案B


以下程序段给数组所有的元素输入数据,请选择正确答案填入。()ineludemain(){int a[10],

以下程序段给数组所有的元素输入数据,请选择正确答案填入。( ) #inelude<stdio.h> main() {int a[10],i=0; while(i<10)scanf("%d",______); ┇ }

A.a+(i++)

B.&a[i+1]

C.a+i

D.&a[i++]


正确答案:D


以下程序中函数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。


插入排序算法的主要思想是:每次从未排序序列中取出一个数据,插入到己排序序列中的正确位置。InsertSort类的成员函数sort()实现了插入排序算法。请将画线处缺失的部分补充完整。

class InsertSort{

public:

InsertSort(int* a0,int n0):a(a0),n(n0){}//参数a0是某数组首地址,n是数组元素个数

void sort()

{//此函数假设已排序序列初始化状态只包含a[0],未排序序列初始为a[1]…a[n-1]

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

int t=a[i];

int j;

for(【 】;j>0;--j){

if(t>=a[j-1])break;

a[j]=a[j-1];}

a[j]==t;}}

protected:

int*a,n;//指针a用于存放数组首地址,n用于存放数组元素个数

};


正确答案:j=i
j=i 解析:本题考查的是插入排序算法。在sort()函数中是一个两重循环,外循环从1循环递增到n-1,即遍历未排序序列a[1]…a[n-1],取未排序序列中的第1个元素a[i] (i初值等于1)与已排序序列中的最后一个元素a[i-1]开始从后往前进行比较。内循环从后往前遍历已排序序列,使循环变量j的初值为i,则a[j-1]是已排序序列的最后一个元素。所以应该填j=i


以下程序段给数组所有的元素输入数据,请选择正确答案填入。include main(){int a[10],j

以下程序段给数组所有的元素输入数据,请选择正确答案填入。#include <stdio.h>main(){ int a[10],j=0; while(i<10)scanf("%d", ______ ); : :}

A.a+(i++)

B.&a[i+1]

C.a+ i

D.&a[++i]


正确答案:A
解析:a就是数组a的首地址,而a+x是数组中第x个元素的地址,所以在四个选项中,选项B和C只能输入一个数据,选项D不能给a[0]输入数据,只有A可以完成给数组所有的元素输入数据的任务。

更多 “东大19秋学期《高级语言程序设计基础》在线平时作业答案” 相关考题
考题 以下程序段给数组所有的元素输入数据,请选择正确答案填入。 include main() { int a[10以下程序段给数组所有的元素输入数据,请选择正确答案填入。 #include<stdio.h> main() { int a[10],i=0; while(i<10)scanf("%d",______); }A.a+(i++)B.&a[i+1]C.a+iD.&a[++i]正确答案:A解析:a就是数组a的首地址,而a+x是数组中第x个元素的地址,所以在四个选项中,选项B和C只能输入一个数据,选项D不能给a[0]输入数据,只有A可以完成给数组所有的元素输入数据的任务。

考题 请完成下列Java程序。程序的功能是对数组进行冒泡排序。冒泡排序算法的基本思路是把当前数据序列中的各相邻数据两两比较,发现任何一对数据间不符合升序或降序关系则立即调换它们的顺序,从而保证相邻数据间符合升序或降序的关系。本题是进行升序排列。例如数组a[]={30,1,-9,70,25}则排序后为{-9 1 25 30 70}。注意:请勿改动main()主方法和其他已有的语句内容,仅在下划线处填入适当的语句。源程序文件代码清单如下:public class BubbleSort{public static void main(String args[]){int i,j;int a[]={30,1,-9,70,25};int n=a.length;System.out.print("排序前数组为:");for(i=0;i<n;i++)System.out.print(a[i]+" ");System.out.println();for(i=1;i<n;i++)for(j=0;______j++)if(a[j]>a[j+1]){int temp=a[j];______;a[j+1]=temp;}System.out.print("排序后数组为:");for(i=0;i<n;i++)System.out.print(a[i]+" ");}}正确答案:jn-i;a[j]=a[i+1];jn-i;a[j]=a[i+1]; 解析:本题主要考查for循环语句的用法及数组的基本知识。解答本题的关键是能够熟练的掌握冒泡排序算法的思想及for循环语句的用法。排序是数据处理中经常使用的一种重要运算。常见排序分为:插入排序、选择排序、冒泡排序、基数排序等。在本题中,for(j=0; jn-i;j++)循环的功能是对上次排序的结果再进行排序,从中选择最小的数。a[j]=a[j+1]语句的功能是把最小的数放在数组的最前面。

考题 在scala语言中对于方法的定义以下说法正确的是()A、sorted将会把数组按升序进行重新排序B、sorted将会把数组按降序进行重新排序C、sortWith(_>_)表示降序排序D、sortWith(_<_)表示升序排序正确答案:A,B,C,D

考题 以下程序段给数组所有的元素输入数据,请选择正确答案填入。 include main() { int a[10以下程序段给数组所有的元素输入数据,请选择正确答案填入。 #include<stdio.h> main() { int a[10]=0; while(i<10)scan("%d"______); : : }A.a+(i++)B.&a[i+1]C.a+iD.&a[++i]正确答案:A解析: a就是数组a的首地址,而a+x是数组中第x个元素的地址,所以在四个选项中,选项B和C只能输入—个数据,选项D不能给a[0]输入数据,只有A可以完成给数组所有的元素输入数据的任务。

考题 单选题下面的C程序完成的功能是()。 #include #defineSIZE5 voidfunc(intdata[SIZE]); main() { inti,buf[SIZE]; printf(""Pleaseinput%dnumbers:"",SIZE); for(i=0;idata[j+1]) { d=data[j]; data[j]=data[j+1]; data[j+1]=d; } }A 对一维数组降序排序B 对一维数组升序排序C 对一维数组逆向排序D 对一维数组顺序排序正确答案:A解析:暂无解析

考题 以下程序中函数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个数进行了从大到小的排序,其他数组元素不变。

考题 有以下程序 include void fun(int *a,int n)/*fun函数的功能是将a所指数组元素从大到有以下程序#include <stdio.h>void fun(int *a,int n)/*fun函数的功能是将a所指数组元素从大到小排序*/{ int t,i,j;for(i=0;i<n-1;j++)for(j=i+1;j<n;j++)if(a[i]<a[j]) { t=a[i];a[i]=a[j];a[j]=t;}}main( ){ int c[10]={1,2,3,4,5,6,7,8,9,0},i;fun(c+4,6);for(i=0;i<10;i++) printf("%d,",c[i]);printf("\n");}程序的运行结果是A.1,2,3,4,5,6,7,8,9,0,B.0,9,8,7,6,5,1,2,3,4,C.0,9,8,7,6,5,4,3,2,1,D.1,2,3,4,9,8,7,6,5,0,正确答案:D解析:在本题中,主函数在调用fun( )函数进行排序时,传递的参数是c+4和6,fun( )函数实现的功能是将数组c的第5个元素开始的6个元素依次进行从大到小的顺序排列。排序之后,数组c的内容变为{1,2,3,4,9,8,7,6,5,0}。

考题 以下程序中,函数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。

考题 以下程序段给数组所有的元素输入数据,请选择正确答案填入:includemain(){ int a[10],i以下程序段给数组所有的元素输入数据,请选择正确答案填入: #include<stdio.h> main() { int a[10],i=0; while(i<10)scanf("%d",______); : : }A.a+(i++)B.&a[i+1)C.a+iD.&a[++i]正确答案:A解析:a就是数组a的首地址,而a+x是数组中第x个元素的地址,所以在四个选项中,选项B和C只能输入一个数据,选项D不能给a[0]输入数据,只有A可以完成给数组所有的元素输入数据的任务。

考题 下列程序中函数reverse()的功能是将a所指数组中的内容进行逆置。includevoidreverse(in下列程序中函数reverse()的功能是将a所指数组中的内容进行逆置。 #include<stdio.h> void reverse(int a[], int n) { int i,t; for(i=0;i<n/2;i++) { t=a[i];a[i]=a[a-1-i];a[n-1-i]=t;} main() { int b[10]={1,2,3,4,5,6,7,8,9,10};int i,s=0; reverse(b,10); for(i=0;i<3 ;i++) s+=b[i]; printf("%d\n",s); } 程序运行后的输出结果是( )。A.27B.6C.25D.30正确答案:A解析:本题考查函数调用时的参数传递.函数reverse将数组b进行了逆置,此时的b[10]=(10,9,8,7,6,5,4,3,2,1},后面for语句的功能是将b中的前3个数累加,将结果放在s中,最后将s输出,结果s=10+9+8=27。