C语言程序设计期末试题C
C 语言程序设计期末试题C 一、选择题:( 20分,每题 2 分)1以下不正确的C 语言标识符是()。A. ABC B. abc C. a_bc D. ab.c 2C 程序是由构成的。A. 主程序与子程序B. 主函数与若干子函数C. 一个主函数与一个其它函数D. 主函数与子函数3以下说法中正确的是:。A. 在 C 语言中,实参与其对应的形参各占独立的存储单元;B.在 C 语言中,实参与其对应的形参共占同一个存储单元;C.在 C 语言中,只有当实参与其对应的形参同名时,才共占同一个存储单元;D. 在 C 语言中,形参是虚拟的,不占存储单元。4设 n=3;则 n+的结果是()。A. 2 B. 3 C. 4 D. 5 5设整型变量 n=10,i=4,则赋值运算 n%=i+1 执行后, n 的值是()。A. 0 B. 1 C. 2 D. 3 6凡是函数中未指定存储类别的局部变量其隐含的存储类别是()。A. 自动( auto) B. 静态( static) C. 外部( extern) D. 寄存器( register)7在 while(x)语句中的 x 与下面条件表达式等价的是:。A. x= =0 B. x= =1 C. x!=1 D. x!=0 8若有以下说明和语句:struct worker int no; char *name; work, *p=&work; 则以下引用方法不正确的是()。A. work.no B. (*p).no C. p-no D. work-no 9以下对二维数组进行正确初始化的是()。A.int a23=1,2,3,4,5,6; B.int a3=1,2,3,4,5,6; C.int a2=1,2,3,4,5,6; D.int a2=1,2,3,4; 10二维数组 a有 m 列,则在 aij 之前的元素个数为:。A)j*m+i B)i*m+j C) i*m+j-1 D) i*m+j+1 二、给出下列程序的运行结果:(20 分,前四题每题3 分,后两题每题 4 分) 1#include main() int i=16,j,x=6; j=i+1; x*=i=j; printf(“%d,%dn”,j,x); 运行结果是:2#include #include main() int a=1,b=4,c=2; float x=10.5,y=4.0,z; z=(a+b)/c+sqrt(double)y)*1.2/c+x; printf(“%fn”,z); 运行结果是:3#include main() int a,b,c,d; a=c=0; b=1; d=20; if(a) d=d-10; else if(!b) if(!c) d=25; else d=15; printf(“d=%dn”,d); 运行结果:4main() int i=10; switch(i) case 9: i+=1; case 10: i+=1; case 11: i+=1; default : i+=1; printf(“%d ”,i); 运行结果:5#include main() int a=1,2,3,4,i,j,s=0; j=1; for(i=3;i=0;i-) s=s+ai*j; j=j*10; printf(s=%dn,s); 运行结果:6func(int x) x=20; main() int x=10; func(x); printf(“%d ”,x); 运行结果:三、阅读程序,在标有下划线的空白处填入适当的表达式或语句,使程序完整并符合题目要求。(20 分,每空 2 分)1已知能被 4 整除而不能被 100 整除的或者能被 400整除的年份是润年,则判断某一年是否是润年的程序如下:main() int year,leap; scanf( “%d ”,&year);if( ) leap=1; else leap=0; if( ) printf(“是润年 ”);else printf(“不是润年 ”); 2将 100至 200间不能被 3 整除的数输出:main() int n; for(n=100;n=200;n+) if(n%3=0) ; printf(“%d ”,n); 3判断 m 是否是素数#include main() int m,i,k; scanf( “%d ”,&m); k=sqrt(m);for(i=2;i=k+1) printf(“%d is a prime numbern”,m);else printf(“%d is not a prime numbern”,m); 4给定一 3*4 的矩阵,求出其中值最大的元素的值,及所在的行列号。main() int i,j,row=0,colum=0,max; static int a34=1,2,3,49,8,7,610,-10,-4,4; ; for(i=0;i=2;i+) for(j=0;jmax) max=aij; ; ; printf(“max=%d,row=%d,colum=%dn”,max,row,colum); 5下面函数的功能是将两个字符串s和 t 连接起来。char *conj(char *s, char *t) char *p=s; while(*s) ; while(*t) *s= ; s+; t+; *s= 0 ; ; 四、编程( 40 分)1计算 1-1/2+1/3-1/4+ +1/99 -1/100+ , 直到最后一项的绝对值小于10-4为止。( 13 分)2输入一行字符,分别统计求出其中英文字母、空格、数字和其他字符的个数并输出结果。(13分)3任意从键盘输入10 个整数,按从小到大的顺序排序,并输出结果。(14 分)