您的当前位置:首页2022年长沙卫生职业学院公共课《C语言》科目期末试卷B(有答案)

2022年长沙卫生职业学院公共课《C语言》科目期末试卷B(有答案)

2020-10-18 来源:乌哈旅游
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、函数swap(arr,n)可对arr数组从第1个元素到第n个元素分别进行两两元素交换。在运行调用函数中的如下语句后,a[o]和a[1]的值分别为_______,原因是_______。

a[0]=1;a[1]=2;swap(a,2); 3、执行下面程序段后,k的值是_______。 k=1;n=263;

do{k*=n%10;n/=10;} while(n);

4、C语言中的标识符可分为关键字、_______和_______3类。

5、若有定义语句:ints=6;则表达式s%2+(s+1)%2的值为_______

6、若有定义:inta[3][4]={{1,2},{0},{4,6,8,10}};,则初始化后,a[1][2]得到的初值是_______,a[2][1]得到的初值是_______。

7、测试char型变量a第6位是否为1的表达式是_______(设最右位是第1位)。 8、C语言源程序文件的后缀是 ;经过编译后,生成文件的后缀是 ;经过连接后,生成文件的后缀是

9、结构化程序由________、________ 、________ 3种基本结构组成。

10、以下程序段通过移动指针变量m,给如图9-7所示连续动态存储单元赋值。请填空。(假设程序段中的所有变量均已正确说明。)

for(k=0;k<10;k++,m++)scanf(\"%d\",_______);

二、选择题

11、假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是(A.7 B.8 C.6 D.2

12、下面正确的字符常量是( ) A.\"c\" B. \"\\\\\" C. 'w' D. \" 13、以下叙述正确的是

A.在C程序中,main函数必须位于程序的最前面 B.C程序的每行中只能写一条语句 C.C语言本身没有输入输出语句

D.在对一个C程序进行编译的过程中,可以发现注释中的拼写错误 14、以下叙述不正确的是( )

A.一个C源程序可由一个或多个函数组成 B.一个C源程序必须包含一个main函数 C.C程序的基本组成单位是函数

)D.在C程序中,注释说明只能位于一条语句的后面 15、若要对a进行++运算,则a应具有下面说明( )

A.int a[3][2];B.char*a[]={\"12\",\"ab\;C.char(*A.[3];D.int b[10],*a=b;

16、已有如下定义和输入语句,若要求al,a2,c1,c2的值分别为10、20、A和B,当从第一列开始输入数据时,正确的数据输入方式是。(注:口表示空格) int a1,a2; char c1,c2;

scanf(\"%d%c%d%c”, &a1,&c1,&a2,&c2); A.10A□20B<回车> B.10□A□20□B<回车> C.10A□20B<回车> D.10A20□B<回车>

17、在下面的程序段中( )。

Int t,x;

for(t=1;t<=100;t++) {scanf(\"%d”,&x); if(x<0)continue; printf(\"%3d\",t); }

A.当x<0时整个循环结束 B.x≥0时什么也不输出

C.printf函数永远也不执行 D.最多允许输出100个非负整数

18、C语言规定,简单变量作为实参时,它和对应形参之间的数据传递方式是( ) A.地址传递 B.单向值传递

C.由实参传给形参,再由形参传回给实参 D.由用户指定传递方式

19、下面描述正确的是( )。

A.两个字符串所包含的字符个数相同时,才能比较字符串 B.字符个数多的字符串比字符个数少的字符串大 C.字符串\"STOP\"与\"STOP\"相等 D.字符串\"That\"小于字符串\"The\"

20、以下对二维数组a的正确说明是( )。

A.inta[3][];B.float a(3,4);C.double a[ ][4];D.float a(3)(4); 21、以下程序的输出是( )。

#include int main()

{int x=2,y=-1,z=2; if(xA) 3 B.2 C.1 D.0

22、有已排好序的字符串a,下面的程序是将字符串s中的每个字符按a中元素的规律插入到a中。请选择填空。

#include int main()

{char a[20]=\"cehikngtw\",

s[]=\"fbla\"; inti,k,j;

for(k=0;s[k]!=\\0';k++) { j=0;

while(s[k]>=a[j]& &a[]!=\\0)j++; for(i=strlen(a);i>=j;i--)[2]; a[j]=s[k]; puts(a); return 0; }

A)a[i]=a[i+1] B)a[i+1]=a[i] C)a[i]=a[i-1] D)a[i-1]=a[i]23、下面程序的运行结果是( )。 #include int main()

{char str[]=\"SSSWLIA\",c;int k; for(k=2;(c=str[k])!=\\o';k++) {switch(C.

{case'I':++k;break; case'L':continue;

default:putchar(C.;continue; putchar('*’);

}

return 0; }

A.SSW* B.SW* C.SW*A D.SW

24、以下程序的功能是计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值,请选择填空。

#include #include float f(float,float); int main()

{floatx,y,z,sum;

scanf(\"%f%1%f\",8.x,&y,8.z); sum=f(【】)+f(z+y,z-y); printf(\"sum=%fNn\",sum); return(0); }

float f(float a,float B. {float value; value=a/b; return(value); }

A)x-y,x+y B)x+y,x-y C)z+y,z-y D)z-y,z+y

25、下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除,请选择填空( )。

#include int main() {int i=0,j,k;

do{i++;k=316-13*i;}while(【 】); j=k/11;

printf(\"316=13*%d+11*%d\",i,j); return0; }

A.k/11 B.k%11 C.k/11==0 D.k/11=0

三、读程序填空

26、若要求下列程序的输出结果为8.00,则[]中应填入的是_______。

#include int main() {int k=2,m=5; float s,x=1.2,y=[]; s=2/3+k*y/x+m/2; printf(\"%4.2f\\n\",s); return 0; }

27、以下程序的输出结果是_______。

#include int main()

{int x=10;float pi=3.1416; printf(\"(1)%d\\n\ printf(\"(2)%6d\\n\ printf(\"(3)%f\\n\ printf(\"(4)%14fNn\ printf(\"(5)%e\\n\ printf(\"(6)%14e\\n\ printf(\"(7)%g\\n\ printf(\"(8)%12g\\n\ return 0;

}

28、若运行以下程序时输入:-2<回车>,则程序的输出结果是_______。

#include int main() {int a,b;

scanf(\"%d\",&a); b=(a>=0)?a:-a; printf(\"b=%d\",b);

return 0; }

29、将以下两条if语句合并成一条if语句为_______。 语句1:if(a>b)scanf(\"%d\",8&a); else scanf(\"%d\",&b); 语句2:if(a<=b)m++; else n++;

30、函数yanghui能够按以下形式构成一个杨辉三角形。请填空。 1

1

1

1 2 1 1 3 2 1 1 4 3 2 1

# include # define N 1

void yanghui(int a[] [N]) { int i,j;

for(i=0;ifor(j=2; _______;j++) a[i][j]= _______+a[i-1][j];

}

31、下面程序的功能是求矩阵a的两条对角线上的元素之和。请填空。

#include int main()

{int a[3][3]={1,3,6,7,9,11,14,15,17},s1=0,s2=0,i,j; for(i=0;i<3;i++) for(j=0;j<3;j++) if(i==j)s1=s1+a[i][j]; for(i=0;i<3;i++) for(_______;_______;j--) if((i+j)==2)s2=s2+a[i][j]; printf(\"s1=%d,s2=%d\\n\",s1,s2);

return 0;

}

32、下面程序的运行结果是_______。

#include int main() {inti,j;

for(i=0;i<=3;i++) { for(j=0;j<=5;j++)

if(i==0||j==0||i==3||j==5)printf(\"*\");

else printf(\"\"); printf(\\n\"); return 0;

}

33、以下程序是用递归方法求数组中的最大值及其下标值。请填空( )。

#include # define M10

void findmax(int *a, int n, int i, int * pk) { if(i{ if(a[i]>a[* pk])[1]; findmax([2]); }

int main() { int a[M],i,n=0;

printf(\"\\ nEnter %d data:\\n\ for(i=0;iprintf(\"The maximum is:%d\\n\ printf(\"It's index is:%d\\n\ return(0); }

四、编程题

34、定义一个带参数的宏,用来判断一个字符是否为字母。编写主函数,从键盘输入一个字符,调用上述宏输出判断结果。

35、用switch语句编程实现以下函数关系: −1 (x<0) y={0 (x=0)

1 (x>0)

参考答案

一、填空题

1、【1】t=a【2】c=t 2、【1】a[0]=2a[1]=1

【2】因实参是地址,已对指定地址中的内容进行了交换。 3、36

4、【1】用户标识符【2】预定义标识符 5、1

6、【1】0【2】6

7、a &040或a&0×20或a&32 8、【1】.c【2】.obj【3】.exe

9、【1】顺序结构【2】选择结构【3】循环结构 10、m

二、选择题

11、B 12、C

13、C 14、D

15、D 16、A

17、D 18、B 19、D 20、C 21、B 22、B 23、B 24、B 25、B

三、读程序填空

26、3.6 27、(1)10 (2)口口口囗10 (3)56.100000

(4)口口口口口口3.141600 (5)5.68100e+02 (6)口口口3.14160e+00 (7)3.1416

(8)口口口口囗囗3.1416 (注:答案中的囗代表空格) 28、b=2

29、if(a>b){scanf(\"%d\",&a);n++;} else{scanf(\"%d\",&b);m++;} 30、【1】i=1【2】j<=i-1【3】a[i-1][j-1] 31、【1】j=2【21j>=0 32、* * * * * * * * * * * * * * * *

33、【1】*pk=i【2】a,n,i+1,&(*pk)

四、编程题

34、/*判断是否是字母*/

#include #define ISALPHA(ch)

((ch>='A'&&ch<='Z')||(ch>='a'&&ch<='z '))?1:0 int main() {char c;

printf(\"Enter a letter:\"); scanf(\"%c”,8c);

if(ISAL.PHA(c))printf(\"%c is an alpha.\\n\",c); else printf(\"%cis not an alpha.\\n\",c); return 0;

}

35、#include int main() {float x;int y; printf(\\n input x:\"); scanf(\"%f\",8.x); switch(x<0)

{case 1:y=-1;break; case 0:switch(x==0)

{case 1:y=0; break; default:y=1; } }

printf(\\n y=%d',y); return 0; }

因篇幅问题不能全部显示,请点此查看更多更全内容