1、2022 年盐城工学院公共课C 语言科目期末试卷 B(有答案)一、填空题1、假设变量a、b和c均为整型,以下语句借助中间变量t把a、b和c中的值进行交换,即把b中的值给a,把c中的值给b,把a中的值给c。例如:交换前,a=10、b=20、c=30;交换后,a=20、b=30、c=10。请填空。 ;a=b;b=c;2、在C语言源程序中,一个变量代表【 】。3、结构化程序由、3种基本结构组成。4、若x和y都是double型变量,且x的初值为3.0,y的初值为2.0,则表达式.pow(y,fabs(x)的值为 5、若有定义语句:charc=010;则变量 c 中包含的字符个数为。6、与表达式x=y-
2、2等价的另一书写形式是。7、下面add 函数的功能是求两个参数的和,并将和值返回调用函数。函数中错误的部分是,改正后为。void add(float a,float b)float c; c=a+b; return c;8、若有定义floata35;则a数组所含数组元素个数是,a数组所占的字节数是。9、若有定义:doublex35;,则 x 数组中行下标的下限为,列下标的上限为。10、下面程序段的运行结果是。char s20=abcd; char*sp=s;sp+; puts(strcat(sp,ABCD);二、选择题11、以下表达式值为3的是( )A.16-13%10B.2+3/2C.14/
3、3-2D.(2+6)/(12-9)12、下面4个选项中,是不合法的转义字符的选项是( )A.B.1011 C.0llD.abef0llxf axlf13、以下叙述正确的是A.在 C 程序中,main 函数必须位于程序的最前面B.C 程序的每行中只能写一条语句C.C 语言本身没有输入输出语句D.在对一个 C 程序进行编译的过程中,可以发现注释中的拼写错误14、C 语言规定:在一个源程序中,main 函数的位置()A.必须在最开始B.必须在系统调用的库函数的后面C.可以任意D.必须在最后15、若有定义float x4=1.3,2.4,5.6,y=6;,则错误的语句是( )。A.y=x3;B.y=x
4、+1;C.y=x2+1; D.x0=y; 16、已知ch是字符型变量,下面不正确的赋值语句是( ) A.ch=a+b;B.ch=o;C.ch=7+9;D.ch=5+9; 17、若有以下说明和语句:char*language=FORTRAN,BASIC,PASCAL,JAVA,C); char*q;q=language+2;则语句printf(%on,*q);( )。A.输出的是language2元素的地址B.输出的是字符串PASCALC.输出的是language2元素的值,它是字符串PASCAL的首地址D.格式说明不正确,无法得到确定的输出18、若用数组名作为函数调用的实参,则传递给形参的是(
5、 )A.数组的首地址B.数组第一个元素的值C.数组中全部元素的值D.数组元素的个数19、与下面程序段等价的是( )。for(n=100;n=200;n+)if(n%3=0)continue; printf(%4d,n);A.for(n=100;(n%3)&n=200;n+)printf(%4d,n); B.for(n=100;(n%3)| n=200;n+)printf(%4d,n); C.for(n=100;n=200;n+)if(n%3!=0)printf(%4d,n);D.for(n=100;n=200;n+)if(n%3)printf(%4d,n);else continue;brea
6、k;20、若i为整型变量,则以下循环执行次数是( )。for(i=2;i=0;)printf(%d,i-); A.无限次B.0次C.1次D.2次21、以下程序的运行结果是()。#include int main()int a,b,d=241; a=d/100%9;b=(-1)8&.8&(-1); printf(%d,%d,a,B.; return0;A.6,1B.2,1C.6,0D.2,022、下面程序的功能是从键盘输入一行字符,统计其中有多少个单词,单词之间用空格分隔。请选择填空。()#includeint main()char s80,c1,c2=;int i=0,num=0; gets(
7、s);while(si!=o) c1=si; if(i=0)c2=; else c2=si-1; if(【】)num+; i+;printf(There are%d words.n,num); return 0;A.c1=&c2=B.cl!= &c2=C.c1=&c2!=D.cl!=&c2!=23、下面程序的运行结果是( )。#include int main()chara=morming,t;int i,j=0; for(i=1;i7;i+)if(aja ) j=i;t=aj;aj=a7;a7=aj; puts(a);return 0;A)mogninrB)moC)morningD)morn
8、in24、折半查找法的思路是:先确定待查元素的范围,将其分成两半,然后测试位 于中间点元素的值。如果该待查元素的值大于中间点元素,就缩小待查范围,只测试中点之后的元素;反之,测试中点之前的元素,测试方法同前。函数binary的作用是应用折半查找法从存有10个有序整数的a数组中对关键字m进行查找,若找到,返回其下标值;反之,返回-1。请选择填空。int binary(int a10,int m)int low=0,high=9,mid; while(low=high)mid=(low+high)/2; if(mamid)【】; else return(miD.; return(一1);A.hig
9、h=mid-1 B.low=mid+1C.high=mid+1D.low=mid-1 25、下面程序的运行结果是()。#include int main()int y=10; doy-;while(-y); printf(%dn,y-); return 0;A)-1B)1C)8D)0三、读程序填空26、已有定义int d=-2;执行以下语句后的输出结果是。printf(*d(1)=%d*d(2)=%3d*d(3)=%-3d*n,d,d,d);printf(*d(4)=%x*d(5)=%6x*d(6)=%-6x*n,d,d,d);27、已有定义int d=-2;执行以下语句后的输出结果是。pri
10、ntf(*d(1)=%d*d(2)=%3d*d(3)=%-3d*n,d,d,d); printf(*d(4)=%o*d(5)=%7o*d(6)=% 7o*n,d,d,d);28、以下函数fun的功能是:将输入的一个偶数写成两个素数之和的形式。例如, 若输入数值8,则输出8=3+5。请填空。# include # include vaid fun(int a) int b,c,d; for(b=3;b=a/2;b=) for(c=2;csqrt(b) d=; else break;for(c=2;csqrt(d)printf(%d=%d+%dn,a,b,d);int main() int a;p
11、rintf( ninput a:n); scanf(%d,&a); fun(a);return(0);29、以下程序的运行结果是。#includeint func(int array4,int m)inti,j,k; k=0;for(i=0;i3;i+) for(j=0;j4;j+)if(arrayijm)k=k+arrayij; return(k);int main()static int a34=1,13,5,7,2,4,26,8,10,1,3,12; int i,j,m;for(i=0;i3;i+) for(j=0;j4;j+) printf(%4d,aij); printf(n);m=
12、10;printf(nThe value is%dn,func(a,m); return(0);30、下面程序的运行结果是。#includeint main()int y=2,a=1; while(y-!=-1)doa*=y;a+;while(y-一); printf(%d,%d,a,y);return 0;31、下面程序给a数组输入数据并以每行4个数据的形式输出。请填空。#include#define N20 int main()intaN,i; for(i=0;iN;i+)scanf(%d,); for(i=0;iN;i+)if() printf(%3d,ai);printf(n); re
13、turn 0;32、下面程序的功能是:根据表4-3中给定的函数关系,对输入的每个x值计算出相应的y值。请填空。函数关系x2 101 2 1y x(x+2) 2xx-1# include int main() intx,y; scanf(%d,&x);if ()y=x*(x+2); else if () y=2*x; else if(x=-1) y=x-1;else() ;if(y!=-1) printf(%d,y); else printf(error); return 0;33、下面程序的运行结果是。#includevoid amov(int*p,int(*a)3,int n)inti,j,
14、s=0; for(i=0;in;i+)for(j=0;j28.8.x-18.8.x=2【3】y=-133、s=21四、编程题34、#include int main()int x; scanf(%d”,8.x);if(x%3=0)8.8.(x%5=0)8.8.(x%7=0) printf(%d can be divided by3,5,7n,x); else if(x%3=0)8.8(x%5=0) printf(%d can be divided by 3,5n,x); else if(x%3=0)8.8.(x%7=0) printf(%d can be divided by 3,7n,x);
15、 else if(x%5=0)8.8.(x%7=0) printf(%d can be divided by 5,7n,x); else if(x%3=0)printf(%d can be divided by 3n,x); else if(x%5=0)printf(%d can be divided by 5n,x); else if(x%7=0)printf(%d can be divided by 7n,x);elseprintf(%d cannot be divided3,5,7n,x); return 0;35、#include int main()int a10,b10,i; for(i=0;i10;i+)scanf(%d,&ai); for(i=1;i10;i+)bi=ai/ai-1; for(i=1;i10;i+)printf(%3d,bi); if(i%3=0)printf(n);return 0;