高级语言程序设计期末考试试卷及答案(-E卷)
高级语言程序设计期末考试试卷及答案( E卷)2005-2006学年上学期考试科目:
考试类型:(闭卷)考试时间:120分钟
考试须知:
1.答案必须写在“答题卡”上,写在试卷上不得分。
2.必须在答题卡上正确填写班级、学号、姓名等内容。
一、选择题(共20小题,每小题1分)
1. 下列C常量中不合法的是( )
A.'\500'
B.0500
C.'500'
D."500"
2. C语言中,若对函数类型未加显示说明,则函数的隐含类型为()类型
A.void B.int
C.空D.char
3. C语言程序的三种基本结构是()
A. 嵌套结构、递归结构、顺序结构
B.递归结构、循环结构、转移结构
C. 顺序结构、选择结构、循环结构
D.循环结构、转移结构、顺序结构
4. 一个可执行C程序的开始执行点是()
A.名为main()的函数B.包含文件的第一函数
C.程序中的第一个语句D.程序中的第一个函数
5. 下面程序段的执行结果是()
int a=5, b=4, c=3;
if(a>b>c)
printf("a>b>c");
else
printf("no");
A.a>b>c B.no
C.编译错误D.运行错误
6. 合法的数组定义是( ) A .int a[] = “string ” B .int a[5] = {0,1,2,3,4,5} C .char a[] = {0,1,2,3,4,5} D .char s = “string ”
7. 在C 语言中,提供的合法关键字是( ) A .printf B .cher C .case D .Else
8. 在C 语言中,合法的字符常量是( ) A .’\081’ B .’\0’ C .’ab ’ D .”a ”
9. putchar 函数可以向终端输出一个( )。 A)字符串 B)实型变量值
C)整型变量表达式 D)字符或字符型变量
10. 在C 语言中,一个char 变量占( )字节。 A .1 B .2 C .4 D .8
11. 调用scanf(“%d,%d ”,&a,&b);时,正确的键盘输入是( ) A .12,23 B . a=12,b=23 C .12:23 D . 12 23
12. 若有int s[4] = {1,2,3,4};,则s[s[0]+ s[3]-s[2]] 的值是( ) A . 1 B . 2 C . 3 D . 4
13. 在C 语言中,一般1个float 类型变量占4个字节,则设float x[2][4];假设数组
x 开始于内存1000单元,则x[1][2]的存储始于( )
A.1004
B.1012
C.1020
D.1024
14. 下面对C 语言运算符的优先级叙述正确的是( )。 A . !(非) > 关系运算符 >算术运算符 > &&(与) > ||(或) > 赋值运算符 B . !(非) > 算术运算符 > 关系运算符 > &&(与) > ||(或) > 赋值运算符 C . 算术运算符 > 关系运算符 > !(非) > &&(与) > ||(或) > 赋值运算符 D . 算术运算符 >!(非) >关系运算符 > &&(与) > ||(或) > 赋值运算符
15. 若有代数式bc
y x 32,则正确的C 语言表达式是( )
A . x^2*y/3*b*c
B .x*x/b/c*y/3
C . x*x*y/3*b*c
D .x^2*y/3/b/c
16. 已知a=48, b=0, ch = 'a' 则表达式(a>=b && (ch='b') && !b)的值是()。
A.0 B.1 C.真D.非0
17. 设x、y均为整型变量,且x=10,y=3,则以下语句的输出结果是()
printf(“%d,%d\n”,x--,--y);
A)10,3 B)9,3 C)9,2 D)10,2
18. 在switch语句中,执行完一个case分支后要使流程跳出switch结构,应使用()
语句。
A.continue B. break
C.else D. return
19. 设有如下程序段
int k=1;
while(k)
k++;
则下面描述中正确的是()。
A.循环体一次也不执行 B.循环是无限循环
C.循环体语句执行多次 D.循环体语句执行1次
20. 下面标识符中,不合法的用户标识符为()
A. struct B. 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=%d\n", b, d);
}
程序执行结果为:
2. #include "stdio.h"
main()
{
char grade;
grade = ’C’;
switch (grade)
{ case 'A': printf("excellence\n");
case 'B': printf("pass\n");
case 'C': printf("fail\n");
default:
printf("error\n");
}
}
程序执行结果为:
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.h"
main()
{
char a[20]=”ABC123xyzABC”;
int i;
for (i=0;i if(a[i]>=97 && a[i]<=125) printf(“%c”, a[i]); } 备注:字母A的ASC码是65,字母a的ASC码是97,数字1的ASC码是49。 程序执行结果为: 5. #include "stdio.h" main() { int a[10]={1,2,3,4,5,6,7,8,9,10}; int i; for (i=0;i<=4;i++) { a[i]=a[9-i]; a[9-i]=a[i]; } for (i=0;i<10;i++) printf("%d ",a[i]); } 程序执行结果为: 6. #include "stdio.h" #include "math.h" main() { int i,t,p; for (i=-2; i<=2; i++) { for (p=0; p printf (" "); for (t=abs(i)-2; t<=2-abs(i); t++) { printf("%d", abs(i)+abs(t)+1); } printf("\n"); } } 备注: 表示空格 程序执行结果为: 7. #include "stdio.h" int f ( int n ) { int c; if ( 1= = n ) c = 1; else if ( 2= = n ) c = 3; else c = 3*f (n-1)-f (n-2); return c; } main() { printf ( "%d\n", f (1) ); printf ( "%d\n", f (3) ); printf ( "%d\n", f (6) ); } 程序执行结果为: 8. #include "stdio.h" void func(int a, int b) { while( a != b ) { if ( a>b ) a = a - b; else b = b - a; } printf("%d\n", a); } main() { func( 24, 16); func( 413, 177); func( 35676, 864); } 程序执行结果为: 三、看程序填空题(共25个小空,每空1分) 1. 下面程序实现由键盘输入3个数a、b、c,要求按由小到大的顺序输出,请填空。 #include "stdio.h" main() { float a,b,c,t; scanf("%f,%f,%f",(1)); if ( a> b ) {t=a;a=b;b=t} if ( a> c ) {t=a;a=c;c=t} if ( (2)) { (3)} printf("%5.2f ,%5.2f ,%5.2f\n",a ,b ,c); } 2. 下面程序判断某一年是否闰年,请填空。 #include "stdio.h" main() { int year ,leap ; scanf("%d", (4) ); if( (5) ) {if ( year%100= =0) {if( year%400= =0) (6) ; else (7) ;} else (8) ;} else leap = 0; if( leap ) printf("%d is ",year); else printf("%d is not ",year); printf("a leap year."); } 3.下面程序实现求出数组元素中的最大值,请填空。 #include "stdio.h" main() { int c[10]={78,45,175,251,249,34,9,179,50,210}; int i,max; ______(9)________; for(i=1; ______(10)________;i++) if(______(11)________ ) max = c[i]; printf("max = %d\n", max); } 4. 下面是求圆周率的程序,请填空。注:计算公式是: +-+-≈7 1 513114π 当括号中的最后一项的绝对值小于等于6 10-时,忽略以后的项。 #include "stdio.h" #include "math.h" main() { float pi, b; /* 变量b表示括号中的运算项值 */ int sign, a; /* 变量sign, a分别表示括号中的运算项正负符号及分母值*/ (12);/*给有关变量赋初值 */ do { b= (13); pi=pi+b; a=a+2; sign= (14) ; } while (fabs(b) (15) ); pi =pi*4; printf(“the result is %f\n”, (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; } } return (21); } main() { int t; for (t=600;t<=800;t++) if (su(t)) printf("%d\n",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.h" main() { int a[20]; int num=0,i,j; for (i=0;i<20;i++) { scanf("%d",(22)); for (j=0;(23);j++) if ( (24)) break; if (j= =i) (25); } printf("%d",num); } 四、编程题(共4题) 1. (5分)李峰是一位体育老师,希望你帮他编一个程序,实现输入一个学生的性别与100米跑成绩,程序自动判断,合格则输出“合格”,否则输出“不合格”。性别男、女分别用大写字母M与F表示。100米跑成绩以秒为单位,对于男生的合格要求是小于等于15.6秒,对于女生的合格要求是小于等于18.2秒。 比如,键盘输入: M 13.8 程序输出: 合格 2. (8分)由键盘输入n,计算1 + 1/2 + 1/3 + 1/4 + …+ 1/n,并输出结果,要求: (1)画出实现上述功能的算法流程图; (2)编写实现上述功能的程序; 3. (6分)编写程序,实现由键盘输入一行字符,统计字母个数、数字个数、其它符号个数,并输出统计结果。 4. (6分)上学期数学测验成绩(保留一位小数)出来了,班长小李想将班里32位学生的成绩按由高到低的顺序进行排列,想请你帮忙编一程序实现该功能。(注:32位学生的成绩在程序运行时从键盘输入,一行一个,输出结果时,按顺序一行一个输出排序后的成绩。) 答案 一、选择题(每小题1分,共20分) 二、看程序写结果题(共30分,前两题各3分,其它题各4分) 1. b=16, d=2 2.fail error 3. x=15,y=15,z=25 4. xyz 5. 10 9 8 7 6 6 7 8 9 10 6. 3 323 32123 323 3 7. 1 8 144 8. 8 59 36 三、看程序填空题(共25个小空,每空1分) 1. (1) &a, &b, &c (2) b>c (3) t=b;b=c;c=t 2. (4) &year (5) year%4= =0 (6) leap=1(7) leap=0 (8) leap=1 3. (9) max = c[0]; (10) i<10 (或i<=9) (11) max (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