《高级语言程序设计》期末考试试卷
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
武汉大学计算机学院
2006-2007学年度第2学期2006级
《高级语言程序设计》期末考试试卷A卷
姓名:学号:专业:
说明:开卷考试,答案请全部写在答题纸上,写在试卷上无效。
一.单项选择题:(选择最合适的答案填空,每小题2分,共16分)
()1、在执行以下程序时,从键盘上输入9,则该程序输出结果是__________。
#include
int main( )
{ int n;
scanf("%d",&n);
if(n++<10)
printf("%d\n",n);
else
printf("%d\n",n--);
return 0;
}
A、8
B、9
C、10
D、11
()2、表达式0156637&~0777的结果是____________。
A、0156000
B、156000
C、0637
D、637
()3、假设有如下定义:int m=1,n=1; 则执行表达式(m=’5’<’3’)&&(n=’7’>’9’)后,m和n的值分别是_____________________。
A、1和1
B、1和0
C、0和1
D、0和0
()4、表达式-11%3+7/2的结果是____________。
A、5.5
B、5
C、1.5
D、1
()5、设有如下宏定义:
#define BOOK(x) 8-x
则执行赋值语句v=BOOK(2)*BOOK(4); /*v为int型变量*/
后,变量v的值为。
A、-12
B、0
C、24
D、44
()6、设有如下定义:
int a[6][4]; int (*p)[4]; p=a;
则与表达式*p+3等价的选项是_________。
A、a[0][3]
B、&a[0][3]
C、a[3][0]
D、&a[3][0]
()7、假设有以下定义:
static char *a=”h\te\nY\0W\0o\b”;
则表达式strlen(a)的结果为________。
A、15
B、10
C、7
D、5
()8、假设有如下定义:
int a=1,b=2,c=3,u,v;
执行下面语句组后,整型变量u和v的值分别为_____________。
u = a ? b : c;
v = (a = 2) ? b + a:c + a;
A、3和3
B、3和4
C、2和3
D、2和4
二.程序阅读与分析(每小题8分,共24分)
9、分析下面程序执行流程,指出程序执行结果。
#include
int main()
{ int i;
for(i=1;i<=6;i++)
switch (i%5)
{ case 0: printf(“*”);break;
case 1: printf(“#”);break;
default: printf(“\n”);
case 2: printf(“&”);
}
return 0;
}
10、下面程序完成的功能如下:输入一个由10个整数组成的数组a,将该数组下
标值为偶数的元素由小到大排序,将下标值为奇数的元素由大到小排序。
例如,输入数组a为{8,1,6,3,4,5,2,7,0,9},执行下面程序后,数组a为
{0,9,2,7,4,5,6,3,8,1}。
请在空白处填写合适内容以正确完成整个程序。
#include
int main()
{ (1) a[10],n;
int i,j,t;
for(i=0;i<10;i++)
scanf("%d", (2) );
for(i=0;i<7;i+=2)
for(j= (3) ;j<10; (4) )
{ if( (5) )
{ t=a[i]; a[i]=a[j]; a[j]=t; }
if( (6) )
{ t=a[i+1]; a[i+1]=a[j+1]; a[j+1]=t;}
}
for(i=0; (7) ;i++)
printf("%d\t", (8) );
return 0;
}
11、分析以下程序执行流程,请指明错误之处,并简要说明错误原因,并给出修
改意见。(共4个错误)
/*输入多个整数,以0作为结束标记,将这些整数存入到Exam.dat文件中*/ /*然后将这些数据从Exam.dat文件中读出来,显示到显示器上*/
#include
#include
int main()
{
File *fp;
if((fp = fopen("Exam.dat","w"))==NULL)
{ printf("open file error!");
exit(1);
}
do
{ scanf("%d", p);
fprintf(fp,”%d ”,p);
}while(p!=0);
fclose(fp);
if((fp = fopen ("Exam.dat","r")) == NULL)
{ printf("open file error!");
exit(1);
}
do
{ fscanf(fp,"%d",p);
printf("%6d\t",p);
}while(p!=0);
fclose(fp);
return (0);
}
三.程序测试与分析(每小题5分,共15分)
12、以下程序计算-32768-3,执行以下程序,得到如下所示的运行结果,请分析结
果为什么不是-32771?并指出该如何修改。
#include
int main()
{ short int a,b;
a=-32768;
b=a-3;
pr intf("a=%d,b=%d\n",a,b);
}
运行结果: