《大学C语言期末考试题及答案.doc》由会员分享,可在线阅读,更多相关《大学C语言期末考试题及答案.doc(29页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、东北大学 C 语言期末考试题及答案(1)1、构成 C 语言的基本单位是_B_。过程 函数语句 命令2、设 x 为整型变量,不能正确表达数学关系:5x5&x10 x=6|x=7|x=8|x=9!(x=5)&(xy) if(yz)x=y; else z=y;76549、如果一个函数被说明为 static,那么_B_。该函数只能被 main 函数调用 该函数能被当前文件的函数调用,但不能被其他文件的函数调用该函数不能被当前文件的函数调用,可以被其他文件的函数调用 任何文件的函数都可以调用该函数10、下面关于局部变量的描述中,错误的是_D_。函数的局部变量的有效范围只能在本函数 函数的形式参数也是局部
2、变量 局部变量的名称不能和函数同名称 不同的函数中不能定义相同名称的局部变量11、下列初始化字符数组的语句中,错误的是_A_。char str5=hello;char str=h,e,l,l,o,0;char str5=hi;char str100=;12、引用数组元素时,数组下标可以是_D_。整型常量 整型变量 整型表达式 以上均可13、 已知:char str10,*p=str; 下面的语句中正确的是_B_。str=ABC;p=ABC; *str=ABC; *p=ABC;14、下面语句中,错误的是_D_。int i;int *p;p=&i;int i,*p;p=&a;int i,*p=&a
3、; int i,*p;*p=i;15、下面对于结构体类型的描述正确的是_A_。结构体类型的大小为各成员变量所占内存的总和结构体类型变量与简单数据类型变量的引用规则一致。结构体类型的大小为其成员中所占内存空间最大的变量的大小结构体类型的大小为其最后一个成员中所占内存空间的大小16、C 语言规定:在一个源程序中,main 函数的位置_C_。必须在最开始 必须在系统调用的库函数的后面可以任意 必须在最后17、表达式 18/4*sqrt(4.0)/8 值的数据类型是 _C_。intfloatdouble不确定18、在 c 语言中,char 型数据在内存中的存储形式是 _D_。补码反码 原码 ASCII
4、 码19、阅读以下程序,当输入的数据形式为:25,13,10时,正确的输出结果为_D_。 main() int x,y,z; scanf(%d%d%d,&x,&y,&z);printf(x+y+z=%dn,x+y+z); x+y+z=48 x+y+z=35 x+z=35 不能确定20、有如下程序 void main() float x=2.0,y; if(x0.0) y=0.0; elseif(x10.0) y=1.0/x; else y=1.0; printf(“%fn”,y); 该程序的输出结果是( C )。0.000000 0.2500000.5000001.00000021、判断 ch
5、ar 型变量 s 是否为小写字母的正确表达式是_C_。a=s=a)&(s=a)&(s=z) (a=s)22、执行以下语句后,y 的值为_A_。 int x,y,z; x=y=z=0; +x | +y &+z;0 1 2 不确定值23、有如下程序段: int number=0; while(number+6) n-;printf(“%d”,n); 该程序段的输出结果是_B_。987876 8765987625、要使以下程序段输出 10 个整数,请在空格中填入一个整数。for(i=0;i=_B_;printf(%dn,i+=2);15 1820 1026、设函数 fun 的定义形式为: fun(c
6、har ch,float x) 则以下对函数 fun的调用语句中正确的是_B_。fun(“abc”,3)t=fun(D,5)fun(ab,3)fun(78,1)27、函数求 sum(int n)的功能是计算自然数 1 到 n 的和,即 1+2+n。 Main() printf(The sum=%dn,sum (10); int sum(int n) int s=0,i;for(i=0;i=n;i+) _B_ 请从备选答案中选择一答案,补全程序。s=s+n;return s;s=s+i;return s;return s;return s+=I;28、设函数 fun 的定义形式为 int fun
7、(int a,int n) int s=0,i=0; for(i=0;in;i+)s+=ai; return s; main() int a10=1,2,3,4,5;printf(sum=%d, fun(&a2,2); 则程序的运行结果为_C_。357929、若有说明:int a10;则对数组元素的正确引用是_D_。a10 a3,5a(5) a10-1030、以下不正确的定义语句是_B_。double x5=2.0,4,0,6,0,8,0,10.0;int y5=0,1,3,5,7,9;char c1=1,2,3,4,5;char c2=x10,xa,x8;31、下面程序的运行结果是_B_。
8、#include stdio.h main() char str=SWLIA,c; int k; for(k=0;(c=strk)!=0;k+) switch(c) caseI:+k;break; cSWASW* SW*A SW32、以下能正确进行字符串赋值操作的是_D_。char s5=12345;char s5=1,2,3,4,5,6;char *s;*s=12345;char *s=12345;33、以下程序段的运行结果是_C_。 Char a =program, *p; p=a; while(*p!=g) printf(%c, *p-32); p+; PROgram PROGRAMPR
9、OproGRAM34、若有说明:char *pc =aaa, bbb, ccc, ddd;,则以下叙述正确的是_C_。 *pc0代表的是字符串aaa的首地址*pc0代表的是字符a的首地址 pc0代表的是字符串aaa的首地址 pc0代表的是字符a的首地址35、下列程序的运行结果是_B_。 #include #include void f (char *s, int n) char a,*q1,*q2; q1=s;q2=s+n-1; while(q110) printf(“%dn”,+a); else printf(%dn,a-); 1211 10 92、执行下面程序段的结果是_D_ int x=
10、0; do printf(“%2d”,x-); while(x);打印出 321 打印出 23 不打印任何结果陷入死循环3、执行与句:for(n=0;n+4; ); 后,变量 n 的值是_C_。345不定4、以下关于循环的描述中,错误的是_D_。可以用 for 语句实现的循环一定可以用 while 语句实现可以用 while 语句实现的循环一定可以用 for 语句实现可以用 dowhile 语句实现的循环一定可以用 while 语句实现dowhile 语句与 while 语句的区别仅仅是关键字 while 的位置不同5、下面的描述错误的是_C_。函数可以有多个形式参数函数可以没有返回值 函数内
11、可以嵌套定义函数 函数可以被其他函数调用6、函数返回值的类型是由_A_决定的。定义函数时指定的返回类型函数中 return 语句的表达式类型主调函数的实际参数类型主调函数的返回值类型7、定义了一维 int 型数组 a10后,下面错误的引用是_B_。a0=1;a10=2;a0=5*2;a1=a2*a0;8、定义了 int 型二维数组 a67后,数组元素 a34前的数组元素个数为_B_。2425 18179、下面语句中,错误的是_D_。int i; int *p; p=&i;int i,*p; p=&a;int i,*p=&a;int i,*p; *p=i;10、 已知 int 型二维数组 a34
12、,数组元素 a12的地址不能表达为_C_。&a12a1+2*a1+2*(a+1)+211、C 语言中,5 种基本数据类型的存储空间长度的排列顺序为_A_。char char=intcharchar=int=long int=float12、假设所有变量均为整型,则表达式(a=2,b=5,b+,a+b)的值是 _B_。786213、若有说明语句:char c=72;则变量 c _A_。包含 1 个字符包含 2 个字符包含 3 个字符说明不合法,c 的值不确定14、若 x,y 均定义为整型,z 定义为 double 型,以下不合法的 scanf 函数调用语句是_C_。scanf(%d%lx,%le
13、,&x,&y,&z);scanf(%2d * %d%lf,&x,&y,&z); scanf(%x%*d%o,&x,&y,&z);scanf(%x%o%6.2f,&x,&y,&z);15、若输入字符串:abcde,则以下 while 循环体将执行_A_次。while(ch=getchar()=e) printf(*);1次死循环 0次5次16、执行下面的程序段后,k 的值是_C_。 k=1;n=263;dok*=n%10;n/=10;while(n);3 6336 217、下面程序段中循环的执行次数是_B_。 a=10;b=0;dob+=2;a-=2+b;while(a=0);10 3 5 41
14、8、下面程序段的运行结果是_D_。 x=2;doprintf(*);x-;while(!x=0);*没有输出*19、下面程序段的运行结果是_B_。 i=1;s=1;a=0;doa=a+s*i;s=-s;i+;while(i=10); printf(%d,a);2-23020、有如下程序 void main() int a=2,b=-1,c=2; if(a) if(b0) c=0; elsec+; printf(%dn,c); 该程序的输出结果是_A_。012321、程序中对 fun 函数有如下说明 void fun(); 下面说明是错误的是_B_。fun 函数无返回值fun 函数的返回值可以是
15、任意的数据类型fun 函数没有形式参数void 可以省略22、函数求 sum(int n)的功能是计算自然数 1 到 n 的和,即 1+2+n。 main() printf(The sum=%dn,sum (10); int sum(int n) int s=0,i;for(i=0;iy?x:y; int f2(int x,inty)return xy?y:x; main() int a=4,b=3,c=5,d=2,e,f,g;e=f2(f1(a,b),f1(c,d); f=f1(f2(a,b),f2(c,d); g=a+b+c+d-e-f;printf()_A_4,3,7 3,4,75,2,
16、7 2,5,724、若有说明:int a3=1,2,3,4,5,6,7;则数组 a 第一维的大小是_B_。2 3 4 无确定值25、判断字符串 s1 是否大于字符串 s2,应当使用_D_。if(s1s2)if(strcmp(s1,s2) if(strcmp(s2,s1)0)if(strcmp(s1,s2)0)26、当运行以下程序时,从键盘输入:AhaMA Aha 表示回车,则下面程序的运行结果是_A_。 #include stdio.h main() char s80,c=a;int i=0; scanf(%s,s); while(si!=0) if(si=c)ahAMaAhAMa AhAMa
17、 ahAahAMa ahA27、以下程序执行后 a 的值为_C_。 main( ) int a,m=2, k=1,*p=&k; a=p!=&m; printf(%dn,a); -10 1 228、以下能正确读入字符串的程序段是_C_。char *p;scanf(%s, p);char str10;scanf(%s, &str);char str10, *p;p=str; scanf(%s, p);char str10, *p=str;scanf(%s, p1);29、若有定义:int i, x34;,则不能将 x11的值赋给变量 i 的语句是_B_。i=x11i=*(*(x+1) i=*(*(
18、x+1)+1)i=*(x1+1)30、下面程序的运行结果是_A_。 # include # include fun(char *s) char t,*a,*z; a=s; z=s+strlen(s)-1; while(a+y) if(yz)x=y; else z=y;765436、执行下面程序段的结果是_D_ int x=0; do printf(“%2d”,x-); while(x);打印出 321 打印出 23 不打印任何结果 陷入死循环37、以下关于 switch 语句和 break 语句的描述正确的是_D_在 switch 语句中必须使用 break 语句break 语句只能用于 sw
19、itch 语句体中 break 语句只能用于循环语句中在 switch 语句中可以使用 break 语句38、与语句 while(!x)等价的语句是_A_while(x=0) while(x!=0) while(x!=1) while(x)39、下面的描述错误的是_C_ 函数可以有多个形式参数 函数可以没有返回值函数内可以嵌套定义函数函数可以被其他函数调用40、 下面关于局部变量的描述中,错误的是_D_函数的局部变量的有效范围只能在本函数函数的形式参数也是局部变量局部变量的名称不能和函数同名称不同的函数中不能定义相同名称的局部变量东北大学 C 语言期末考试题及答案(3)1、 定义了一维 int
20、 型数组 a10后,下面错误的引用是_正确答案是:Ba0=1;a10=2;a0=5*2;a1=a2*a0;2、 设有定义:int a=1, *p=&a; float b=2.0; char c=A; ,以下不合法的运算是( )正确答案是:C*p+; a-;b+; c-;3、 若有定义:int x10, *p=x;,则*(p+5)表示( )正确答案是:B数组元素 x5的地址数组元素 x5的值 数组元素 x6的地址数组元素 x6的值4、执行以下程序段后,y 的值是( )。 int a =1, 3, 5, 7, 9 int x=0,y=1, *ptr; ptr=&a1; while (!x) y+=
21、*(ptr+x); x+; 正确答案是:C124245、下面程序的运行结果是( )。 # include void select(char *s) int i,j; char *t; t=s; for(i=0,j=0;*(t+i)!=0;i+) if (*(t+i)=0&*(t+i)5)printf(“%dn”,m); else printf(“%dn”,m-); 正确答案是:B765423、当执行以下程序段时( )。 x=-1; do x=x*x; while(!x);正确答案是:A循环体将执行一次循环体将执行两次循环体将执行无限次系统将提示有语法错误24、执行以下程序后,输出的结果是( )
22、。 void main() int y=10; do y-;while(-y); printf(“%dn”,y-); 正确答案是:D-118025、有如下程序 void main() int x=23; do printf(“%d”,x-);while(!x); 该程序的执行结果是( )正确答案是:B32123 不输出任何内容陷入死循环26、有如下程序 void main() int y=3,x=3,z=1;printf(“%d %dn”,(+x,y+),z+2); 运行该程序的输出结果是( )正确答案是:D3 44 2 4 3 3 327、有如下程序 void main( ) int x=1
23、,a=0,b=;0 switch(x) case 0: a+;case 1: b+; case 2: a+;b+; printf(“a=%d,b=%dn”,a,b); 该 程序的输出结果是( )正确答案是:Aa=1,b=2 a=1,b=1a=1,b=0 a=2,b=228、若程序中定义了以下函数 double myadd(double a,double b) return(a+b) ; 并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是正确答案是:Adouble myadd(double a,b) ;double myadd(double,double);doub
24、le myadd(double b,double a) ;double myadd(double x,double y);29、有以下程序 int fun(int x , int y) if(xy) f(x,y); else if(yz) f(y,z); else f(x,z);printf(“%d,%d,%dn”,x,y,z); 执行后输出结果是正确答案是:A1,2,33,1,21,33,12,3,131、以下列一维整型数组 a 的正确说明是_正确答案是:Dint a(10);int n=10,an;int n; scanf(%d,&n); int an;#define SIZE 10 in
25、t aSIZE;32、若二维数组 a 有 m 列,则计算任一元素 aij在数组中位置的公式为_。(假设 a00位于数组的第 1 个位置上)正确答案是:Di*m+jj*m+ii*m+j-1i*m+j+133、下面程序的运行结果是_。 #include stdio.h main() chara=morning,t; int i,j=0; for(i=1;i7;i+) if(ajai) j=i; t=aj; aj=a7; a7=aj; puts(a); 正确答案是:Bmogninrmo morningmornin34、执行下面程序段的结果是_ main() int x=1,a=0,b=0; swit
26、ch(x) case 0:b+; case 1:a+; case 2:a+;b+ printf(a=%d,b=%d,a,b); 正确答案是:Ba=1,b=1 a=2,b=1a=1,b=0 a=2,b=235、若有以下程序段: for(m=1;m=100;m+) scanf(“%d”,&y); if(y0)continue; printf(“%3d”,m); 正确的描述是_正确答案是:D当 y=0 时什么也不输出 printf 函数永远也不执行 最多允许输出 100 个非负整数36、.以下关于 switch 语句和 break 语句的描述正确的是_正确答案是:D在 switch 语句中必须使用
27、break 语句 break 语句只能用于 switch 语句体中break 语句只能用于循环语句中在 switch 语句中可以使用 break 语句37、下列描述中,正确的是_正确答案是:A所有的输入/输出都是通过调用库函数处理的所有的输入/输出都是通过输入/输出语句实现的 getchar 和 putchar 可以省略#include 在输入/输出格式中的*表示跳过数据的含义38、若给定表达式(x)?(a+):(a-),则表达式 x_正确答案是:C和(x=0)等价和(x!=1)等价和(x!=0)等价和(x=1)等价39、对于xyn102字符串的长度是_正确答案是:B76 121340、下面说
28、法不正确的是_正确答案是:DC 语言能编写操作系统C 语言是函数式的语言数据类型多样化书写格式自由、不规范东北大学 C 语言期末考试题及答案(4)1、 定义了一维 int 型数组 a10后,下面错误的引用是_正确答案是:Ba0=1;a10=2;a0=5*2;a1=a2*a0;2、 设有定义:int a=1, *p=&a; float b=2.0; char c=A; ,以下不合法的运算是( )正确答案是:C*p+;a-; b+; c-;3、 若有定义:int x10, *p=x;,则*(p+5)表示( )正确答案是:B数组元素 x5的地址数组元素 x5的值 数组元素 x6的地址数组元素 x6的
29、值4、执行以下程序段后,y 的值是( )。 int a =1, 3, 5, 7, 9 int x=0,y=1, *ptr; ptr=&a1; while (!x) y+=*(ptr+x); x+; 正确答案是:C124245、下面程序的运行结果是( )。 # include void select(char *s) int i,j; char *t; t=s; for(i=0,j=0;*(t+i)!=0;i+) if(*(t+i)=0&*(t+i)=9) *(s+j)=*(t+i); j+; *(s+j)=0 正确答案是:DHPw19 &17HPw19 &1719176、对于下面语句描述不正确的为_ struct Student unsigned long id;char name30; char class30; oStu1;正确答案是:Bstruct Student 为用户自定义类型Student 为用户自定义类型 name 为结构体成员变量oStu1 为结构体变量名称7、已知:c
限制150内