武汉大学计算机学院2A_武汉大学计算机学院
武汉大学计算机学院2A由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“武汉大学计算机学院”。
武汉大学计算机学院
2005-2006学年度第2学期2005级
《高级语言程序设计》期末考试试卷A卷
姓名:学号:专业:说明:未经主考教师同意,考试试卷、答题纸、草稿纸均不得带离,否则视为违规。
(选择最合适的答案填空,每小题2分,共20分)A.Case B._12 C.else D.eve()1. 下面的文字中是不正确的变量名。
()2. 下面的四个选项中,正确的字符型常量是______。
A.‘68’ B.‘t’ C.“n” D.‘xdh’
()3. 表达式sizeof(float)的结果为类型。
A.单精度 B.双精度 C.整型 D.不合法的()4. 设有变量定义:int m=0,n=0;则执行表达式(m-->=0)||(n++
的值为______。
A.-1和0 B.-1和1 C.0和0 D.0和
1()5. C语言的编译系统对宏命令是
A.在程序执行时处理的C.和源程序其他语句一起编译 B.在程序连接时处理的 D.在对源程序中其它成分正式编
译之前进行处理的()6. 以下正确的程序语句段为。
A.char s1[]=”123456”,s2[]=”abcdef”;strcat(s1,s2);
B.char *s1=”1234”,*s2=”abcde”;strcpy(s1,s2);
C.char*s1,*s2=”1234”;strcpy(s1,s2);
D.char s1[10]=””,s2[5]=”1234”;strcat(s1,s2);
()7. 设int a[3][4],(*p)[4];p=a;则表达式*(p+1)等价于。
A.&a[0][1] B.a+1 C.&a[1][0] D.a[1][0]
()8. 如果执行打开文件函数fopen()时发生错误,该函数返回值为________。
A.EOF B.NULL C.-1 D.随机值
()9. 若有以下说明和语句,则下面四个选项中对ttd中lab域的正确引用方
式是
struct example{
char lab;
int num;
}ttd, *p;
p=&ttd;
A.(*p).lab B.p->ttd.lab C.(*p).ttd.lab D.p.ttd.lab
()10. 表达式(int)(6.8+7/2)的结果是。
A.10 B.9 C.11 D.8
二. 文字填空(共15分)
1. break语句出现在循环语句中的作用是______________。
2. 如果int类型数据在内存中占据2个字节,则int类型数据取值范围为
从_________到___________。
3. 在C语言中,全局变量定义时在数据类型前面增加前缀static,则表示
该变量仅在__________内有效。
4. 设x、y为char类型变量,请写出以下命题:
(1)x和y都为大写字母_________________________________
(2)x和y中至少一个是数字______________________________
5. 假设a=3,b=7,c=5,则表达式a
则表达式q-p的结果等于____________。
7. 库函数malloc(sizeof(long))的作用是_
_________。
8. 表达式10&12的结果等于。
三. 程序填空(请在空白处填写合适内容以正确完成整个程序,共10
分)
1. 以下程序的功能是:统计100到1000之间各位数字之和为8的数据个数。#include
void main()
{ int i,s,k,count=0;
for(i=100;i
{)
{ s=s+k%10;
}
if(s!=8)
count++;
}
printf(“%d”,count);
}
2.下面程序的功能是:从一个字符串中删除指定字符,例如,从字符串”Prolog”中删除字符’o’,则结果为”Prlg”。
#include
{ int i=0,j;
while(⑦)
{if(s[i]==c)
{j=⑧;
while(⑨)
{ s[j]=s[j+1];
j++;
}
}
else
⑩;
}
void main(void)
{ char s[20],c;
gets(s);
getchar(c);
deletechar(s,c);
puts(s);
}
四. 程序阅读与分析(共10分)
1.分析以下程序执行流程,并写出下列程序的运行结果。
#include
int x=0;
int fat(int n)
{static int f=0;
x+=2;
f=f+n;
return(f);
}
void main(void)
{int i,j;
for(i=3;i
{printf(“%dt”,fat(i));
printf(“%dn”,x);
}
}
2.阅读以下递归函数,假设有如下定义:int a[6]={6,1,4,7,4,0};分析进行
printn(a)调用时程序运行过程;并写出该调用产生的运行结果。
#include
void printn(int *x)
{ if(*x!=0)
printn(x+1);
if(*x%2)printf(“%d,”,*x*2);
else printf(“%d,”,*x);
}
五.
1.子程序设计(每小题15分,共30分)本题说明:完成函数设计时,请自行说明所有的形式参数的类型 设计一个函数getnum(s,&n),字符串s是十六进制字符串,函数getnum
统计s的字符个数并作为函数值返回,另外n返回s对应的十进制整数数据值。
例如,有如下定义,char s[]=”12a”,n,m;
则有函数调用m=getnum(s,&n)后,m的值为3,n的值为298即等于1×162+2×16+10=298。
2.设计一个函数rightarr(a, m, n),a为一维整数数组(数组元素的个
数为m),该函数实现数组a的循环左移n位。
例如:有如下定义,int a[5]={1,2,3,4,5};
则,rightarr(a,5,2)调用完成后,数组a的内容为{3,4,5,1,2}。六.
说明:
算法设计(选做一题15分)仅需任意选做一题。多选者,以卷面先列出的为判分依据; 分析思路、重要数据类型的定义、模块的功能、形式参数、函数返回值说明; 用伪代码或其它方法描述子程序; 不必完整写出函数程序的代码,完整代码将不作为判分依据。
1.函数link(h,n),其中h 是一个由整数组成的从小到大排列的有序单链
表,n为整数。函数link实现把n按照顺序插入到链表h中,函数返回值为完成插入n之后的有序链表中结点个数。
具体要求如下:
A)说明链表结点类型的C语言定义形式;
B)给出函数link(h,n)的原型。
C)描述函数的算法。
2.任意输入一个年、月、日,编程实现判断该日期是星期几。
具体要求如下:
D)说明如何表示一个日期数据,以及星期一到星期天;
E)说明程序中划分多少模块?并给出每个模块的原型;
F)描述每个模块的算法。