《《高级语言程序设计》复习题及答案(共28页).doc》由会员分享,可在线阅读,更多相关《《高级语言程序设计》复习题及答案(共28页).doc(28页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上一、选择题.以下叙述正确的是( ): A) 在C程序中,main函数必须位于程序的最前面B) C程序的每行只能写一条语句C) C语言使用库函数实现输入输出操作D) 注释中的拼写错误会影响编译结果2、以下说法中正确的是() A) C语言程序总是从第一个的函数开始执行 B) C语言程序总是从main()函数开始执行 C)在C语言程序中,要调用的函数必须在main()函数中定义 D) C语言程序中的main()函数必须放在程序的开始部分3、下列选项种说法正确的是( )A) 函数由声明部分和执行部分两部分组成B)语言中main函数一定在程序的开始部分C)C语言程序总是从第一个
2、定义的函数开始执行D)C程序的每行中只能写一条语句4、设有说明:int a; float b; char c; double d; 则表达式1.3*a+2*b*c+d*(int)2.6 值的类型为( )。A) double B) char C) float D) int 5、 C语言的标识符只能由字母、数字和下划线三种字符组成,且第一个字符( )A)必须为字母B)必须为下划线C)必须为字母或下划线D)可以是字母、数字和下划线中任一种字符6、以下不正确的C语言标识符是( )。 A) ABC B) abc C) a_bc D) void 7、下列运算符中优先级最高的是( )A) x ? w : y
3、 z ? y : z”的值是( )A)4 B)3 C)2 D)113、有以下程序,程序运行后的输出结果是。main() int i=1,j=2,k=3; if(i+=1&(+j=3|k+=3) printf(%d %d %dn,i,j,k); A)1 2 3 B)2 3 4 C)2 2 3 D)2 3 314、下面程序的输出结果是main()int x=2,y=-1,z=2;if(xy)if(y0)z=0;else z=-1+x;printf(“%dn”z);A) 3 B) 2 C) 1 D)015、执行下列语句后,a的值为( )main( )int a=5;printf(“%dn”,(a=3
4、*5,a*4,a+5);A) 65 B)20 C) 15 D)1016、下列程序段中,有错误的行是()列定行号 int x=0,y=10; 2 switch(x) 3 case 3: 4 case 1:y=y-2;break; 5 case y+1:x+=5; 6 default:printf(“%d,%d”,x,y);A) 4 B) 3 C) 5 D)无错误17、若i为整型变量,则以下循环执行次数是( )。#includestdio.hvoid main() int i;for(i=2;i=0; ) printf(%d,i-);A) 无限次 B)0次 C) 1次 D) 2 次18、若有以下定
5、义,doublea10;则a数组元素下标的上、下限分别为( )A) 1,10 B) 0,9 C) 0,10 D)1,919、若已定义的函数有返回值,则以关于该函数调用的叙述中错误的是() A) 调用可以作为独立的语句存在 B) 调用可以作为一个函数的实参 C) 调用可以出现在表达式中 D) 调用可以作为一个函数的形参 20、 定义如下变量和数组: int i; int x33=1,2,3,4,5,6,7,8,9; 则下面语句 for(i=0;i3;i+) printf(%d,xi2-i); 输出结果是 ( )A) 1 5 9 B) 1 4 7 C) 3 5 7 D) 3 6 9 21、以下不能
6、正确定义二维数组的选项是 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; 22、若有以下定义:int a5=10,20,30,40,50,*p=a;则执行+(*p)后(*p)+的值是A) 10 B) 11 C) 20 D)2123、函数的嵌套调用是指A) 直接调用本函数B) 在定义函数时,又定义另一个函数 C) 间接调用本函数 D) 被调用函数又调用另一个函数24、下列说法正确的是A) 被调用函数必须先调用,后声明B) 用户自定义函数的类型若未指出,则系统默认为voidC) 全局变量不能与局部变量同
7、名D) 实参可以是任意表达式25、以下描述正确的是( )A)continue语句的作用,是结束整个循环语句的执行B)只能在循环体内和switch语句体内使用break语句C)在循环体内使用break语句或continue语句的作用相同D)多层循环嵌套中不可以使用break语句26、若有说明语句:“int a34;”,则对数组元素的正确引用格式是( )A)a24 B) a1,3 C) a1+10 D) a(2)(1)27、若有说明:“int a34=0;”,则下面正确的叙述是( )A)只有元素a00可得到初值0B)此数组说明语句不正确C)数组a中各元素都可得到初值,但其值不一定为0D)数组a中每
8、个元素均可得到初值028、定义数组a和b的语句是: “char a =“ABCDEF”; char b =A,B,C,D,E,F;”则以下叙述正确的是( )A)a和b数组完全相同 B)a与b数组元素个数相同C)a和b中都存放字符串 D)a数组比b数组元素个数多29、语句“int (*ptr) ( );”的含义是( )A)ptr是指向一维数组的指针变量B)ptr是指向int型数据的指针变量C)ptr是指向函数的指针,该函数返回一个int型数据D)ptr是一个函数名,该函数返回值是指向int型数据的指针30、若有定义:“int *p4;”,则标识符p 是( )A)一个指向整型变量的指针B)一个指针
9、数组名C)一个指针,它指向一个含有四个整型元素的一维数组D)无效的数组名31、在C语言中( )A) 函数定义可以嵌套,但函数调用不可以嵌套B) 函数定义不可以嵌套,但函数调用可以嵌套C) 函数定义和调用都可以嵌套D) 函数定义和条用都不能嵌套32、下面程序的输出结果是( )#include void main() int i,j,x=0; for(i=0;i=2;i+) x+; for(j=0;j=2;j+) if(j%2)continue; x +;x +;printf(%dn,x); A)4 B)6 C)8 D)1233、执行下列语句后,m的值为( ) int m=1,x=2,y=3,z=
10、4; m=mx?m:x; m=my?m:y; m=mz?m:z:A) 1 B) 4 C) 2 D) 334、下列程序段是实现给数组所有元素赋值操作,应在下划线上填入的是( )int a10;for(i=0;i=9;i+) scanf(“%d”, );A) a B) &ai C) ai D) &a035、下列叙述正确的是()A) do-while语句构成的循环不能用其它语句构成的循环来代替B) do-while语句构成的循环只能用break语句退出C) 用do-while语句构成的循环,在while后的表达式为非零时结束循环D) 用do-while语句构成的循环,在while后的表达式为零时结束
11、循环36、下列程序的输出结果为()#include “stdio.h”main() int a,b;for(a=1,b=1;a=20) break;if(b%3=1) b+=3;continue; b+=5;printf(“%d, %d”, a, b);A) 8,20 B) 8,22 C) 7,20 D) 7,2237、设 int a5=10,15,20,25,30; int *p; p=a+2;则表达式+*p的值为()A) 20 B) 15 C) 16 D) 2138、设w=1,x=2,y=3,z=4,a=5,b=6,则执行一下语句后A)b的值分别为( ) (a=wx)&(b=yz);A)
12、0和0 B) 5和0 C) 0和6 D) 5和639、下列语句的输出为( ) int x=-1; printf(“%d,%u,%o”,x,x,x);A) 1,-1,-1 B) 1,32767,-C) 1,32768, D) 1,65535,40、下列函数调用语句中的实参个数为( )fun(a+b,x,y),fun(x,(x+z);A) 2 B) 3 C) 4 D) 541、设有数组定义:char array =”china”;则数组array所占的内存空间为( )A) 4个字节 B) 5个字节 C) 6个字节 D) 7个字节42、以下程序段的运行结果是( )。 char c5= a , b ,
13、 0 , c , 0 ; printf( “%s” , c ); A)ab B)ab C)ab c D)a b43、若C程序中出现死循则违背了算法的( )A)有效性 B)确定性 C)有穷性 D)有一个或多个输出44、设 int a=20;则执行表达式:a/=a+a后,a的值是( )A)0 B)1 C)20 D)4045、int x,y,z,m=5,n=5;则执行下面语句后的z值是( )x=(-m=n+)?-m:+n;y=m+;z=n;A)5 B)10 C)6 D)746、执行下列程序段后,i的正确结果是( )int i=10;switch(i) case 9: i+=1;case 10: i+
14、;case 11: +i; default:i+=i; printf( %d, i ); A)10 B)11 C)12 D)2447、若有定义:int a10;。则以下表达式中不能代表数组元素a1的地址的是( )A)&a0+ B)&a1 C)&a0+1 D)a+148、变量的指针,其含义是指该变量的( )A)值 B)地址 C)变量名 D)一个标志49、有以下函数定义:void fun(int n, double x) 若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是( )A)fun(int y,double m); B)k=fun(10,12.5);C)fun(x,n);
15、D)void fun(n,x);50、设整型变量n=10,i=4,则赋值运算n%=i+1执行后,n的值是( )。 A) 0 B) 1 C) 2 D) 351、若int a, b; scanf(%d%d, &a, &b); 不可以用( )作为输入的分隔符。A) , B)空格 C)回车 D)TAB键52、下面关于运算符优先顺序的描述中正确的是: ( ) A)关系运算符 算术运算符 赋值运算符 逻辑与运算符B)逻辑 运算符 关系运算符 算术运算符 赋值运算符C)赋值运算符 逻辑与运算符 关系运算符 算术运算符D)算术运算符 关系运算符 赋值运算符 逻辑与运算符53、为了判断两个字符串s1和s2是否相
16、等,应当使用( )。A)if(s1 = s2) B) if(s1 = s2) C)if(strcpy(s1,s2) D)if(strcmp(s1,s2)=0)54、以下对二维数组进行正确初始化的是( )。A)int a23=1,2,3,4,5,6; B)int a3=1,2,3,4,5,6; C)int a2=1,2,3,4,5,6;D)int a2=1,2,3,4; 55、 若用数组名作为函数调用时的实参,则实际上传递给形参的是( )。A)数组的首地址 B) 数组的第一个元素值C)数组中全部元素的值 D) 数组元素的个数56、 以下错误的描述是( )。A) 不同的函数中可以使用相同的变量名B
17、) 形式参数是局部变量C) 一个函数内部定义的变量只能在本函数范围内有效 D) 在一个函数内部的复合语句中定义的变量可以在本函数范围内有效57、下列程序的运行结果是( )main( ) int i=10; int *p=&i; i=8; printf(“%d”,*p); A)10 B)8 C)程序错误,不能运行 D)结果不确定58、C语言中,double类型的数据占字节数为( ) A) 1 B) 2 C) 4 D) 8 59、可在C程序中用作用户标识符的一组标识符是( ) A)as_b3 _123 If B) For -abc case C) 2c DO SIGD) void define W
18、ORD60、以下字符中,不正确的C语言转义字符是( )A) B) 018 C) Xaa D) t61、C语言中,数据在内存中都以( )形式存放A) 原码 B) 反码 C) ASCll码 D)补码62、下列运算符中,优先级最高的是( )A) & B) ! C) + D) |63、有输入语句:scanf (“a=%d ,b=%d ,c=%d” ,&a,&b,&c) ;为使变量a 的值为11,b 为12,c为13,则从键盘输入数据的正确形式应当是( )。A)11 12 13 B)11, 12, 13C)a=11 b=12 c=13 D) a=11, b=12, c=1364、为表示关系 -1x1应使
19、用的c语言表达式是( ) A) -1x1 B) -1=x&x=1 C) -1=x=-1&xb) return b; else return b; main( ) int x=3, y=8, z=6, r; r=fun (x, y+z); printf(%dn, r);程序运行后的输出结果是( )A) 3 B) 6 C) 8 D) 14 73、若有说明:int n=17,*p=&n,*q=p;,则以下非法的赋值语句是( )A) p=q; B) *p=*q; C) n=*q; D) p=n;74、 以下程序的功能是:按顺序读入10名学生4门课程的成绩,计算出每位学生的平均分并输出,程序如下: ma
20、in() int n,k; float score ,sum,ave; sum=0.0; for(n=1;n=10;n+) for(k=1;k=4;k+) scanf(“%f”,&score); sum+=score; ave=sum/4.0; printf(“NO%d:%fn”,n,ave); 上述程序运行后结果不正确,调试中发现有一条语句出现在程序中的位置不正确。这条语句是( ) A) sum=0.0; B) sum+=score;C) ave=sun/4.0; D) printf(“NO%d:%fn”,n,ave);75、数组定义为char a10=a,b,c;该数组包括的元素个数是(
21、)A) 3 B) 9 C) 4 D)1076、下面程序的输出结果是( )main ( ) int x = 2, y = -1,z = 2;if ( x y ) if ( y =a;p-) printf(%d,*p); 程序运行后的输出结果是( )A)0 1 2 3 4 5 6 7 8 9 B)2,3,4,5,6,7,8,9,10,1 C)0,1,2,3,4,5,6,7,8, 9, D)9,8,7,6,5,4,3,2,1, 0,78、 执行循环语句: for(x=y=0;y!=250|x4;x+)y+=50;其循环体执行的次数为( )A) 5 B) 4 C)3 D)2 79、如 int x=14
22、; 下列求商y(需小数结果)的表达式哪一个不对( )A) y=x/(5+.0) B) y=x/5. C) y=1.*x/5 D) y=x/5*1.080、设有以下程序段( )int x=0,s=0; while(!x!=0)s+=+x; printf(%d,s); 则 :A)运行程序段后输出0 B)运行程序段后输出1 C)程序段中的控制表达式是非法 D)程序无法运行81、有以下程序,程序运行后的输出结果是( )#includestdio.hvoid main() int i=0,j=2,m=3,n; n=i+=2&m+; printf(%d,%d,%d,%d n,i,j,m,n); A)2,2
23、,4,1 B)2,2,3,1 C) 1,2,4,1 D)2,1,3,182、下面程序的输出结果是( )#include void main() int i,x=1,y=0,a=0,b=0; switch(x) case 1:b+; case 2:a+;b+;break; case 3:a+;b+;printf(%d,%dn,a,b);A)2,1 B)2,2 C)1,2 D)4,2二、程序分析及填空1.C语言的基本数据类型中,有两种实数类型变量,一种是float型,另一种是( )型。2.若程序中有语句“scanf(“a=%d,b=%d”,&a,&b);”,在执行程序时,要输入3和5两个数,应该键
24、入( )。3.包含数学类库函数的头文件名称是( )。4.字符串“ab034x79”的长度为( )。5数组元素作函数参数进行的是 传递,数组名作函数参数进行的是_传递。6设有函数调用语句f(x1,x1x2,f1(x1,x2);则函数f()实参的数目有_个。7在数组int score10=1,2,3,4,5,6中,元素定义的个数有 个,其中score8的值为 。8.C语言源程序文件的后缀是 经过编译后,生成文件的后缀是 ,经过连接后,生成文件的后缀是 。结构化程序由 、 、 三种基本结构组成。9、C语言提供的三中逻辑运算符是_ 、_、_。 10、若a=1,b=4,c=3, 则表达式!(ab)|!c
25、&1的值是_ 。11、在C语言中,若对函数类型未加说明,则函数的隐含类型为 类型。12、在C语言中,唯一的一个三目运算符是 。13、以下程序运行后的输出结果是_。#include void main( ) int m=5; if (m+5)printf(%dn,m);else printf(%dn,m-);14、以下程序运行后的输出结果是 。#include void main() int x=15; while(x10 & x50) x+; if(x/3)x+;break; else continue; printf(%dn,x);15、下面程序的运行结果是: 。 #include stdi
26、o.h void swap(int *a,int *b) int *t; t=a; a=b; b=t; void main() int x=3,y=5,*p=&x,*q=&y; swap(p,q); printf(%d%dn,*p,*q); 16、在执行以下程序时,如果从键盘上输入:AdEf,则输出为 _ #includestdio.h void main() char ch; while (ch=getchar()!=n) if (ch=A&ch=a&ch=z)ch=ch-32; printf(%c,ch); printf(n);17设有以下宏定义,则执行赋值语句 a=PP*20;(a为in
27、t型变量)后,a的值是 。 #define PR 100 #define PP PR+40018、下列程序段的输出结果为 int x=10,y=1;y=y-|x+;printf(“%d,%d”,(y,x+),y);19、有以下程序#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+=aii;printf(%dn,s);程序运行后的输出结果是 程序的功能为 20、有以下程序 #include void main( ) int p=2, t=1; while(p
28、=5 ) t=t*p+;printf(%dn,t);该程序运行后变量p和t中的值分别为 。21、有以下程序 #include void main() int a,b,c=221;a=c/100%3;b=a&-1;printf(“%d,%d”,a+,b-); 该程序运行后的输出结果是 22、以下程序的输出结果为 。#include main() int a =1,2,3,4,5,6,*p=a; *(p+3)+=2;printf(“%d,%d”,*p,*(p+3); 23、以下程序的输出结果为 。#include stdio.hint x1=40,x2=70;void main( ) int x3
29、=50,x4=60; int sub(int x3,int x4); printf(%d,%dn,x1,x2);void sub(int x,int y) x1=x; x2=y;24、下面C程序的输出是: main() int m=6; if(m-0)f(n/10); void main() f(12);27、以下程序的输出结果是: #include stdio.hvoid main() int y; for(y=6; y0; y-) if(y%3=0) printf(%d, -y); continue; 28、在数组int score10=1,2,3,6中,score7的值为_。29、程序运
30、行后的输出结果是 #include stdio.hvoid main() int a=1,b=2;printf(%d,(a+,+b,(a+)+b);30、以下程序运行后的输出结果是 #include void main() int i,x33=1,2,3,4,5,6,7,8,9; for(i=0;i3;i+) printf(“%d”,xi2-i); 31. 以下程序运行后的输出结果是 #include main() int a=5,b=7,c;printf(“%dn”,c=ab);32. 以下程序运行后的输出结果是 #include stdio.hmain( ) int i,j,k=0,m=0
31、; for(i=0;i2;i+) for(j=0;j3;j+)k+; k-=j;m=i+j;printf(k=%d,m=%dn,k,m);33. 以下程序运行后的输出结果是 #include stdio.hswap(int *p1, int *p2) int p; p=*p1; *p1=*p2; *p2=p;main() int a=12,b=13; int *pointer_1,*pointer_2; pointer_1=&a; pointer_2=&b; if(ab)swap(pointer_1,pointer_2); printf(n%d,%dn,a,b);34. 以下程序运行后的输出结果是 #include stdio.h