2012学年第1学期
考试科目: 高级语言程序设计
考试类型:(闭卷) 考试时间: 90 分钟
考生须知:
1. 必须在答卷上正确填写班级、学号、姓名等内容。 2. 答案写在答卷上,写在试卷等其它地方不得分。 3. 试卷上出现的int类型变量均为4字节存贮。 4. 上机考试部分,考试时间与地点另行安排。
一、单项选择题(共10题,每题1分)
1. 下面对C语言运算符的优先级叙述正确的是( )。
A. !(非) > 算术运算符 > 关系运算符 > &&(与) > ||(或) > 赋值运算符 B. !(非) > 关系运算符 >算术运算符 > &&(与) > ||(或) > 赋值运算符 C. 算术运算符 >!(非) >关系运算符 > &&(与) > ||(或) > 赋值运算符 D. 算术运算符 > 关系运算符 > !(非) > &&(与) > ||(或) > 赋值运算符
2. float x=3.5, y=4.3 ;int a=8, 表达式y+a%3*(int)((x+y)/4+0.05)/3 的值为 A.4.3; B.5.3; C.6.3; D.7.3;
3. 若有代数式2x2y3bc(x,y,b,c是浮点数),则正确的C语言表达式是()
A.2/3*x^2*y/b*c B.2/3.0*x^2*y/b/c C.2*x*x*y/3*b*c
D.x*x/b/c*2/3*y
4. 在a=2,b=1,c=0;则执行c=b||a--;语句后,a和c的结果是()
A.0,1 B.2,1 C.1,0 D.2,0
5.下面程序段的输出结果是 。 int main( )
{ int a[ ]={1,2,3},s,b,*p; s=1; p=a; for(b=0;b<3;b++) s*=*(p+b); printf(“s=%d\\n”,s); } A.s=1 B.s=2 C.s=3 D.s=6
第1页 共7页
6.设整型变量a为5,使b不为2的表达式是 ()
A. b=a/2 B. b=6-(--a) C. b=a%2 D.b=a>3?2:1
7. 执行以下程序后,y的值是( ) int main ()
{ int y = 10;
do { y -
-;} while(-
- y); printf(\"%d\\n\
-); }
A. -1 B. 1 C. 8 D. 0
8.有如下程序
#include int main() { int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0; for(i=1;i<3;i++) for(j=0;j<=i;j++) s+=a[i][j]; printf(“%d”,s); } 该程序的输出结果是 A.18 B.19 C.20 D.21 9. 有以下程序段 int n,t= 0,s=0; scanf(\"%d\ do{ s=s+t; t=t-2; } while (t!=n); 为使此程序段不陷入死循环,从键盘输入的数据以下最合适的选项是( ) A.任意负奇数 B.任意偶数 C.任意整数 D.任意负偶数 10. 若变量已正确定义,要求程序段完成求5!的计算,不能..完成此操作的程序段是( A.i=1;p=1;do{p*=i; i++; } while(i<=5); B.for(i=1,p=1;i<=5;i++) p*=i; C.for(i=1;i<=5;i++) { p=1; p*=i;} D.i=1;p=1;while(i<=5) {p*=i; i++;} 二、看程序写结果(共6题,每题4分) 1. #include \"stdio.h\" 第2页 共7页 ) #define M 4 #define N 3 int main() { int a[M*N]={1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12}; int b[N*M], i, j; for(i=0; i 2. #include \"stdio.h\" main() { int k=5,n=0; while(k>0) { switch(k) { default : break; case 1 : case 2 : n+=k; case 3 : n+=k; } k- -; printf(\"%d\\n\ } } 请写出运行结果: 3. #include int main() { int i,j,k; for(i=1;i<4;i++) { for(j=1;j<4-i;j++) printf(\" \"); for(k=1;k<=2*i-1;k++) printf(\"%c\ printf(\"\\n\"); } } 请写出运行结果: 4. #include 第3页 共7页 { char arr[]=”ABCDE”; char *ptr; for(ptr=arr;ptr 5. #include for( j=0; j<=i; j++) printf(“%5d”,a[i][j]); printf(“\\n”); } } 请写出运行结果: 6. 有下面结构体类型定义, struct node { char info; struct node *link; }; 假设已存在如下链表, head 1 2 3 4 以head为实参调用如下函数, void func(struct node *head) { struct node *p = head, *p2=NULL; int i=0; while( p!= NULL) { putchar(p->info); p = p-> link; } putchar('\\n'); p = head; while( p!= NULL) { if (p-> link!= NULL) p->info=p-> link ->info; p = p-> link; } p = head; while( p!= NULL) { putchar(p->info); p = p-> link; } } 请写出运行结果: 第4页 共7页 三、看程序填空题(共8空,每空2分) 1.下面程序判断某一年是否闰年,请填空。(提示:闰年为该年能被400整除,或能被4整除且不能被100整除) #include \"stdio.h\" main() { int year,leap; scanf (\"%d\ if (year%4==0) if ( year%100= =0) if( year%400= =0) leap = 1; else leap = 0; else ______【1】 ; else leap = 0; if (leap) printf(\"%d is \ else printf(\"%d is not \ printf(\"a leap year.\"); } 2. 下面函数实现将字符串中ASCII形式表示的整数转变为数值形式,请填空。 int trans(char *s) { int ret=0; while(*s!= '\\0 ') { ______【2】 ; s++; } return ret; } 3. 下面程序是求数列: 前n项和的程序,结果保留四位小数。 #include \"stdio.h\" main() { int i, n, a=2, b=1; float c, sum=0; scanf(\"%d\ 第5页 共7页 for(i=0; i printf(\"sum=%.4f\ } 4. 下面程序实现求出数组元素中的最大值,请填空。 #include \"stdio.h\" int main() { int c[10]={78,45,175,251,249,34,9,179,50,210}; int i,max; max=c[0]; for(i=1; i<10;i++) { 【4】 } printf(\"max = %d\\n\} 5. 在当前目录中存在文件名为\"data.txt\"的文本文件,现要求你使用fopen函数命令打开该文件,读出里面的所有字符,只将其中的数字字符按先后顺序显示在屏幕上,请填空。 (如data.txt内容如下) 13 cats and 22 bikes (在屏幕上输出结果如下) 1322 程序如下,请填空, #include \"stdio.h\" main() { FILE *fp; char ch; if((fp=fopen(\"data.txt\ return 0; while( 【5】 ) { if ('0'<=ch && ch<='9') putchar(ch); } fclose(fp); } 第6页 共7页 6.下面程序实现输出2到200之间(包括2、200)的所有素数,请填空(多行)。 ..#include int isPrime(int n) { 【6】 } int main() { int m; for(m=2;m<=200;m++) if(isPrime(m)) printf(\"%d\\n\} 7. 下面程序的功能是输出如下n*n(n<20,为正奇数)阶方阵。请填空。 1 1 1 1 1 1 2 2 2 1 1 2 3 2 1 1 2 2 2 1 1 1 1 1 1 (n=5) #include “stdio.h” #include “math.h” main() { int a[20][20], n, i, j, m; 【7】 ; m=n/2; for(i=0; i 第7页 共7页 因篇幅问题不能全部显示,请点此查看更多更全内容