同济大学课程考核试卷(B卷)命题教师签名:审核教师签名:课号:课名:C++语言考试考查:考查此卷选为:期中考试()、期终考试(√)、重考()试卷年级专业学号姓名得分一、选择填空(30分)1)已定义c为字符型变量,则下列语句中正确的是()。A、c=’65’;B、c="65";C、c=65;D、c="A";2)若有以下定义:intn=10;typedefintarray[10];则下列语句中不能正确定义数组的是()。A、inta[10];B、intb[n];C、arrayc;D、floatd[5*2];3)若有以下定义:int*p;intx[3][4];则下列赋值语句中错误的是()。A、p=x;B、p=x[0][0];C、p=x[0];D、p=*(x+1);4)有以下程序段:x=1200;if(x>1000)y=0.5;elseif(x>800)y=0.4;elseif(x>600)y=0.3;elsey=0.2;则程序段执行完毕时,y的值为()。A、0.5B、0.4C、0.3D、0.25)以下表达式中能够被正确执行的是()。A、a/(x-x++)B、a=b=c+10C、int21.09%3D、x=y+2=z-56)若有定义:int*p[5];则以下叙述中正确的是()。A、定义了一个名为*p的整型数组,该数组含有五个整型元素;B、定义了一个指针数组p,该数组含有五个元素,每个元素都是整型指针;C、定义了一个指向整型数据的指针变量p,该变量具有五个指针;D、定义了一个可指向一维数组的指针变量p,所指一维数组有五个整型元素;7)有下列定义:intb[10];int*p=b;以下表达式中不能使数组b中元素b[1]的值为1的是()。A、*(b+1)=1B、*(p+1)=1C、*++b=1D、*++p=18)给出以下定义:charstr1[]="abcde";charstr2[]={'a','b','c','d','e'};则以下叙述中正确的是()。A、数组str1和数组str2等价B、数组str1和数组str2的长度相同C、数组str1的长度大于数组str2的长度D、数组str1的长度小于数组str2的长度9)下列关于函数的传值调用的描述中,()是错误的:A、使用传值调用时,要求形参和实参对应的类型一致,个数相等。B、使用传值调用时,调用函数的实参可以是常量、变量值、表达式、数组元素。C、传值调用的机制是系统将实参拷贝一个副本给形参。D、在被调函数中,形参可以被改变,但这会影响调用函数的实参值。10)有如下定义:structst{intx,floaty}s,*p;若p=s;则以下对s中成员y的使用中不正确的使用是()。A、(*p).yB、s.yC、p->yD、p.y二、写出下列各程序运行时的输出结果(50分)1.#include<stdio.h>voidmain(){intx=3,y=4,z=8;intt;t=x>y?(y<z?++y/--z:++x/--y):x++,y--;printf("%d,%d,%d,%d\n",x,y,z,t);t=x>y?(y<z?++y/--z:++x/--y):(x++,y--);printf("%d,%d,%d,%d\n",x,y,z,t);}2.#include<stdio.h>voidmain(){inta=5,b=6,i=0,j=0;switch(a){case5:switch(b){case5:i++;case6:j++;default:i++;j++;}case6:i++;j++;break;default:i++;j++;}printf("%d,%d\n",i,j);}3.#include"stdio.h"voidf(int*p,intn){inti;for(i=0;i<n;i++)printf("%d\n",*(p+i));}voidmain(){intx[]={1,2,3,4,5,6,7,8,9,10};f(x+4,5);}4.#include“stdio.h”voidmain(){inti=10;while(--i){if(i==1)break;if(i%3!=2)continue;printf(“%d\n”,i);}}5.#include<stdio.h>voidmain(){inta,b,c,d;a=0;b=1,c=2,d=3;if(++ab++||++cd++)if(!a||b>d)b++;elseif(!c++d)c++;elsea+=6;d--;printf(“%d,%d,%d,%d\n”,a,b,c,d);}6.#include"stdio.h"intx=1;voidfun(int*p){staticintx=2;*p*=x-1;x+=2;}voidmain(){inti;for(i=1;i<4;i++){fun(x);printf("%d\n",x);}}7.#include<stdio.h>voidswap1(intx[]){intt;t=x[0];x[0]=x[1];x[1]=t;}voidswap2(intx0,intx1){intt;t=x0;x0=x1;x1=t;}voidmain(){inta[2]={3,5},b[2]={3,5};swap1(a);swap2(b[0],b[1]);printf("%d,%d,%d,%d\n",a[0],a[1],b[0],b[1]);}8.#include<stdio.h>voidf(intx,int*p,floaty){x=(int)y;*p=10;y+=*p*x;}voidmain(){inta=0,b=0;floatc=10.5;f(a,b,c);printf(“%d,%d,%f\n”,a,b,c);}9.#include"stdio.h"#defineNULL0structTpoint{intx;inty;structTpoint*next;};voidmain(){structTpointa,b,c,*head,*p;a.x=10;a.y=10;b.x=20;b.y=30;c.x=30;c.y=50;head=a;a.next=b;b.next=c;c.next=NULL;p=head;do{printf("%d,%d\n",p->x,p->y);p=p->next;}while(p!=NULL);}10.#include"stdio.h"voidmain(){int...