西安交通大学2021年12月《程序设计基础》期末考核试题库及答案参考91

已定义以下函数

int fun(int *p)

{ return *p;)

fun 函数返回值是

A) 不确定的值

B) 一个整数

C) 形参 P 中存放的值

D) 形参 P 的地址值


正确答案:B
(23)B) 解析 : 返回值为指针变量指向的数据 , 该数据已被定义为整型。


● 函数fun1()、fun2()的定义如下所示,已知调用fun1 时传递给形参x的值是-5,若以引用调用(call by reference)的方式调用fun2,则函数fun1的返回值为 (33) ;若以值调用(call by value)的方式调用fun2,则函数fun1的返回值为 (34) 。

fun1(int x) fun2(int x) int a=x-1;

x = fun2(a);

return a-x; x=x+10;

return 3*x;

(33)A. -18 B. -11 C. -8 D. 0

(34)A. -18 B. -11 C. -8 D. 0


答案:A、C

值调用时,原传递参数值不会被修改!

如果是值传递:那么对于fun1中:a=x-1=-6;x=fun2(a)=fun2(-6);那么在fun2中,x=x+10=-6+10=4,返回3*x=12;这时原参数a=-6并不会被修改,也就是说a的值还是-6;这时,a-x=-6-12=-18;

对于引用调用,在fun2中执行语句x=x+10=-6+10=4时,这时a的值也被修改,变为4,所以返回到fun1中执行a-x时应该为a-x=4-12=-8。

 


已定义以下函数: int fun(int*p) {return*P;) fun函数返回值是( )。

A.不确定的值

B.一个整数

C.形参P中存放的值

D.形参P的地址值


正确答案:B
解析:p中存放的是地址值,但是*p间接引用了p指向的整数值。因此返回一个整数。


下列函数原型声明中错误的是

A.void Fun(int x=O,int y=0);

B.void Fun(int x,int y);

C.void Fun(int x,int y=0);

D.void Fun(int x=0,int y);


正确答案:D
解析:本题考核函数的定义方法和调用方法。说明一个函数的格式为:函数类型>函数名>,(下函数参数表>);在C++中,允许在函数的说明或定义时给一个或多个参数指定默认值。但一旦为某个给定参数定义了缺省值,必须为后继的所有参数也定义缺省值。由此可知,选项D是错误的。


已定义下列函数:

int fun(int*p)

{return*p;)

fun函数返回值是( )。

A.不确定的值

B.一个整数

C.形参p中存放的值

D.形参p的地址值


正确答案:B
解析:由函数int fun(int *p){return *p;}的定义可知,返回值为整型指针变量p所指向的数据。


西安交通大学2021年12月程序设计基础期末考核试题库及答案参考1. 已知int *p; fun(p);,其中,函数fun没有返回值,且其形参定义为引用调用方式,则下列给出的fun函数原型中正确的是( )。A.void fun(int a);B.void fun(int *&a);C.void fun(int &a);D.void fun(int &*a);参考答案:B2. 下列哪一个是合法的标识符:( )A.12classB.+viodC.-5D._black参考答案:D3. 在二叉树的第i层上至多有( )个结点(i1)。A.2的i次方减1B.2的i-1次方C.2的i次方加+1D.2的i+1次方参考答案:B4. 在一个单链表中,若p所指结点不是最后结点,在p之后插入s所指结点,则执行( )。A.s-next=p;p-next=s;B.s-next=p-next;p-next=s;C.s-next=p-next;p=s;D.p-next=s;s-next=p;参考答案:A5. XCHG指令中操作数只可以是字而不可以是字节。( )A.正确B.错误参考答案:B6. 以下哪项属于计算机低级语言( )A.汇编语言B.机器语言C.JAVAD.C+参考答案:AB7. 所有系统功能的调用格式都是一样的,一般按四步走( )A.用INT 21H指令执行功能调用B.根据出口参数分析功能调用执行情况C.在指定寄存器中设置入口参数D.在AH寄存器中设置系统功能调用号参考答案:ABCD8. 在下述结论中,正确的是( ) 只有一个结点的二叉树的度为0; 二叉树的度为2; 二叉树的左右子树可任意交换; 深度为K的完全二叉树的结点个数小于或等于深度相同的满二叉树。A.B.C.D.参考答案:D9. 当使用ifstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为( )。A.ios:inB.ios:outC.ios:trunkD.ios:binary参考答案:A10. 下面哪个方法与applet的显示无关?( )A.update( )B.draw( )C.repaint( )D.paint( )参考答案:B11. C语言允许函数值类型的缺省定义,此时该函数值隐含的类型是( )。A.floatB.intC.longD.double参考答案:B12. 下面程序段的运行结果是( )。char a7=“abcdef”; char b4=“ABC”; strcpy(a,b); printf(“%c”,a5)A.空格B.0C.eD.f参考答案:D13. 若要使指针变量p指向一个动态开辟的字符型存储单元,则空中应选择填入的是( )。char *p; p= malloc(sizeof(char)A.charB.char*C.(*char)D.(char*)参考答案:D14. 需要独立运行的程序,一个程序只有( )个起始点A.一B.二C.三D.四参考答案:A15. 以下程序的输出结果是( )。main( ) int a=0,b=1,c=0,d=20; if(a) d=d-10; else if(!b) if(!c) d=15; else d=25; printf(“d=%dn”,d);A.d=10B.d=15C.d=20D.d=25参考答案:C16. 有符号数用1表示正数,负数用1表示。( )A.错误B.正确参考答案:A17. 计算机系统分为硬件和( )两部分A.软件B.中间件C.部件D.以上都不正确参考答案:A18. 子程序包含有子程序的调用就是( )A.子程序的递归B.子程序的重入C.子程序的嵌套D.子程序说明参考答案:C19. 若执行下述程序时从键盘输入3 4,则输出结果是( )。include main( ) int a,b,s; scanf(“%d%d”,&a,&b); s=a; if (aA.186B.256C.324D.400参考答案:B20. 若使用一维数组名作函数实参,则以下正确的说法是( )。A.必须在主调函数中说明此数组的大小B.实参数组类型与形参数组类型可以不匹配C.在被调函数中,不需要考虑形参数组的大小D.实参数组名与形参数组名必须一致参考答案:A21. 下列哪一项不属于变量的组成部分:( )A.变量名B.变量属性C.变量初值D.变量大小参考答案:D22. 完成一条指令的功能可以分成哪两个阶段( )A.取指B.执行C.保存D.删除参考答案:AB23. 调用函数时传入的实参个数可以多于形参个数。( )A.正确B.错误参考答案:B24. 堆栈的两个操作指令为( )A.SUBB.PUSHC.ADDD.POP参考答案:BD25. 设“var a=true,b=0;”,则执行完比较运算ab后,结果为假。( )A.错误B.正确参考答案:A26. 下列关于基本数据类型的取值范围描述中,正确的是:( )A.byte类型范围是-128128B.boolean类型范围是真或者假C.char类型范围是065536D.short类型范围是-3276732767参考答案:B27. 若二维数组a有m列,则计算任一元素aij在数组中位置的公式为( )。(假设a00位于数组的第一个位置上。)A.i*m+jB.j*m+iC.i*m+j-1D.i*m+j+1参考答案:D28. 下面属于高级语言的有( )A.特殊语言B.汇编语言C.JAVAD.C+参考答案:CD29. 对DIV指令,除数为0,或者在字节除时商超过8位,或者在字除时商超过16位,则发生除法溢出。( )A.正确B.错误参考答案:A30. 任何一个串操作指令都可以在前面加一个重复前缀,重复前缀有哪三种( )A.RPEB.REPZC.REPNZD.REP参考答案:BCD31. 8086的中断分为( )两类A.外部中断B.内部中断C.程序中断D.子程序中断参考答案:AB32. 对象的核心概念就是通常所说的( )。A.继承B.封装C.传递D.多态参考答案:ABD33. 系统提供的默认拷贝构造函数实现的是“浅拷贝”,下列关于浅拷贝的说法中正确的是( )。A.当一个类中有指针成员变量时,浅拷贝有可能会导致一片内存被重复释放B.当一个类中有指针成员变量时,浅拷贝有可能导致一个对象中保存的数据不正确C.如果一个类中只有int型和double型的成员变量,则浅拷贝不会出现任何问题D.如果一个类中有一个成员变量是char型数组,则使用浅拷贝会存在问题参考答案:ABC34. 以下能正确读入字符串的程序段是( )。A.char *p; scanf(“%s”,p)B.char str10; scanf(“%s”,&str)C.char str10,*p; p=str; scanf(“%s”,p)D.char str10,*p=str; scanf(“%s”,p1)参考答案:C35. 对于一个具有n个顶点的无向连通图,它包含的连通分量的个数为( )。A.0B.1C.nD.n+1参考答案:B36. 在完整段定义后的四个关键字是( )A.段定位属性B.段组合属性C.段字属性D.段类别属性参考答案:ABCD37. 页面上显示一个超链接的字符串,当鼠标经过或者停留在这个字符串上,将触发。( )A.错误B.正确参考答案:A38. 堆栈和队列一样,先进先出。( )A.错误B.正确参考答案:A39. 6位二进制数能表示的最大十进制数是( )。A.32B.31C.64D.63参考答案:D40. 在C+中,与cin一起使用的提取运算符是( )。A.B.C.D.参考答案:D41. 静态局部变量只可以在定义它的函数(或复合语句)中使用。( )A.正确B.错误参考答案:A42. 类成员的三种访问控制属性是public、private和friend。( )A.正确B.错误参考答案:B43. 已知char str20=mybook,*p=str+2;则以下各选项中输出结果为b的是( )。A.coutp;B.coutp0;C.coutstr;D.coutstr+2;参考答案:B44. 浏览器可以监听事件,在事件发生时做出反应,进行相应的处理工作。( )A.错误B.正确参考答案:B45. 在C语言中,错误的int类型的常数是( )。A.32768B.0C.37D.0xAF参考答案:A46. int *p1, p2;则表示定义了两个指针变量p1和p2。( )A.正确B.错误参考答案:B47. CPU由哪三部分组成( )A.运算器B.控制器C.逻辑器D.寄存器参考答案:ABD48. 已知f是以二进制读写方式打开的文件流对象,且有int型变量a,则下列选项中能正确进行文件读写操作的语句包括( )。A.f.write(char*)a,sizeof(a);B.f.write(char*)&a,sizeof(a);C.f.read(char*)a,sizeof(a);D.f.read(char*)&a,sizeof(a);参考答案:BD49. C+中的任何一个程序必须有且只能有一个主函数main。( )A.正确B.错误参考答案:A50. 8086的寄存器有4个通用寄存器。( )A.错误B.正确参考答案:A51. 汇编语言中子程序间和模块间利用堆栈都是一个重要的和主要的参数传递方式。( )A.正确B.错误参考答案:A52. 以下各选项中,非法的变量名是( )。A.No_1B.No123C.2nameD.sumOfStudent参考答案:C53. 在8086命令中CS是要执行的下一条指令的偏移地址。( )A.错误B.正确参考答案


若有以下调用语句,则不正确的fun函数的首部是

main()

{ …

int a[50],n;

fun(n, &a[9]);

}

A.void fun(int m, int x[])

B.void fun(int s, int h[41])

C.void fun(int p, int *s)

D.void fun(int n, int a)


正确答案:D


已知“int*p;fun(p);”,其中,函数fun没有返回值,且其形参定义为引用调用方式,则下列给出的fun函数原型中正确的是()。

A.voidfun(inta[]);

B.voidfun(int*&a);

C.voidfun(int&a[]);

D.voidfun(int&*a);


正确答案:B


已知函数fun的原型是“void fun(int *x, int &y);”,变量v1、v2的定义是“int v1, v2; ”,则下列选项中,对函数fun调用正确的是( )。

A. fun(v1,&v2);

B.fun(v1,v2);

C.fun(&v1,v2);

D.fun(&v1,&v2);


参考答案:D


若有以下调用语句,则不正确的fun函数的首部是______。 main() { …… int a[50],n; fun(n,&a[9]); …… }

A.void fun(int m, int x[])

B.void fun(kit s, kit h[41])

C.void fun(kit p, kit *s)

D.void fun(int n, int a)


正确答案:D


已定义以下函数: int fun(int *p) { return *p;} 函数fun的返回值是( )。

A.不确定的值

B.一个整数

C.形参p中存放的值

D.形参p的地址值


正确答案:B
解析:函数值的类型应当是在定义函数时指定的。在定义函数时对函数值说明的类型一般和return语句中的表达式类型一致,即函数类型决定返回值的类型。此题中定义函数类型为int型,故函数返回值也为整型。


相关考题:

考题 已定义下列函数: int fun(int *p) {return *p;) fun函数返回值是( )。A.不确定的值B.一个整数C.形参p中存放的值D.形参p的地址值 正确答案:B解析:由函数int fun(int *p){return *p;}的定义可知,返回值为整型指针变量p所指向的数据。

考题 下面的说明中,正确的函数定义是( )。A.void fun(void)B.void fun(void){}C.fun(int s){}D.fun(int s){return s+1;} 正确答案:D

考题 已定义以下函数 int fun(int *p) {return *p;} fun函数返回值是______。A.不确定的值B.—个整数C.形参p中存放的值D.形参p的地址值 正确答案:B解析:函数值的类型应当是庄定义函数时指定的。在定义函数时对函数值说明的类型—般和return语句中的表达式类型—致,即函数类型决定返回值的类型。此题中定义函数类型为int型,故函数返回值也为整型。

考题 已定义以下函数      Int fun(int *p)      {return *p;}  则fun函数返回值是()A、不确定的值B、一个整数C、形参P中存放的值D、形参P的地址值正确答案:B

考题 若有以下调用语句,则不正确的fun函数的首部是( )。 main() { int a[50],n; fun(n,a[9]); ┆ }A.void fun(int m,int x[])B.void fun(int s,int h[41])C.void fun(int p,int *s)D.void fun(int n,int a) 正确答案:D解析:根据main函数中的fun函数调用语句可知,fun函数的第二个参数是一个地址值,对应的形参可以是指针变量或一维数组,所以D)不正确。

考题 下列函数原型声明中错误的是______。A.void Fun (int x=O,int y=O);B.void Fun(int x,int y);C.void Fun(int x,int y=0);D.void Fun(int x=0,int y); 正确答案:D解析:C++中函数的声明,如果第一个参数有默认值,那么第二个参数也应该有默认值,否则出错。

考题 单选题已定义以下函数      Int fun(int *p)      {return *p;}  则fun函数返回值是()A不确定的值B一个整数C形参P中存放的值D形参P的地址值正确答案: C解析: 暂无解析

考题 若有以下调用语句,则不正确的fun()函数的首部是______。A.void fun(int m,int x[]B.void fun (int s,int h[41]C.void fun(int p,int*s)D.void fun (int n,int a) main() {int a[50],n; … fun (n,a[9]); … } 正确答案:D

考题 设有以下函数:void fun(int n,char*$s){……}则下面对函数指针的定义和赋值均正确的是A.void(*pf)( );pf=fun;B.void*Pf( );pf=fun;C.void*pf( ); *pf=fun;D.void(*pf)(int,char);nf=fun; 正确答案:A解析:函数指针的定义形式是:数据类型标识符(*指针变量名)()。void(*pf)()定义了一个没有返回值的函数指针pf,在给函数指针变量赋值时,只需给出函数名而不必给出参数。所以给pf赋值时,只把函数名fun赋给pf即可。所以正确答案为选项A)。

考题 下面正确的函数定义形式为( )。A.void fun();{}B.void fun(int x;int y) {}C.void fun() {}D.void fun(int x,y) {} 正确答案:C解析:选项A函数声明与函数体之间没有分号;选项D形参之间用逗号隔开;选项D形参y没有类型。