中国海洋大学全日制本科课程期末考试试卷
_2014_年 秋 季学期 考试科目: 高级程序设计语言 学院: 信息学院 _ 试卷类型: A 卷 命题人: _ _ 审核人:________ _ ------------------------ - -- :--号----
室----教----考试说明:本课程为闭卷考试,共_3_页,只能携带考场规定的必需用品。 场--考-----线
-线 -- --题号 一 二 三 四 总分 -- -- -- -- --得分 -- -- -- --注意:第一、二、三题直接写在试卷上,第四题写在答题纸上!
--:----一、单项选择题(共 10 题,每题 2 分,共 20 分)
师----1. 若有int x=3,y=2; 执行语句x*=y+8;后,x,y的值分别为_______。
教----课-- (A) 14 10 (B) 14 2 (C) 30 10 (D) 30 2 授----2. 若有int a=3,b=2; 则表达式a/b+a%b的值为_______。 -- -- - (A) 2 (B) 2.5 (C) 0.5 (D) 0
- -- --3. 若有int x=0,y=2,z=1; 则表达式!x+y>z的值为_______。 - 订 -订 (A) 0 (B) 1 (C) 2 (D) 3
-- --4. 若有int a,b=1,c=2; 执行语句a=(b>c)?b++:c++;后,a+b+c的值为_______。 -- -- (A) 4 (B) 5 (C) 6 (D) 7
--:级----5. 若有long a=0; 执行语句while(!a) a+=sizeof(a); 后,a的值为_______。 年----业-- (A) 0 (B) 4 (C) 8 (D) 死循环
--专-- -6. 以下能正确定义数组并正确赋初值的语句是_______。 - -- (A) int a[1][2]={{1},{3}}; (B) int N=5,b[N][N];
-- -- -- (C) int c[2][]={{1,2},{3,4}}; (D) int d[3][2]={{1,2},{3}};
-- -- --7. 在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是_______。 -- -- (A) 单向值传递 (B) 由实参传给形参,再由形参传回实参 -- -- -- (C) 按地址传递 (D) 传递方式由用户指定 --:--8. 若有定义:char *p=\"abc”; 以下输出语句中不正确的为_______。 名---姓装 (A) printf(“%s”,p); (B) printf(“%s”,p+2); -装 -- (C) printf(“%c”,p); (D) printf(“%c”,*p+2);
-- -- --9. 若有定义:struct s1{int a; int b;} data,*p; 能使p指向data的正确赋值语句是_______。 -- -- (A) p=(struct s1*)&data.a; (B) p=data;
-- -- -- --(C) p=(struct s1*)&data.b; (D) *p=&data;
-- --10.若要打开D盘user子目录下名为abc.txt的文本文件进行读写操作,正确的是_______。 -- :--号--- (A) fopen(\"D:\\abc.txt\
学 (B) fopen(\"D:\\\\\\abc.txt\
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +---------------------------------------------------------------------------------------------------------------------------
第1页 共3页 + (C) fopen(\"D:\\abc.txt\ (D) fopen(\"D:\\\\\\abc.txt\
二、程序分析题 (共 3 题,每题 10 分,共 30 分)
1. 请分析下面程序并写出程序的执行结果。
#include { int a[][3]={1,2,3,4,5,6}; int *p1[]={a[0],a[1]},**p2=p1; p2++; (*p2)++; (**p2)++; printf(\"%d\\n\ 输出结果为: } 2. 请分析下面程序并写出程序的执行结果。 #include int solve(int hidth,int up,int down) { if(hidth<=up) return(1); else return(solve(hidth-up+down,up,down)+1); } void main() { int high=10,up=5,down=3,day; day=solve(high,up,down); printf(\"Need %d days!\\n\输出结果为: } 3. 请分析下面程序并写出程序的执行结果。 #include { char i,j,k; for(i='X';i<='Z';i++) { if(i=='X') continue; for(j='X';j<='Z';j++) { if(j==i||j=='X'||j=='Z') continue; for(k='X';k<='Z';k++) { if(k==i||k==j) continue; printf(\"A--%c, B--%c, C--%c\\n\ } } } 输出结果为: } 三、程序填空题(共 2 题,每空 4 分,共 20 分) 1. 下面程序实现了将输入的字符串逆序输出的功能,请仔细阅读并补充完整。 #include void reverse(char *p1,int n) { char ch,*p2; p2= ① ; ① while( ② ) { ch=*p1; ② +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 第2页 共3页+ 学号: 姓名: 专业年级: 授课教师: 考场教室号: 座号: } *p1++=*p2; *p2--=ch; } -------------------------------装装-------------------------------- --------------------------订订------ ------------------------------------------------线线------------------------------------------------ -void main() { char str[N]; gets(str); reverse(str,strlen(str)); puts(str); } 2. bi_search函数是一个使用“折半查找法”在长度为n的一维有序(从小到大)数组a中查找指定数据x的子函数,若找到,函数返回该数据在数组中的下标;否则返回-1。请仔细阅读并补充完整。 int bi_search(int a[],int n,int x) { int bot,mid,top,find=0; bot=0;top=n-1; do { mid=(bot+top)/2; if(a[mid]==x) find=1; else if(a[mid]>x) top= ① ; ① else bot= ② ; }while( ③ && find==0); ② if (find) return(mid); ③ else return(-1); } 四、程序设计题(共 2 题,第1题 10 分,第2题20分,共 30 分) 1. 请编写一个程序,输出所有的“水仙花数”。(所谓“水仙花数”是指一个三位数,其各个数位上数字的立方和等于该数本身。例如:153是一个“水仙花数”,因为153153) 2. 现有一个单向链表,已按结构体成员项num从小到大的顺序(严格单调,没有相等数据)排序,链表中结点的结构如下: struct data { long num; struct data *next; }; (1) 请编写一个insert子函数,实现向链表中插入一个节点后,链表依然保持原有顺序的功能。insert函数的首部及形参说明如下: struct data *insert(struct data *head,struct data *p0) head:链表的头指针; p0:指针,指向将要插入的结点,且该结点的num成员项已被正确赋值。 (2) 请编写一个del子函数,实现在链表中删除一个结点后,链表依然保持原有顺序的功能。del函数的首部及形参说明如下: ---------------------------------------------------------------------------------------------------------------- 第3页 共3页 + ----------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------333 struct data *del(struct data *head, long x) head:链表的头指针; x:整型数据,若x与链表中的某个结点num成员项的值相等。则从链表中删除该结点。 +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 第4页 共3页+
因篇幅问题不能全部显示,请点此查看更多更全内容