1、高级语言程序设计期末考试试卷及答案( E卷)2005-2006学年上学期考试科目:考试类型:(闭卷)考试时间:120分钟考试须知:1 答案必须写在“答题卡”上,写在试卷上不得分。2 必须在答题卡上正确填写班级、学号、姓名等内容。一、选择题(共20小题,每小题1分)1. 下列C常量中不合法的是( ) A.500 B.0500 C.500 D.5002. C语言中,若对函数类型未加显示说明,则函数的隐含类型为( )类型Avoid BintC空 Dchar3. C语言程序的三种基本结构是( )A. 嵌套结构、递归结构、顺序结构 B.递归结构、循环结构、转移结构C. 顺序结构、选择结构、循环结构 D.
2、循环结构、转移结构、顺序结构4. 一个可执行C程序的开始执行点是( )A名为main()的函数 B包含文件的第一函数C程序中的第一个语句 D程序中的第一个函数5. 下面程序段的执行结果是( )int a=5, b=4, c=3;if(abc)printf(abc);elseprintf(no);Aabc BnoC编译错误 D运行错误6. 合法的数组定义是( )Aint a = “string” Bint a5 = 0,1,2,3,4,5 Cchar a = 0,1,2,3,4,5 Dchar s = “string”7. 在C语言中,提供的合法关键字是( )Aprintf Bcher Ccas
3、e DElse8. 在C语言中,合法的字符常量是( )A081 B0 Cab D”a”9. putchar函数可以向终端输出一个( )。 A)字符串 B)实型变量值 C)整型变量表达式 D)字符或字符型变量10. 在C语言中,一个char变量占( )字节。 A1 B2 C4 D811. 调用scanf(“%d,%d”,&a,&b);时,正确的键盘输入是( ) A12,23 B a=12,b=23 C12:23 D 12 2312. 若有int s4 = 1,2,3,4;,则ss0+ s3-s2 的值是( ) A 1 B 2 C 3 D 413. 在C语言中,一般1个float类型变量占4个字节
4、,则设float x24;假设数组x开始于内存1000单元,则x12的存储始于( ) A.1004 B.1012 C.1020 D.102414. 下面对C语言运算符的优先级叙述正确的是( )。A !(非) 关系运算符 算术运算符 &(与) |(或) 赋值运算符B !(非) 算术运算符 关系运算符 &(与) |(或) 赋值运算符C 算术运算符 关系运算符 !(非) &(与) |(或) 赋值运算符D 算术运算符 !(非) 关系运算符 &(与) |(或) 赋值运算符15. 若有代数式,则正确的C语言表达式是( )A x2*y/3*b*cBx*x/b/c*y/3C x*x*y/3*b*cDx2*y/
5、3/b/c16. 已知a=48, b=0, ch = a 则表达式(a=b & (ch=b) & !b)的值是( )。A0B1C真D非017. 设x、y均为整型变量,且x=10,y=3,则以下语句的输出结果是()printf(“%d,%dn”,x-,-y); A)10,3 B)9,3 C)9,2 D)10,218. 在switch语句中,执行完一个case分支后要使流程跳出switch结构,应使用( )语句。 Acontinue B break Celse D return19. 设有如下程序段 int k=1; while(k)k+; 则下面描述中正确的是( )。 A循环体一次也不执行 B
6、循环是无限循环 C循环体语句执行多次 D 循环体语句执行1次20. 下面标识符中,不合法的用户标识符为 ( ) A structB c_10 C _1234 D Int二、看程序写结果题(共8题,共30分,前两题各3分,其它题各4分)1 #include stdio.h main() float a = 5.4; int b, c=25, d; b = a * 3; d = c/10; printf(b=%d, d=%dn, b, d);程序执行结果为:2 #include stdio.h main() char grade;grade = C;switch (grade) case A: p
7、rintf(excellencen); case B: printf(passn); case C: printf(failn); default: printf(errorn); 程序执行结果为:3. #include stdio.h int x=10; int func(int y)y=x+y;return(y); main() int x=15,y=15,z;z=func(y);printf(x=%d,y=%d,z=%d,x,y,z); 程序执行结果为:4. #include stdio.h#include string.hmain() char a20=”ABC123xyzABC”;i
8、nt i;for (i=0;i=97 & ai=125) printf(“%c”, ai);备注:字母A的ASC码是65,字母a的ASC码是97,数字1的ASC码是49。程序执行结果为:5. #include stdio.hmain() int a10=1,2,3,4,5,6,7,8,9,10; int i;for (i=0;i=4;i+) ai=a9-i; a9-i=ai;for (i=0;i10;i+)printf(%d ,ai); 程序执行结果为:6. #include stdio.h#include math.hmain()int i,t,p;for (i=-2; i=2; i+) f
9、or (p=0; pabs(i); p+)printf (z);for (t=abs(i)-2; tb )a = a - b;elseb = b - a;printf(%dn, a);main()func( 24, 16);func( 413, 177);func( 35676, 864);程序执行结果为:三、看程序填空题(共25个小空,每空1分)1. 下面程序实现由键盘输入3个数a、b、c,要求按由小到大的顺序输出,请填空。#include stdio.hmain()float a,b,c,t;scanf(%f,%f,%f, (1) );if ( a b )t=a; a=b; b=tif (
10、 a c )t=a;a=c; c=tif ( (2) ) (3) printf(%5.2f,%5.2f,%5.2fn,a,b,c);2. 下面程序判断某一年是否闰年,请填空。#include stdio.hmain()int year,leap;scanf(%d, (4) );if( (5) )if ( year%100= =0)if( year%400= =0) (6) ;else (7) ;else (8) ;elseleap = 0;if( leap )printf(%d is ,year);elseprintf(%d is not ,year);printf(a leap year.)
11、;3.下面程序实现求出数组元素中的最大值,请填空。#include stdio.hmain()int c10=78,45,175,251,249,34,9,179,50,210;int i,max;_(9)_;for(i=1; _(10)_;i+)if(_(11)_)max = ci;printf(max = %dn, max);4. 下面是求圆周率的程序,请填空。注:计算公式是:当括号中的最后一项的绝对值小于等于时,忽略以后的项。#include stdio.h#include math.hmain()float pi, b; /* 变量b表示括号中的运算项值 */int sign, a;
12、/* 变量sign, a分别表示括号中的运算项正负符号及分母值 */ (12) ;/*给有关变量赋初值 */dob= (13) ;pi=pi+b;a=a+2;sign= (14) ; while (fabs(b) (15) );pi =pi*4;printf(“the result is %fn”, (16) );5. 下面程序,实现输出600到800之间的所有素数,请填空。#include stdio.h#include math.h (17) su( (18) )int flag = 1,i;for (i=2; (19) ; i+)if ( (20) )flag = 0;break;ret
13、urn (21) ;main()int t;for (t=600; t=800;t+)if (su(t)printf(%dn, t);6. 下面程序实现由键盘输入20个整数,统计不同数字的个数,请填空。(比如,由键盘输入,70 5 14 22 19 2 99 67 13 66 5 93 44 38 22 11 39 22 33 11共16个不同数字,因为5有1个重复数字,11有1个重复数字,22有2个重复数字)#include stdio.hmain()int a20;int num=0, i, j;for (i=0; ic (3) t=b;b=c;c=t 2 (4) &year (5) ye
14、ar%4= =0 (6) leap=1 (7) leap=0 (8) leap=1 3(9) max = c0; (10) i10 (或i=9) (11) max max,或max=max) 4 (12) sign=1;a=1;pi=0 (13) 1.0*sign /a (14) -sign (15) 1e-6 (16) pi 5 (17) int (18) int n (19) i=sqrt(n) (或in) (20) n%i=0 (21) flag 6 (22) &ai (23) ji (24) ai=aj (25) num+ 四、编程题(共4题)1. (5分)#include stdio
15、.hmain()char sex;float score;scanf(%c,%f, &sex, &score);if (sex=M)if (score=15.6) printf(合格);else printf(不合格);else if(sex = F)if (score=18.2) printf(合格);else printf(不合格);开始s=0; i=1s=s+1.0/ii=n?结束输出si=i+1YN2. (8分)流程图:程序:#include stdio.hmain()float s=0;int n, i;scanf(%d, &n);for (i=1; i=n; i+)s = s+1.
16、0/i;printf(sum=%f, s);3. (6分)#include stdio.hmain()char ch;int sz=0,zm=0,qt=0;while(ch=getchar()!=n)if (A=ch & ch=Z | a=ch & ch=z)zm+;else if (0=ch & ch=9)sz+;elseqt+;printf(zm=%d,sz=%d,qt=%dn, zm, sz, qt);4. (6分)#include stdio.hmain()float a32, t;int i,j;for(i=0;i32;i+)scanf(%f,&ai) ;for(i=0; i31; i+)for(j=0;j31-i;j+)if (ajaj+1)t=aj; aj=aj+1; aj+1=t;for(i=0;i32;i+)printf(%fn,ai);