1、(*考点:C+)16 (A) 类用于描述事物的属性和对事物的操作(B) 类与类之间通过封装而具有明确的独立性(C) 类与类之间必须是平等的关系,而不能组成层次结构(D) 类与类之间可以通过一些方法进行通信和联络 2. C+中,已知有如下定义:const int D=5;int i=1;long int f=0;char c=15;则下列选项错误的是( 17 )。17 (A) +i; (B) D-; (C) c+; (D) -f; 3. 下面关于类和对象的描述中,错误的是 ( 18 )。18 (A) 类就是C语言中的结构体类型,对象就是C语言中的结构体变量(B) 类和对象之间的关系是抽象和具体的
2、关系(C) 对象是类的实例,一个对象必须属于一个已知的类(D) 类是具有共同行为的若干对象的统一描述体 4. 设有定义:int n=0,*p=&n,*q=&p,则下列选项中正确的赋值语句是(19)。(考点:指针赋值)19 (A) p=5; (B) *q=5; (C) q=p; (D) *p=5;注意:指针不能和非0的整数赋值,赋值运算符左右的类型要一致 5. 设有定义:char s20= ab101ncd; 则sizeof(s)和strlen(s)的值为( 20 )。字符数组)20 (A) 6,6 (B) 20,6 (C) 20,7 (D) 20,10sizeof运算符是求字节数,数组的字节数
3、为元素个数决定,strlen求字符串中第一个空字符前的字符个数,即字符串的长度,101 、n各占一个字符 6. 在C语言的函数中( 21 )。21 (A) 必须有形参 (B) 形参必须是变量名(C) 可以有也可以没有形参 (D) 数组名不能作为形参 7. 下列程序输出结果是( 22 )。带参数的宏定义)# include stdio.h# define SQR(x) x*xvoid main() int a=10,k=2,m=1; a/=SQR(k+m)/SQR(k+m); printf(%dn,a);22 (A) 10 (B) 1 (C) 9 (D) 0 8. 已知学生记录描述如下(考点:嵌
4、套结构体)struct student int no; char name20; char sex; struct int year; int month; int day; birth;struct student s;设变量s中“生日”是“1982年5月29日”,对“生日”的正确赋值方式是( 23 )。23 (A) year=1982;month=5;day=29;(B) birth.year=1982;birth.month=5;birth.day=29;(C) s.year=1982;s.month=5;s.day=29;(D) s.birth.year=1982;s.birth.mo
5、nth=5;s.birth.day=29; 9. 有下列程序输出结果是 ( 24 )。字符指针、函数(地址参数)、条件运算) # include void dig(char *s) /删除字符串的数字字符 char *p=s; while(*s) *s=0 & *s9?s+:(*p+=*s+); *p=0 char *str=A1B2C3 dig(str); puts(str);24 (A) ABC (B) A1B2C3 (C) A1B2C (D) ABC3 10. 在下面的选项中,赋值语句错误的是 ( 25 ) 。赋值语句)25 (A) i+; (B) a=(b=(c=2,d=3); (C)
6、 a=aa; (D) a=a*b=2;二、读程序回答问题 ( 每个选择3分,共45分 ) 1. 读下面程序并回答问题:函数参数的传递方式(普通值传递、地址值传递)void fun1(int x,int y) int t; t=x; x=y; y=t;void fun2(int x) t=x0; x0=x1; x1=t; int a2=1,2,b2=1,2; fun1(b0,b1);fun2(a);%d,%d,%d,%dn,a0,a1,b0,b1);(1) 下列说法错误的是( 26 )。26 (A) 数组名作为函数参数进行传递,传递的是数组的首地址(B) 数组名作为函数参数时,形参数组与实参数组
7、共用内存空间(C) 普通变量作为函数参数进行传递,实参与形参之间发生的是单向值传递(D) 数组名作为函数参数时,传递的是数组元素的值(2) 程序的运行结果是( 27 )。27 (A)1,2,1,2 (B) 1,2,2,1 (C) 2,1,1,2 (D) 2,1,2,1 2. 读程序并回答问题。命令行参数、静态变量)int fun() static int c=0; c+; return c;void main(int argc,char *argv) int x,i,j; for(i=1;ivoid fun(char *s,int p1,int p2) /逆置s指向数组中的元素值 char t
8、; while(p1p2) t=*(s+p1); *(s+p1)=*(s+p2); *(s+p2)=t; p1+; p2-; char str10; int i; for(i=0;9; stri=A+i; fun(str,0,strlen(str)-1); (1)第一个puts(str)的输出结果为( 30 )。30 (A) AHCFEDGBI (B) IBGDEFCHA(C) ABCDEFGHI (D) IHGFEDCBA (2)第二个puts(str)的输出结果为( 31 )。31 (A) AHCFEDGBI (B) IBGDEFCHA 4. 阅读下面程序,回答问题。循环应用、阶乘求和算法
9、) int n,m,s=0,t=1; scanf(%d,&m); for(n=1;n int num=0,i=8; do i-; num+; while(-i); coutnumendl; /输出num的值程序的运行结果是( 36 )。36 (A) 2 (B) 0 (C) 4 (D) 5 8. 有下列程序:switch语句、循环) char c= int k=0; switch(c+) case : k+; break; case B k-;C k+=2;D k%=2; continue;E k*=10;break; default: k/=3; while(cpijj+=2) /pijchi
10、j s=10*s+pij- /将取得的数字字符串转换为整数 输出结果是( 40 )。40 (A)6385 (B) 69825 (C) 63825 (D) 693825 请把下面“程序填空”中各小题答案写在主观题答题纸上 每一个空只填一个语句或一个语句所缺的部分内容三、程序填空 ( 每空2分,共30分 ) 1. 函数fun的功能是:找出N行M列二维数组元素中的最大值,并作为函数值返回,最大值的行列下标通过形参指针带回main函数中。请填空。函数(指针参数)、求最值算法)# define N 3# define M 4int fun(int aNM,int *row,int *col) int i
11、,j,r,c; r=c=0;N;j arc ) r=i; c=j; *row=r ; *col=c; return arc ; int aNM=1,2,3,4,5,6,7,8,9,10,11,12; int row,col,max; max=fun(a,&row,&col);max=%d,row=%d,col=%dn,max,row,col); 2. 程序的功能是:求出分数序列2/1,3/2,5/3,8/5,13/8前20项之和,请填空。循环、序列求和算法) double x=2,y=1,t,s=0;=20; s= s+x/y ; t= x ; x= x+y ;s=%fn 3. 有5个学生的成
12、绩需要保存在文件score.dat文件中,保存格式如下:文件)姓名,年龄,成绩 请填空。 FILE *fp; char name80; int age; float score; fp=fopen( “score.dat” ,w5; printf(请输入第%d个学生的信息n,i);姓名:%s,name);年龄:age);成绩: scanf(“%f”,&score) ; fprintf(fp,%s,%d,%fn,name,age,score); fclose(fp) ; 4. 下列程序的功能是:从5个字符串中找出最长的那个字符串。二维字符数组、行指针参数、返回指针值函数、字符串处理函数)# de
13、fine N 5# define M 81char *fun(char (*sq)M) /sq为行指针变量,函数fun为返回指向char类型的指针 int i; char *sp ; sp=sq0; /sq0 &sq00 &str00 if( strlen(sqi) strlen(sp) ) sp=sqi; return sp; char strNM,*longest; /二维数组的名字是行指针常量please enter 5 string: gets(stri); puts(stri); longest= fun(str) ; /调用函数nThe longest string: puts(l
14、ongest); 5. 下面程序的功能是:由25人坐成圆圈,先从任一人出发用1到25顺时针依次编号,然后从1号开始顺时针报数(1,2,3,4,),数到5的倍数的出圈,剩下的继续报数,求最后出圈的编号。数组、循环、约瑟夫环算法) int a26,j,n,count; for(j=1;=25;j+) aj=j; /编号 j=1; count=0; n=0 ; if(aj!=0) /条件为真表示在圈内 n+; /n是报数器 if(n%5=0) /条件为真表示报到5的倍数,以下作出圈处理 aj=0 ; /aj退出圈子 if(count=24) printf(,j);/如果之前已经退出24个人,则当前的
15、j为最后出圈的编号 count+; /计退出圈的人数 j+; if(j25) j=1; / 处理成循环,当报完最后一个人后,又从第一个人开始报数 while( count25 );第二部分 C与C+语言程序设计一、单项选择题 (每小题1分,共10分)1、C 2、B 3、A 4、D 5、B6、C 7、B 8、D 9、A 10、D二、读程序题(每个选择3分,共45分)1、(1)D (2)C 2、(1)B (2)A 3、(1)C (2)D4、A 5、 B 6、(1)D (2)C7、C 8、(1)B (2)C 9、B 10、A三、程序填空题(每空2分,共30分) 1、 arc *row=r return arc 2、 s+x/y x x+y 3、 score.dat scanf(%fscore) fclose(fp) 4、 char *sp strlen(sp) strlen(sqi) fun(str) 5、 n=0 aj=0 count25
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1