sokaoti.com
西安交通大学22春《程序设计基础》在线作业一及答案参考4

当说明一个结构体变量时,系统分配它的内存是()

A、各成员所需内存容量的总和

B、结构体中第一个成员所需内存

C、各成员所需内存容量的最大值

D、结构体中最后一个成员所需内存


参考答案:A


当说明一个结构体变量时系统分配给它的内存是( )。

A.各成员所需要内存量的总和

B.结构中第一个成员所需的内存量

C.成员中占内存最大者所需的容量

D.结构中最后一个成员所需要的内存量


正确答案:A
解析: 本题主要考查结构体的内存使用:对结构体而言,结构中不同的成员分别使用不同的内存空间,一个结构所占内存空间的大小是结构中每个成员所占内存空间大小的总和,结构中每个成员相互独立。


执行下列程序后,输出的结果是()。includedefine S(X)X*Xvoid main(){int a=9,k=3,m=2;

执行下列程序后,输出的结果是( )。 #include<stdio.h> #define S(X)X*X void main() { int a=9,k=3,m=2; a/=S(k+m)/S(k+m); printf("%d",a); }

A.(*p) .data.a

B.(*p) .a;

C.p->data.a

D.p.data.a


正确答案:B
解析: 本题主要考查结构指针:p=&data,访问结构体的成员,可以通过结构变量访问,即data.a,也可以用等价的指针形式:(*p).a和p->a来访问结构体变量中的成员。


执行以下程序后,a,b的值分别为

main()

{ int a,b,k=4,m=6,*p1=&k,*p2=&m;

a=p1==&m;

b=(*p1)/(*p2)+7;

printf("a=%d\n",A.;

printf("b=%d\n",B.;

}

A.-1,5

B.1,6

C.0,7

D.4,10


正确答案:C


当说明一个结构体变量时系统分配给它的内存是

A.各成员所需内存量的总和

B.结构中第一个成员所需内存量

C.成员中占内存量最大者所需的容量

D.结构中最后一个成员所需内存量


正确答案:A


西安交通大学22春程序设计基础在线作业一及答案参考1. 已知一个顺序存储的线性表,设每个结点需占m个存储单元,若第一个结点的地址为add1,则第I个结点的地址为( )。A.add1+(I-1)*mB.add1+I*mC.add1-I*mD.add1+(I+1)*m参考答案:A2. 当定义一个结构体变量时系统分配给它的内存是( )。A.结构中第一个成员所需的内存量B.结构中最后一个成员所需的内存量C.结构体成员中占内存量最大者所需的容量D.结构体中各成员所需内存量的总和参考答案:D3. 以下程序执行后a的值为( )。main( ) int a,m=2,k=1,*p=&k; a=p!=&m; printf(“%dn”,a);A.-1B.0C.1D.2参考答案:C4. 已知char str20=mybook,*p=str+2;则以下各选项中输出结果为b的是( )。A.coutp;B.coutp0;C.coutstr;D.coutstr+2;参考答案:B5. 下面选项中,是类的成员函数为( )。A.构造函数B.析构函数C.友元函数D.缺省参数的构造函数参考答案:ABD6. 在JavaScript中只允许使用预定义的函数,而不能自定义函数。( )A.错误B.正确参考答案:A7. 循环结构的程序通常由( )三部分组成A.循环规则B.循环控制部分C.循环初始部分D.循环体部分参考答案:BCD8. 构造函数和析构函数都不能重载。( )A.正确B.错误参考答案:B9. 段存储器常见的有( )A.代码段B.堆栈段C.数据段D.附加段参考答案:ABCD10. 在C+中,不能被派生类继承的函数是( )。A.成员函数B.构造函数C.析构函数D.拷贝构造函数参考答案:BCD11. 使用if.else语句可以处理多选择问题,不会因为嵌套层次太多而导致程序的可读性下降,也不容易出错。( )A.正确B.错误参考答案:B12. 若有以下说明,并且0iA.*(a+i)B.ap-a+iC.p+iD.*(&ai)参考答案:C13. 在表示存储器的容量时,1MB的准确含义是( )字节。A.1000KB.1024*1024C.512*512D.2048*2048参考答案:B14. 下面关于自定义类的运算符重载的说法中,正确的是( )。A.赋值运算符和下标运算符只能重载为类的成员函数B.赋值运算符和下标运算符只能重载为类的友元函数C.赋值运算符重载时一般以引用方式返回*this,表示返回赋值运算符的左操作数D.使用重载的赋值运算符时,左操作数一定是自定义类型参考答案:ACD15. 线性表中的一个结点可以有多个前驱和多个后继。( )A.正确B.错误参考答案:B16. 已知“char *s=mybook;”,则strlen(s)的值为( )。A.4B.6C.7D.不确定参考答案:B17. 语句while (!y)中的表达式!y等价于( )。A.y=0B.y!=1C.y!=0D.y=1参考答案:A18. 在寄存器相对寻址或相对基址变址寻址方式中,位移量可以用符号表示。( )A.正确B.错误参考答案:A19. 在一个链接队列中,假设f和r分别是队头和队尾指针,则删除一个结点的运算时( )。A.r=f-next;B.r=r-next;C.f=f-next;D.f=r-next;参考答案:C20. 下面程序段的运行结果是( )。char a7=“abcdef”; char b4=“ABC”; strcpy(a,b); printf(“%c”,a5)A.空格B.0C.eD.f参考答案:D21. 下列哪一个不属于JAVA语言的数据类型:( )A.指针类型B.类C.数组D.浮点类型参考答案:A22. 下列描述正确的是( )。A.多态性是通过动态绑定实现的B.多态性是通过静态绑定实现的C.动态绑定是在程序执行时进行绑定D.静态绑定是在程序执行时进行绑定参考答案:AC23. 逻辑左移和算术左移是同一条指令的两种助记符形式。( )A.正确B.错误参考答案:A24. 已知double x=10,y=3; 则x%2的值为1。( )A.正确B.错误参考答案:B25. 若有说明:int a34; 则数组a中各元素( )。A.可在程序的运行阶段得到初值0B.可在程序的编译阶段得到初值0C.不能得到确定的初值D.可在程序的编译或运行阶段得到初值0参考答案:B26. 对以下说明语句的正确理解是( )。int a10=6,7,8,9,10A.将5个初值依次赋给a1至a5B.将5个初值依次赋给a0至a4C.将5个初值依次赋给a6至a10D.因为数组与初值的个数不相同,所以此语句不正确参考答案:B27. 下列程序中说明的公有成员是( ) class Location int X; public: void init(int initX,int initY); private: int Y; public: int GetX( ); int GetY( ); ;A.XB.init(int initX,int initY)C.GetX( ),GetY( )D.B和C都是参考答案:D28. 撤消对象时,系统自动调用( )函数。A.成员函数B.构造函数C.析构函数D.普通函数参考答案:C29. CPU由哪三部分组成( )A.运算器B.控制器C.逻辑器D.寄存器参考答案:ABD30. 为了能够识别字符串结束位置,C+系统会在字符串的末尾自动添加一个ASCII编码为00H的字符&39;0&39;(也称空字符),作为字符串的结束符,所以每个字符串的存储长度总是比其实际长度(字符个数)多1。( )A.正确B.错误参考答案:A31. 下列描述中,( )是抽象类的特性。A.可以说明虚函数B.可以定义友元函数C.可以进行构造函数重载D.不能说明其对象参考答案:D32. C语言程序从main( )函数开始执行,所以这个函数要写在( )。A.程序文件的开始B.程序文件的最后C.它所调用的函数的前面D.程序文件的任何位置参考答案:D33. 下面属于析构函数特征的是( )。A.析构函数可以重载B.对象销毁前会自动调用析构函数C.如果定义一个类时没有定义析构函数,则系统会提供一个默认析构函数( )D.析构函数的函数类型为void参考答案:BC34. 以下运算正确的程序段是( )。A.char str1=“ABCDE”, str2=“abcdef”; strcpy(str1, str2)B.char str10, *st=“abcde”; strcat(str, st)C.char *st1=“ABCDS”,*st2=“abcde”; strcat(st1,st2)D.char str10=“”, st=“abcde”; strcat(str, st)参考答案:D35. 任何一个串操作指令都可以在前面加一个重复前缀,重复前缀有哪三种( )A.RPEB.REPZC.REPNZD.REP参考答案:BCD36. 面向对象程序设计思想的主要特征中不包括( )。A.封装性B.多态性C.继承性D.功能分解,逐步求精参考答案:D37. 假设堆内存分配均成功,则下面程序段完全正确的是( )。A.int *p=new int(3);coutB.int *p=new int3;for(int i=0;iC.int *p=new int3;for(int i=0;iD.以上程序段均正确参考答案:A38. 在C语言中,错误的int类型的常数是( )。A.32768B.0C.37D.0xAF参考答案:A39. 段内转移是指在当前代码段32KB内转移。( )A.错误B.正确参考答案:A40. 下面中断属于内部中断的有( )A.除法错中断B.指令中断C.溢出中断D.可屏蔽中断参考答案:ABC41. 在数据结构中,从逻辑上可以把数据结构分成( )。A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.内部结构和外部结构参考答案:C42. 汇编语言的开发过程一般包括下面哪几个过程( )A.源文件的编辑B.目标文件的链接C.源程序的汇编D.可执行程序的调试参考答案:ABCD43. 下列虚基类的声明中正确的是( )。A.class virtual B:public AB.virtual class B:publicC.class B:public A virtualD.class B: virtual public A参考答案:D44. 假设A为抽象类,下列语句( )是错误的。A.A fun(int);B.A *p;C.int fun(A);D.A Obj;参考答案:ACD45. 映像文件是一种文本文件。( )A.正确B.错误参考答案:A46. 以下哪项属于计算机低级语言( )A.汇编语言B.机器语言C.JAVAD.C+参考答案:AB47. 页面上显示一个超链接的字符串,当鼠标经过或者停留在这个字符串上,将触发。( )A.错误B.正确参考答案:A48. 在计算机中,各种字符只能用若干位的二进制码的组合表示,这就称为( )A.十进制编码B.十六进制编码C.八进制编码D.二进制编码参考答案:D49. 可以定义函数指针变量指向函数的首地址,并使用函数指针变量代替函数名进行函数调用。( )A.正确B.错误参考答案:A50. 以下能对二维数组a进行正确初始化的语句是( )。A.int a2=1,0,1,5,2,3B.int a3=1,2,3,4,5,6C.int a24=1,2,3,4,5,6D.int a3=1,0,1,1,1参考答案:B51

现有如下程序段

#include "stdio.h"

int fun(int k,int *m)

{if(k%3)*m=k*k;

else *m=k/3;}

main()

{ int (*p)(int,int *),m;

p=fun;

(*p)(78, &m);

printf( "%d\n",m);}

则程序段的输出结果为

A.24

B.25

C.26

D.27


正确答案:C


当定义一个结构体变量时,系统分配给它的内存量是( )。

A.各成员所需内存量的总和

B.结构中第一个成员所需内存量

C.成员中占内存量最大的容量

D.结构中最后一个成员所需内存量


参考答案:A


以下程序运行后的输出结果【 】。

struct NODE

{int k;

struct NODE *link;

};

main()

{structNODEm[5],*p=m,*q=m+4;

int i=0;

while(p!=q){

p->k=++i;p++;

q->k=i++;q-;

}

q->k=i;

for(i=0;i<5;i++)printf("%d",m[i].k);

printf("\n");

}


正确答案:13431
13431 解析:程序执行过程如下:
p=m,q=m+4,条件9!=q成立,执行p->k=++i;,由于是“前加”,所以m[0].k=1,执行p++后p=m+1;执行q->k=i++;,由于是“后加”,所以m[4].k=1,然后使得i加上1,即i=2,q-后,q=m+3: p=m+1,q=m+3,条件p!=q成立,执行p->k=++i;,由于是“前加”,所以i=3,m[0].k=3,执行p++后p=m+2:执行 p->k=++i;,由于是“后加”,所以m[4].k=3,i=4,q-后,q=m+2; p=m+2,q=m+2,条件p!=q不成立,则执行p->k=i;即m[2].k-4;故输出的值为13431。


设有以下程序: include using namespace std; int main() {inta,b,k:4,m=6,*p1=&k

设有以下程序:

include<iostream>

using namespace std;

int main()

{

int a,b,k:4,m=6,*p1=&k,*p2=&m;

a=p1==&m;

b=(*p1)/(*p2)+7;

cout<<a<<b<<end1;

return 0;

}

执行该程序后,a的值为【 】,b的值为【 】。


正确答案:0 7
0 7 解析:本题考核的知识点是有关指针的运算。程序中定义了两个指针变量p1和p2,并通过赋初值让它们分别指向了变量k和m。语句“a=p1==&m;”中先执行关系运算符“p1==&m”,显然是0(假),然后把0赋值给a。接着执行语句“b=(*p1)/(*p2)+7”,此处*p1的值就是k的值4,*p2的值就是m的值6,即把“4/6+7”的结果赋给b,b的值为7。


以下程序运行后,输出结果是______。 func (int a,int b) { static int m=0,i=2; i+=m+1; m=i+a+b; return m; } main() { int k=4,m=1,p; p=func(k,m); printf("%d,",p); p=func(k,m);printf("%d\n",p); }

A.8, 15

B.8, 16

C.8, 17

D.8, 8


正确答案:C

更多 “西安交通大学22春《程序设计基础》在线作业一及答案参考4” 相关考题
考题 问答题对于以下程序,   main( )  { int a[5],*p;    int k;    for(k=0,p=a;k0;k--)     printf(“%d”,*(--p));  }  若输入为:1 2 3 4 5(注:表示回车),则输出结果是多少?正确答案:输出结果是54321解析:暂无解析

考题 单选题有以下程序:#include int fun(int a,int b){ static int m=0,i=2; i+=m+1; m=i+a+b; return m;}main(){ int k=4,m=1,p; p=fun(k,m); printf(%d,,p); p=fun(k,m); printf(%d,p);}程序运行后的输出结果是(  )。A 8,17B 8,16C 8,8D 8,20正确答案:D解析:static变量编译时,将其分配在内存的静态存储区中,在整个程序运行期间都不释放这些存储单元,即使退出函数,下次再进入该函数时,静态局部变量仍使用原来的存储单元,值是上一次函数调用结束时的值。程序执行过程为:调用函数,m=0,i=2,i=i+m+1=3,m=8,返回p=8,再次调用函数,m=8,i=3,i=i+m+1=12,m=12+4+1=17,返回p=17。答案选择A选项。

考题 有以下程序includemain(){int*p,j; p=NULL p=fun(); for(j=0;j有以下程序 #include<stdio.h> main() { int *p,j; p=NULL p=fun(); for(j=0;j<4;j+){printf("%d",*p);p++;} } int*fun() { int a[4],k; for(k=0;k<4;k++)a[k]=k; return(A) ; } 程序运行后的输出结果是( )A.程序有错不能运行B.输出4个NULLC.输出0 1 2 3D.输出1 1 1 1正确答案:A

考题 以下程序的输出结果是______。includemain(){int k=4,m=1,p; p=func(k,m); printf("%d,以下程序的输出结果是______。 #include<stdio.h> main() { int k=4,m=1,p; p=func(k,m); printf("%d,",p); p=func(k,m); printf("%d\n",p); } func(a,b) int a,b; { static int m=0,i=2; i+=m+1;m=i+a+b;return(m); }A.8,17B.8,16C.8,20D.8,8正确答案:A

考题 当说明一个结构体变量时,系统分配给它的内存是()。A、各成员所需要的内存量的总和B、结构中第一个成员所需要的内存量C、成员中占内存量最大者所需要的内存量D、结构中最后那个成员所需要的内存量正确答案:A

考题 以下程序的输出结果是()。 main() { int k=4,m=1,p; p=func(k,m); printf("%d,",p); p=func(k,m); printf("%d/n",p); } func(int a,int b) { static int m=0,i=2; i+=m+1; m=i+a+b; return(m); }A、8,17B、8,16C、8,20D、8,8正确答案:A

考题 定义一个结构体变量后,该变量所占内存大小是()A、结构体中第一个成员所需内存容量B、结构体中最后一个成员所需内存容量C、结构体中各成员所需内存容量总和D、结构体成员中占内存容量最大者所需的容量正确答案:C

考题 单选题定义一个结构体变量后,该变量所占内存大小是()A 结构体中第一个成员所需内存容量B 结构体中最后一个成员所需内存容量C 结构体中各成员所需内存容量总和D 结构体成员中占内存容量最大者所需的容量正确答案:A解析:暂无解析

考题 以下程序运行后的输出结果是______。 main() { char a[]="ABCDEFGH",b[]="abCDefGh"; char*p1,*p2;int k; p1=a;p2=b; for(k=0;k<=7;k++) if*(p1+k)==*(p2+k))printf("%c",*(p1+k)); printf("\n"); }A.ABCDEFGB.CDGC.abcdefghD.abCDefGh正确答案:B

考题 以下程序的输出结果是________。 main() { int k=4,m=1,p; p=func(k,m);printf("%d,",p); p=func(k,m);printf("%d\n",p); } func(int a,int B) { static int m=0,i=2; i+=m+1;m=i+a+b; return(m); }A.8,17B.8,16C.8,20D.8,8正确答案:A解析:将k和m的值带入函数func中,第—次调用完func()后,其中m和i的值要保留,并在第二次调用时使用,这是因为两者都是局部静态变量。所以最后的结果是8和17。