2022年西北师范大学公共课《C语言》科目期末试卷A(有答案).docx
2022年西北师范大学公共课C语言科目期末试卷A(有答案)一、填空题1、设X为无符号整数。表达式XA ( (-0<<n) << (p+1-n)的作用是将X 中从第P位开始的n位求反(1变0,。变1),其他位不变。请按表达式的求值顺序 写出分解步骤,并解释含义。2、一个C语言源程序由若干函数组成,其中至少应含有一个3、在C语言源程序中,一个变量代表【】。4、若X和n均是int型变量,且X和n的初值均为5,则执行表达式x+=n+后X的值 为, n的值为 o5、若a是int型变量,则执行表达式a=253%3后a的值为6、下面程序段的运行结果是 oCharsl=nAbcdEf, *s2="aBn;int t; si+ + ;t= (strcmp (si, s2) >0);printf ("%dn", t);7、执行下面程序段后,k的值是 ok=l; n=263;dok*=n%10: n=10; while (n);8、若有以下定义和语句,为使变量Cl得到字符'A',变量c2得到字符'B',正 确的输入形式是 Ochar cl, c2;scanf (%4c%4c", &cl, 8&c2);9、假设变量a、b和C均为整型,以下语句借助中间变量t把a、b和C中的值进行交 换,即把b中的值给a,把C中的值给b,把a中的值给c。例如:交换前,a=10> b=20. c=30;交换后,a=20> b=30> C=IOo 请填空。; a=b; b=c; ;10、设有如下定义:#define SWAP (T, X, Y) T=X; X=Y; Y=T; 以下程序段将通过调用宏实现变量X和y内容的交换,请填空。Double ×=2.5, y=6.4, z: SWAP ();二、选择题11、下面4个选项中,是不合法的整型常量的选项是()。A.-0flB.-OXcdfC.-018D.-0×48egOxfff017999-0680Oll12.4565e203f12、已知各变量的类型说明如下:int k, a, b;unsigned long w=5;double x=1.42;则以下不正确的表达式是()。A.x% (-3)B.w+ = -2C.k= (a=2, b=3, a + B. D.a +=a-= (b=4) * (a=3)13、以下针对SCanf函数的叙述中,正确的是()。A.输入项可以为一实型常量,如SCanf ("%,3.5);B.只有格式控制,没有输入项,也能进行正确输入,如SCanf(Ha=%d, b=%dn);C.当输入一个实型数据时,格式控制部分应规定小数点后的位数,scanf (,%4.2f", &f);D.当输入数据时,必须指明变量的地址,如SCanf ("%F, &f);14、若x, y均定义为int型,Z定义为double型,以下不合法的SCanf函数调用语句 是()A.scanf ("%d%lx, %le", &x, &y, &z);B.scanf (n%2d*%d%lf", &x, &y, &z);C.scanf ("%x%*d%o" , &x, &y);D.scanf ("%x%0%6.2f, &x, &y, &z); 15、下面是对数组S的初始化,其中错误的语句是()。Axhar s5="abc"B.chars5=,a, ,b, ,c,;Uchars =D.char s5 = "abcde"16、一个C程序的执行是从()A.本程序的main函数开始,到main函数结束B.本程序的第一个函数开始,到本程序文件的最后一个函数结束C.本程序的main函数开始,到本程序文件的最后一个函数结束D.本程序的第一个函数开始,到本程序main函数结束17、设有以下程序段:int x=0, s=0;while (! x! =0) s+ = + +x;printf ("d" , s);则()A.运行程序段后输出OB.运行程序段后输出1C.程序段中的控制表达式是非法的D.程序段执行无限次18、若用数组名作为函数调用的实参,则传递给形参的是()A.数组的首地址B.数组第一个元素的值C.数组中全部元素的值D.数组元素的个数19、若有以下说明和语句:char*language=wFORTRANn, "BASIC", "PASCAL", "JAVA", "C); char*qj q = language+2;则语句Printf ("%onn, *q) ; ( ) 0A.输出的是IangUage2元素的地址B.输出的是字符串PASCALC.输出的是IangUage2元素的值,它是字符串PASCAL的首地址D.格式说明不正确,无法得到确定的输出20、若有以下定义和语句,则对a数组元素的正确引用为()。inta23, (*p) 3;p=a;A. (p+1) 0B.* (* (p+2) +1) C.* (pl + l) D.pl+221、以下是有关汉诺塔问题的程序段,若在main函数中有调用语句hanoi (3, ,A1, B' , C.;则符合程序段运行结果的选项是()。void move (char getone, char putone)printf C%c>%cn", getone, putone);void hanoi (int n, char one, char two, char three)if (n= = l) move (one, three);elsehanoi (n-l, one, three, two);move (one, three);hanoi(n-l,two,one,three);)A)A->CB)A->CC)A->CD)A->CA-> BA-> BA-> BA>BC->BC->AC->BC->BB->AA>BA->CA->CC->BB->CB-> AA>BA->CA->CB->CB->CA>BA>BA->CA->C22、下面程序的功能是将已按升序排好序的两个字符串a和b中的字符按升序归并 到字符串C中。请选择填空。#include<stdio.h>#include<string.h>int main ()char a = "acegikm", b = "bdfhjlnpq"charc80, *p;int i=0, j=0, k=0:while (ai! =o'&&b(j! =,o')if (ai<bj) ck=ai; i + +)else k+ + ;)ck='o'if (ai = = ,0,) p=b+j;else p=a+i;strcat (c, p);puts (C.;return 0:)A.ck=ai; i+ + ; B.ck=aj; i+ + ; C.ck=ai; j+ + ; D.ck=aj5 j+;23、下面程序的功能是将字符串S中所有的字符C删除。请选择填空()。#include<stdio.h>int main ()char s80;inti,j;gets(s);for(i=j=0;si!= 'o,J+)f(si! = 'c);sU = 'o'puts(s);return O;)A)sj+=siB)s+j=siC)sj=sj+D)sj=si24、执行以下程序段后的输出是()。Int i=-l;if (i<=O) printf C, *n")elseprintf ("%nn);A.*B.有语法错,不能正确执行C.%C D.%25、下面程序的功能是在输入的一系列正整数中求出最大者,输入0结束循环,请 选择填空()。#include <stdio.h>int main ()int a, max=0;scanf (1,%dr, , 8A;while () if (max<A.max=a;scanf ("%d , &-A.;printf C%d" , max);returnO;A.a=OB.a C.! a= = lD.! a三、读程序填空26、以下程序的输出结果为.#include <stdio.h>int main ()printf ("*%f, %4.3f*n 3.14, 3.1415);returnO;)27、己知字母A的ASeil码值为65。以下程序的输出结果是°#include<stdio.h>int main ()char a, b;a='A'+,4'-,3'b=,A,+,6,-2,;printf ("a=%d, b=%cnn, a, b);returnO;)28、以下程序的功能是:输入圆的半径r和运算标志m后,按照运算标志进行表4- 2中指定的计算。请填空。表4-2运算标志与计算运算标志m计算a面积C周长二者均计算b# include<stdio.h># define pi 3.14159int main() char m; float r,c,a;printf("input mark a cor b 8.8.rn");scanf(n%c%fn,&m,&r);if( )a=pi*r*r;printf("area is %f",a);if()c=2*pi*r;printf("circle is %f",c);)if()a = pi*r*c=2*pir;printf("area &&circle are%f%f",a,c);)return 0;)29、以下程序的功能是:计算某年某月有几天。其中判别闰年的条件是:能被4整 除但不能被100整除的年是闰年,能被400整除的年也是闰年。请填空。#include<stdio.h>int main ()int yy, mm, len;printf ("year, month = ");scanf (n%d%d, 8yy, &mm) ; switch (mm)case 1: case 3: case 5: case7:case 8: case 10: case 12: ; break;case 4: case 6: case 9: case 11: len=30; break;case 2:if (yy%4=0&&yy%100! =0yy%400=0) ;else; break; defaultprintf ("input error") ; break;printf ("the length of%d%d is%dn", yy, mm, len);return 0;)30、下面程序的功能是统计用数字09可以组成多