资源描述
1.7 自测练习1. C语言是一种( )。A. 低级语言 B. 高级语言 C. 机器语言 D. 汇编语言2. 以下描述中错误的是( )。 A. 不同的计算机可以理解的机器语言也不同 B. 机器语言和汇编语言都和具体的硬件平台相关,因此统称为低级语言 C. 高级语言编写的程序较为简洁,可读性较好D. 编译方式执行速度较快,且每次修改源程序后不必重新进行编译处理3. 以下描述中正确的是( )。 A. C语言编程的一个显著特点是以计算机工作方式来思考和组织程序代码B. 面向过程的程序设计方法以提高执行效率、少占内存作为目标C. 面向过程的程序设计方法一般采用结构化和模块化设计思想 D. 面向对象的程序设计方法提高了软件开发的可重用性,但增加了程序开发的复杂性4. 以下描述中错误的是( )。 A. 编写C程序的过程通常称为编辑,结果将得到 .c源文件B. C源程序经过编译,将生成本机目标代码文件,扩展名为objC. 链接过程通常是将目标代码文件和程序中使用到的其他代码连接在一起 D. 运行结果不对,通常是由于语法错误引起的5.语句“printf(WelcomentonC!);”将输出( )。A. 1行 B. 2行 C. 3行 D. 4行6.有以下程序#include stdio.hvoid main( ) float a=b=2, result;result=a/b;printf(result=%fn, result); 正确的说法是( )。A. 因为变量声明问题导致编译出错B. 因为result=a/b;语句有误导致编译出错C. 输出结果为result=2.000000D. 输出结果为result=1.000000 7.下列程序运行时输入3 4,则程序的输出结果是( )。#include stdio.hint multi(int a,int b) return a*b; void main() int x,y,t;printf(Please input two integers (x and y): );scanf(%d%d, &x,&y);t= multi(x,y);printf(%dn,t); A. 3 B. 4 C. 7 D. 128.以下程序的运行结果是( )。#include stdio.h#define RATE 0.05void main( ) double salary,tax;salary=5000.00;tax=(salary-3000)*RATE;printf(The result is: %.2fn, salary-tax); A. 5000.00 B. 100.00 C. 4900.00 D. 3000.009.以下程序的运行结果为( )。#include stdio.hvoid main() printf(%dn,sizeof(char)+sizeof(int)+sizeof(double); A. 148 B. 1,4,8 C. 144 D. 1310.有以下程序 #include stdio.hvoid main() char ch;printf(输入一个大写字母:);scanf(%c,&ch); digit=ch-A;printf(%c, %dn,digit+a,digit); 若程序运行时输入 B ,则程序的输出结果是( )。 A. 编译时出错 B. b,B C. b,1 D. B,12.5 自测练习1.已定义: int k,a,b;unsigned long w=5;double x=1.42, 不正确的表达式是( )。A.x%(-3) B.w+= -2 C.k=(a=2,b=3,a+b) D.a+=a-=(b=4)*(a=3)2. 单精度变量x=3.0,y=4.0,下列表达式中的y的值为9.0的是( )。A. y/=x*27/4 B. y+=x+2.0 C. y-=x+8.0 D. y*=x-3.03.已定义 int num=sum=7, (sum=num+, sum+, +num)表达式的结果是( )。 A.7 B.8 C.9 D.104.若有定义:int a=7; float x=2.5,y=4.7; 则表达式x+a%3*(int)(x+y)%2/4的值是( )。A2.500000B4.50000C3.500000D0.000005.若x、i、j和k都是int型变量,则执行下面表达式x=(i=4,j=16,k=32)后x的值为( )。A4B16C32D526. 设有定义:int x=2;,以下表达式中,值不为6的是( )。Ax*=x+1 Bx+,2*x Cx*=(1+x) D2*x,x+=27. 若变量a、i已正确定义,且i已正确赋值,合法的语句是( )。A. a=1 B. +i; C. a=a+=5; D. a=int(i); 8. 执行下面程序段的输出结果是( )。int x=023,y=5,z=2+(y+=y+,x+8,+x); printf(%d,%dn,x,z); A18,13B19,14 C22,21 D20,229. 已知i、j、k为int型变量,若从键盘输入:1,2,3,使i的值为1,j的值为2,k的值为3,以下选项中正确的输入语句是( )。 Ascanf(%2d %2d %2d,&i,&j,&k);Bscanf(%d %d %d,&i,&j,&k);Cscanf(%d,%d,%d,&i,&j,&k); Dscanf(i=%d,j=%d,k=%d,&i,&j,&k);10. 执行下面程序段的输出结果为( )。int x=13,y=5; printf(%d,x%=(y/=2); A3B2C1D03.6 自测练习1.为表示关系xyz,应使用C语言表达式( )。A. (x=y)&(y=z) B. (x=y)and(y=z) C. x=y=z D. (x=Y)&(Y=z)2.以下运算符中优先级最低的运算符为( )。A. & B. & C.!= D. |3.下列表达式中,( )不满足“当x的值为偶数时其值为真,为奇数时其值为假”的要求。A. x%2=0 B.!x%2!=0 C. (x/2*2-x)=0 D.!(x%2)4.判断char型变量ch是否为大写字母的正确表达式是( )。A. A=ch=A)&(ch=A & ch=Z D. (A=ch)5.在C语言中,要求运算数必须是整型的运算符是( )。A./ B.+ C.!= D.%6.下述程序段的输出结果是( )。int a=2,b=3,c=4,d=5; int m=2,n=2; a=(m=ab)&(n=cd)+5; printf(%d,n);A. 0 B. 1 C. 2 D. 57.执行下列程序段后,变量m的值是( )。int w=1,x=2,y=3,z=4,m;m=(wx)?w:x; m=(my)?m:y; m=(mz)?m:z;A. 4 B. 3 C. 2 D. 18.有定义语句:int a=1,b=2,c=3,x;,则以下选项中各程序段执行后,x的值不为3的是( )。A.if(ca) x=1; else if(b3) x=3; else if(a2) x=2; else x=1;C.if(a3) x=1; if(a2) x=2; if(a=1) x=3;D.if(ab) x=b; if(bc) x=c; if(c0) y=1; else y=-1;printf(n%d n,y); A. 15 B. 0 C. -1 D. 14.8 自测练习1.以下不构成无限循环的语句或语句组是( )。 A. n=0; do+n;while(n=0); B. n=0; while(1)n+; C. n=10; while(n);n-; D. for(n=0,i=1; ;i+) n+=i;2.以下描述中正确的是( )。 A. 由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句 B. do-while循环由do开始,用while结束,在while(表达式)后面不能写分号 C. 在do-while循环体中,是先执行一次循环,再进行判断 D. do-while循环中,根据情况可以省略while3.若变量已正确定义,有以下程序段 i=0; do printf(%d,i);while(i+); printf(%dn,i); 其输出结果是( )。 A. 0,0 B. 0,1 C. 1,1 D. 程序进入无限循环4.已知 int t=0; while (t=1) . 则以下叙述正确的是( )。 A. 循环控制表达式的值为0 B. 循环控制表达式的值为1 C. 循环控制表达式不合法 D. 以上说法都不对5.设有以下程序段 int x=0,s=0; while(!x!=0)s+=+x; printf(%d,s); 则( )。 A. 运行程序段后输出0 B. 运行程序段后输出1 C. 程序段中的控制表达式是非法的 D. 程序段执行无限次6.有以下程序 #includestdio.hvoid main() int i,s=1; for (i=1;i50;i+) if(!(i%5)&!(i%3) s+=i; printf(%dn,s); 程序的输出结果是( )。 A. 409 B. 277 C. 1 D. 91 7.以下程序的输出结果是( )。 #include stdio.h void main() int i,a=0,b=0; for(i=1;i10;i+) if(i%2=0) a+; continue; b+; printf(a=%d,b=%d,a,b); A. a=4,b=4 B. a=4,b=5 C. a=5,b=4 D. a=5,b=58.有以下程序 #include void main() int y=9; for( ; y0;y-) if(y%3=0) printf(%d,-y); 程序的运行结果是( )。 A. 741 B. 963 C. 852 D. 8754219.有以下程序 #include void main() int k=5,n=0; do switch(k) case 1: case 3:n+=1;k-;break; default:n=0;k-; case 2: case 4:n+=2;k-;break; printf(%d,n); while(k0 & n5); 程序运行后的输出结果是( )。 A. 235 B. 0235 C. 02356 D. 235610.有以下程序 #include void main() int x=0,y=0,i; for (i=1;+i) if (i%2=0) x+;continue; if (i%5=0) y+;break; printf ( %d,%d,x,y); 程序的输出结果是( )。 A. 2,1 B. 2,2 C. 2,5 D. 5,25.5 自测练习1.若有定义int num10;则对数组元素的正确引用是( )。 A. num10 B. num(5) C. num2.5 D. num232.下面关于数组的叙述,正确的是( )。 A. 数组元素的数据类型都相同B. 数组不经过定义即可使用C. 同一数组中会出现不同类型的数组元素D. 数组名等同于第一个元素3.以下定义合法的是( )。 A. int a=string; B. int a5=0,1,2,3,4,5;C. char s=string; D. char a( )=0,1,2,3,4,5;4.以下定义正确的是( )。 A. int num;B. #define N 100 int numN;C. int num0.100;D. int N=100; int numN;5.以下不能正确定义二维数组的是( )。 A. int a22=1,2;B. int a2=1,2,3,4;C. int a22=1,2,3;D. int a2=1,2,3,4;6.假设按如下方式调用scanf()函数:scanf(%d%s%d,&i,s,&j);若用户输入12abc34 56def78,那么调用后s的是( )。 A. abcB. abc34C. abc34 56defD. 一个空格7.以下程序的执行结果是( )。 #include stdio.hvoid main() int a44=1,2,3,4,5,6,7,8,3,9,10,2,4,2,9,6;int i,s=0;for(i=0;i4;i+)s+=ai1;printf(%dn,s); A. 11B. 13C. 19 D.208.以下程序的执行结果是( )。 #include stdio.h#include string.hvoid main() char str10=ABCD,EFGH,IJKL,MNOP,k;for(k=1;kb) fun(c 2);printf(%c,c);void main() fun(h); 程序运行后的输出结果是( )。A.bdf B.bdfh C.hfdb D.hfd5. 有以下程序#include “stdio.h”#define S(x) (x)*x*3void main() int k = 6, j = 2;printf(“%dn”, S(k - j);程序运行后的输出结果是( )。A.18 B.11 C.48 D.宏的参数不匹配,出错6. 以下程序的输出结果是( )。#include “stdio.h”int x, y;void fun() x=20; y=30; void main() int x=7, y=9;fun();printf(“%d%d n”,x ,y);A.2030 B.3020 C.97 D.797. 以下只有在使用时才为该类型变量分配内存的存储类说明是( )。A.auto和 static B.auto和 registerC.register和 staticD.extern和 register8.在一个源文件中定义的全局变量,其默认的作用域为( )。A.本文件的全部范围 B.本程序的全部范围C.本函数的全部范围 D.从定义位置开始至本文件结束9. 设有如下函数定义#include stdio.hint fun(int k) if(k1) return 0; else if(k=1) return 1; else return fun(k-1)+1;void main()printf(%d,fun(3);若执行调用语句:n=fun(3); ,则函数fun总共被调用的次数是( )。A.2 B.3 C.4 D.510. 下面程序的运行结果为( )。#include “stdio.h”int f(int k)static int a=1; k+=a+; return k;void main()int a=2; printf(%dn,f(a)+f(a);A.6 B.7 C.8 D.97.5 自测练习 1. 当定义一个共用体变量时,系统为它分配的内存空间是( )。A共用体中第一个成员所占用的空间 B共用体中所有成员所占用空间之和C共用体中空间占用最大者D共用体中任意一个成员所占用的空间2. 有如下定义:struct numberint a;char b; num;则sizeof(num)的值是( )。A 5 B. 8 C. 9 D.103.共用体变量在程序运行过程中( )。A.只有一个成员占用内存空间 B.所有成员都占用内存空间C.没有成员占用内存空间 D.部分成员占用内存空间4.typedef的作用是( )。A 用来定义一个新的数据类型B 可以为已有类型取一个新的名字C 可以用来定义一个变量D 能为用户自定义类型取新的名字,但不能为原始数据类型取新的名字5.有如下定义的结构体及变量,则为变量中各个成员赋值,正确的形式是( )。struct Time int hour; int minute; int second; time;A. Time.hour = 3; Time.minute = 24; Time.second = 56;B. hour = 3; minute = 24; second = 56;C. time.hour = 3; time.minute = 24; time.second = 56;D. 以上都可以6.定义了如下结构体数组:struct Number int a; int b; num2=1,2,3,4;语句printf(“%d”, num1.a*num1.b);的输出结果是( )。A2 B. 3 C.8 D. 127.以下程序段是计算学生的三门功课平均分,空白处对函数average正确调用方式是( )。struct Student char name10; int score1; int score2; int score3; stu;int float average( struct Student stu) int aver; aver=(stu.score1+stu.score2+stu.score3)/3; return aver; main() struct Strudent stu; int aver; stu.score1=78; stu.score2=86; stu.score3=75; printf(“average is: %d”, aver);A. average(stu); B. aver=average(stu); C. average(Student); D. int average(stu);8. 有如下定义的枚举类型: enum language Chinese=1, English, French, Spanish;则,枚举量French的值为( )。A3 B. 2 C. 4 D. 59. 以下对枚举类型名的定义中,正确的是( )。Aenum month=Jan=1, Feb=2, Mar=3;Benum month Jan=1, Feb, Mar;Cenum monthJan, Feb,Mar;Denum month=Jan, Feb,Mar;10. 以下程序段执行后的结果是( )。enum rank Fail=1, Pass, Good, Excellent;enum rank grade ;grade = Good;printf(“%d”, grade);A. 编译时出现语法错误 B.2C. 3 D. 48.9 自测练习1.下面程序对两个整型变量的值进行交换。以下正确的说法是( )。#include stdio.hmain() int a=10,b=20; printf( (1)a=%d,b=%dn,a,b); swap(&a,&b); printf( (2)a=%d,b=%dn,a,b); swap(int p,int q) int t; t=p; p=q ; q=t; A.该程序完全正确B.该程序有错,只要将语句swap(&a,&b); 中的参数改为a,b即可C.该程序有错,只要将swap()函数中形参p和q以及t均定义为指针即可D.以上说法都不正确2.在以下程序中,通过调用scanf()函数给变量a输入数值的方法是错误的,其错误原因是( )。#include stdio.hmain() int *p,q,a,b; p=&a; printf(input a: ); scanf(%d,*p); A. *p表示的是指针变量p的地址B. *p表示的是变量a的值,而不是变量a的地址C. *p表示的是指针变量p的值D. *p只能用来说明p是一个指针变量3.如有以下定义: char *aa2=abcd,ABCD;则以下说法中正确的是( )。A. aa数组元素的值分别是abcd和ABCDB. aa是指针变量,它指向含有两个数组元素的字符型一维数组C. aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址D. aa数组的两个元素中分别存放了字符a和A的地址4.下列语句组中,正确的是( )。A. char *s;s=olympic; B. char s7;s=olympic; C. char *s;s=olympic; D. char s7;s=olympic;5.若有语句int *point,a=4;和point=&a; 下面均代表地址的一组选项是( )。A. a,point,*&a B. &*a,&a,*pointC. &point,*point,&a D. &a,&*point,point6.程序段char *s=abcde; s+=2; printf(%d,s);的运行结果是( )。A. cde B. 字符c C. 字符c的地址 D. 无确定的输出结果7.下面程序段的运行结果是( )。char str=ABC, *p=str; printf(%dn,*(p+3);A. 67 B. 0 C. 字符C的地址 D. 字符C8.下面程序段的运行结果是( )。char a=language, *p; p=a;while(*p!=u) printf(%c,*p-32); p+; A. LANGUAGE B. language C. LANG D. langUAGE9.如有以下定义: int a43=1,2,3,4,5,6,7,8,9,10,11,12; int (*prt)3=a,*p=a0;则下列能够正确表示数组元素a12的表达式是( )。A. *(prt+1)2) B. *(*(p+5)C. (*prt+1)+2 D. *(*(a+1)+210.有以下程序: #include stdio.h#include stdlib.h fut(int *s,int p23) *s=p11; main() int a23=1,3,5,7,9,11,*p; p=(int *)malloc(sizeof(int); fut(&p,a);printf(%dn,*p); 则程序的运行结果为( )。A. 1 B. 7 C. 9 D. 119.7 自测练习1.有以下程序#include stdio.hvoid main() FILE *fp; int i=20,j=30,k,n; fp=fopen(d1.dat,w+); fprintf(fp,%dn,i);fprintf(fp,%dn,j); rewind(fp); fscanf(fp,%d%d,&k,&n); printf(%d %dn,k,n); fclose(fp);程序的运行结果是( )。 A.20 30B.20 50C.30 50D.30 202.以下叙述错误的是( )。 A.二进制文件打开后可以限度文件的末尾,而顺序文件不可以。 B.在程序结束时,应当用fclose函数关闭已打开的文件。 C.fread函数从二进制文件中读数据,可以用数组名给数组中所有元素读入数据。 D.不可以用FILE定义指向二进制文件的文件指针。3. 以下函数不能用于向文件写入数据的是()。 Aftell Bfwrite Cfputc Dfprintf4. 有以下程序#include stdio.hvoid main()FILE *fp; int k,n,i,a6=1,2,3,4,5,6;fp=fopen(d2.dat,w);for(i=0;i6;i+) fprintf(fp,%dn,ai);fclose(fp);fp=fopen(d2.dat,r);for(i=0;i3;i+)fscanf(fp,%d%d,&k,&n);fclose(fp);printf(%d,%dn,k,n);程序运行后的输出结果是()。 A.1,2 B.3,4 C.5,6 D.123.4565.有以下程序: #include stdio.h void main() FILE *f; f=fopen(filea.txt,w); fprintf(f,abc); fclose(f); 若文本文件filea.txt中原有内容为:hello,则运行以上程序后,文件filea.txt中的内容为( )。 Ahelloabc Babclo Cabc Dabehello6.读取二进制文件的函数调用形式为:fread(buffer,size,count,fp);,其中buffer代表的是( )。 A.一个文件指针,指向待读取的文件 B.一个整型变量,代表待读取的数据的字节数 C.一个内存块的首地址,代表读入数据存放的地址 D.一个内存块的字节数7.有以下程序 #include stdio.h void main() FILE *fp; int i,a6=1,2,3,4,5,6; fp=fopen(d3.dat,w+b); fwrite(a,sizeof(int),6,fp); fseek(fp,sizeof(int)*3,SEEK_SET); fread(a,sizeof(int),3,fp); fclose(fp); for(i=0;i2.在C语言中,要求运算数必须是整型或字符型的运算符是( )。A.& B.& C.! D.|3.表达式0x1A&0x35的值是( )。A.0x17B.0x35 C.0x0FD.0x104.若x=2,y=3则xy的结果是( )。A.0B.1 C.3D.55.在执行完以下C语句后,B的值是( )。char z=A;int b;b=(241&15)&(z|a);A.FalseB.True C.1D.06.表达式0x17|0x13的值是( )。 A.0x17 B.0x13 C.0xE8 D.0xC87.执行以下程序段后,x,y的值是分别是( )。int x=1,y=2;x=xy; y=yx; x=xy;A.x=1,b=2B.x=2,y=2C.x=2,y=1D.x=1.y=18.下列程序片段,执行后的输出结果是( )。int x=20; printf(“%dn”,x);A.20B.-11 C.-20D.-219.有以下程序,运行后的输出结果是( )。#include “stdio.h”void main()unsigned a,b,c;a=0x3;b=a|0x8;c=b1;printf(“%d,%dn”,b,c ); A.11,22 B.12,24 C.6,12 D.11,1210.以下程序的输出结果是( )。#include “stdio.h”void main() int x=040; printf(%on,x1);A.80 B.100 C.64 D.3211.7 自测练习1. 下列_是C+中实现数据输入的输入流。A. scanf(格式串, 地址列表) ; B. cin 变量名1;2. 类的某个成员变量如果要被其派生类的成员函数访问而不能被外部函数访问,则该成员变量定义时的访问限定符应为_。A. private B. public C. protected D. 任意一种均可3. 以下说法错误的是_。A. 内联函数就是在类的成员函数内定义的函数B. 类的成员函数可以放在类体中定义,也可以在类体外定义C. 外部函数若要访问某类中的私有成员变量,只要在该类中将这个外部函数声明为公有的友元A. 访问限定符为protected的成员,可供该类对象及其派生类对象成员函数引用4. 有如下类的定义,则下列定义对象的方法是错误的_。class dogchar variety20, color15;int age;float weight;public: void input( );void disp( );void dog( ) strcpy(variety,); strcpy(color,);age=0;weight=0.0; void dog(char *Var, int Age) strcpy(variety,Var); age=Age; ;A. dog Tom; B. dog Tom(Fox,2)C. dog Tom(Fox,2); D. class dog Tom;5. 下列有关内联函数的叙述中,正确的是_。A. 内联函数在调用时发生控制转移B. 内联函数必须通过关键字inline来定义C. 内联函数是通过编译器来实现的D. 内联函数函数体的最后一条语句必须是return语句6. 下列有关继承和派生的叙述中,正确的是_。A. 如果一个派生类私有继承其基类,则该派生类对象不能访问基类的保护成员B. 派生类的成员函数可以访问基类的所有成员C. 基类对象可以赋值给派生类对象D. 派生类可以重载基类的公有成员函数7. 以下关键字不能用来声明类的访问权限的是_。A. publicB. staticC. protectedD. private8. 关于友元,下列说法错误的是_。A. 如果类A是类B的友元,那么类B也是类A的友元B. 如果函数fun( )被说明为类A的友元,那么在fun( )中可以访问类A的私有成员C. 友元关系不能被继承D. 如果类A是类B的友元,那么类A的所有成员函数都是类B的友元9. 在C+中用来实现运行时多态性的是_。A. 重载函数 B. 析构函数 C. 构造函数 D. 虚函数10.下列程序运行的结果是_。#include class Point2 int x,y;public:Point2() x=0;y=0;Point2(int a) x=a; y=0;Point2(int a,int b) x=a; y=b; void show();class Point3:public Point2int z;public:Point3() z=0; Point3(int a):Point2(a) z=0;Point3(int a,int b):Point2(a,b) z=0;Point3(int a,int b,int c):Point2(a, b) z=c;void show();void Point2 :show() cout(x,y; void Point3 :show() Point2 :show(); cout ,z)endl; void main()Point3P1(100),P2(50,30),P3(200,100,150);/P1.show();P2.show();A. (100,0,0) B. (100,0,0) (50,30,0)C. (50,30,0) D. (200,100,150)12.4 自测练习1. 下面叙述正确的是( )。A.算法的执行效率与数据的存储结构无关B.算法的空间复杂度是指算法程序中指令(或语句)的条数C.算法的有穷性是指算法必须能在执行有限个步骤之后终止D.算法的时间复杂度是指执行算法程序所需要的时间2. 设某循环队列的容量为 50,如果头指针 front=45(指向队头元素的前一位置),尾指针 rear=10(指向队尾元素),则该循环队列中
展开阅读全文