高级语言程序设计期末考试试卷及答案(-E卷)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
高级语言程序设计期末考试试卷及答案( 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<strlen(a);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<abs(i); 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. 下面是求圆周率的程序,请填空。
注:计算公式是:
+-+-≈71513114π 当括号中的最后一项的绝对值小于等于610-时,忽略以后的项。
#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<c[i] (或c[i]> max,或max<=c[i],或c[i]>=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) (或i<n)(20) n%i==0
(21) flag
6.
(22) &a[i](23) j<i
(24) a[i]==a[j](25) num++
四、编程题(共4题)
1. (5分)
#include "stdio.h"
main()
{
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("不合格");
}
2. (8分)
程序:
#include "stdio.h"
main()
{
float s=0;
int n, i;
scanf("%d", &n);
for (i=1; i<=n; i++)
s = s+1.0/i;
printf("sum=%f", s);
}
3. (6分)
#include "stdio.h"
main()
{
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++;
else
qt++;
}
printf("zm=%d,sz=%d,qt=%d\n", zm, sz, qt);
}
4. (6分)
#include "stdio.h"
main()
{
float a[32], t;
int i,j;
for(i=0;i<32;i++)
scanf("%f",&a[i]) ;
for(i=0; i<31; i++)
{
for(j=0;j<31-i;j++)
if (a[j]<a[j+1])
{t=a[j]; a[j]=a[j+1]; a[j+1]=t;}
}
for(i=0;i<32;i++)
printf("%f\n",a[i]);
}。