|
学习中心/函授站_ 姓 名 学号 西安电子科技大学网络与继续教育学院 2016学年下学期 《高级语言程序设计(C)》期末考试试题 (综合大作业) 附件就是标准答案,需要的请自助下载
考试说明: 1、大作业于2016年10月20日下发,2016年11月5日交回; 2、考试必须独立完成,如发现抄袭、雷同均按零分计; 3、答案须手写完成,要求字迹工整、卷面干净。
一、选择题(每题2分,共40分) 注意:须将本题的答案填入下表,否则不计分数。 1、以下有4组用户标识符,其中合法的一组是 A.For -sub Case B.4d DO Size C.f2_G3 IF abc D.WORD void define 2、若有下面的程序片段: int a[12]={0}, *p[3], **pp, i; for(i=0; i<3; i++) p=&a[i*4]; pp=p; 则对数组元素的错误引用是 A.pp[0][1] B.a[10] C.p[3][1] D.*(*(p+2)+2) 3、若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为 A.a<>0 B.!a C.a=0 D.a 4、若已定义: int a[ ]={0,1,2,3,4,5,6,7,8,9], *p=a,i; 其中0≤i≤9, 则对a数组元素不正确的引用是 A.a[p-a] B.*(&a) C.p D.a[10] 5、以下程序的输出结果是 int main( ) { int x=10,y=10,I; for(i=0;x>8;y=++i) printf("%d,%d ",x--,y); } A.10 1 9 2 B.9 8 7 6 C.10 9 9 0 D.10 10 9 1 6、下面程序的输出是 void prtv(int *x) printf("%d\n", ++*x);} int main() { int a=25; prtv(&a); return 0; } A.23 B.24 C.26 D.28 7、下面能正确进行字符串赋值操作的语句是 A.char s[5]={"ABCDE"}; B.char *s;s="ABCDEF"; C.char s[5]={'A'、'B'、'C'、'D'、'E'}; D.char *s; scanf("%s",s); 8、设x,y,z,t均为int型变量,则执行以下语句后,t的值为 x=y=z=1;t=++x||++y&&++z; A.不定值 B.2 C.1 D.0 9、设p1和p2是指向同一个int型一维数组的指针变量,k为int型变量,则不能正确执行的语句是 A.k=*p1+*p2; B.k=*p1 *(*p2); C.p1=p2; D.p2=k; 10、请读程序: #include<stdio.h> #define SUB(X,Y) (X)*Y int main() { int a=3, b=4; printf("%d", SUB(a++, b++)); return 0; } 上面程序的输出结果是 A.12 B.15 C.16 D.20 11、sizeof(float)的结果是: A.4 B.6 C.8 D.不确定 12、若执行下面的程序时从键盘上输入3和4,则输出是 inta,b,s; scanf("%d%d",&a,&b); s=a; if(a<b)s=b; s=s*s; printf("%d\n",s); A.14 B.16 C.18 D.20 13、以下程序的输出结果是 # include <stdio.h> int main() { printf("%d\n",NULL); return 0; } A.不确定的(因变量无定义) B.0 C.-1 D.1 14、读程序: #include<stdio.h> f(char *s) { char *p=s; while( *p!='\0') p++; return(p-s); } int main() { printf("%d\n",f("ABCDEF")); return 0; } 上面程序的输出结果是 A.3 B.6 C.8 D.0 15、下面各语句行中,能正确进行赋字符串操作的语句行是 A.char st[4][5]={"ABCDE"}; B.chars[5]={'A','B','C','D','E'}; C.char *s; scanf("%s",s); D.char *s;s="ABCDE"; 16、若有说明:long *p,a;则不能通过scanf语句正确给输入项读入数据的程序段是 A.*p=&a; scanf("%ld",p); B.p=(long *)malloc(8); scanf("%ld",p); C.scanf("%ld",p=&a); D.scanf("%ld",&a); 17、若已定义:int a[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1] 地址的表达式是 A.p+1 B.a+1 C.a++ D.++p 18、下面程序的输出是 enumteam {my,your=4,his,her=his+10}; printf("%d%d %d %d\n",my,your,his,her); A.0 1 2 3 B.0 4 0 10 C.0 4 5 15 D.1 4 5 15 19、以下程序输出结果是 intm=5; if(m++>5)printf("%d\n",m); elseprintf("%d\n",m--); A.7 B.6 C.5 D.4 20、以下程序运行后,输出结果是 int d=1; fun(int p) { int d=5; d+=p++; printf("%d",d); } int main() { int a=3; fun(a); d+=a++; printf("%d\n",d); return 0; } A.95 B.99 C.84 D.44 二、判断题(每题3分,共21分) 判断对错,并给出解析(判对错占1分,解析占2分) 1、虽然goto语句能提高程序运行效率,但为防止程序结构混乱应该禁用。( ) 2、条件表达式可以取代if语句,或者用if语句取代条件表达式。( ) 3、在C程序中对用到的所有数据都必须指定其数据类型。( ) 4、可以对字符型数组进行整体输入、输出。( ) 5、函数中的静态变量在函数每次调用时,都会重新设置初值。( ) 6、实参和与其对应的形参共占用一个存储单元。( ) 7、一个实型变量的值肯定是精确的。( ) 三、程序分析题(22分) 注:当有循环语句,若已经出了循环无对应的值时,可填“无”或“循环结束”。 1、(每空1分,共6分) int main() { int i=5; char c[6]="abcd"; do { c=c[i―1]; }while(――i>0); puts(c); } 2、(每空1分,共6分) int main( ) { int a[3][3]={1,2,3,4,5,6,7,8,9},i,s=0; for(i=0;i<=2;i++) s=s+a; printf("s=%d\n",s); } 3、(每空1分,共10分) 设n=24 voidprnt(int n, int aa[ ]) { int i; for(i=1;i<=n; i++) { printf("%6d",aa); // (1) if(!(i%5))printf("\n"); // (2) } printf("\n"); } 四、编程题(17分) 编程题要求: (1)先给出伪代码,然后再写出源码,重要变量和语句要加注释; (2)若有子函数,则要给出函数框架设计(函数名、形参、返回类型)。 1、(8分)从键盘输入一个一维数组,将这个数组逆序输出。 2、(9分)编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。例如,假定输入的字符串为:asd asasdfg asdas zx67 asd mklo,子字符串为:as,则应输出6。 |