2022年北京交通职业技术学院公共课《C语言》科目期末试卷B(有答案)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2022年北京交通职业技术学院公共课《C语言》科目期末试卷B(有
答案)
一、填空题
1、假设变量a和b均为整型,以下语句可以不借助任何变量把a、b中的值进行交换。

请填空。

a+=_______;b=a-_______;a-=_______;
2、函数swap(arr,n)可对arr数组从第1个元素到第n个元素分别进行两两元素
交换。

在运行调用函数中的如下语句后,a[o]和a[1]的值分别为_______,原因是
_______。

a[0]=1;a[1]=2;swap(a,2);
3、下面add函数的功能是求两个参数的和,并将和值返回调用函数。

函数中错误的部分
是_______,改正后为_______。

void add(float a,float b)
{float c;
c=a+b;
return c;
}
4、若x和y都是double型变量,且x的初值为3.0,y的初值为2.0,则表达式.pow (y,fabs(x))的值为_______
5、在C语言中,8作为双目运算符时表示的是_______,而作为单目运算符时表示的是_______。

6、字符串"ab\n\\012\\\"”的长度是_______。

7、设有char a,b;若要通过a&b运算屏蔽掉a中的其他位,只保留第2和第8位(右起为第1位),则b的二进制数是_______。

8、C语言源程序的基本单位是________
9、C语言源程序文件的后缀是;经过编译后,生成文件的后缀是;经过
连接后,生成文件的后缀是
10、以下程序段通过指针变量q,但不移动q,将如图所示连续动态存储单元的值,从第一个元素起依次输出到终端屏幕。

请填空。

(假设程序段中的所有变量均已正确说明。


for(k=0;k<10;k++) printf("%d,",_______); printf("\n");
二、选择题
11、下面4个选项中,是C语言关键字的选项是( )。

A.auto
B. switch
C. signed
D. if
Enum typedef union struct
include continue scanf type
12、对应以下各代数式中,若变量a和x均为double类型,则不正确的C语言表达
式是( )
13、以下叙述不正确的是( )
A.一个C源程序可由一个或多个函数组成
B.一个C源程序必须包含一个main函数
C.C程序的基本组成单位是函数
D.在C程序中,注释说明只能位于一条语句的后面
14、一个C程序的执行是从()
A.本程序的main函数开始,到main函数结束
B.本程序的第一个函数开始,到本程序文件的最后一个函数结束
C.本程序的main函数开始,到本程序文件的最后一个函数结束
D.本程序的第一个函数开始,到本程序main函数结束
15、若有函数max(a,B.,并且已使函数指针变量p指向函数max,当调用该函数时,正确的调用方法是()
A.(*p)max(a,
B.; B.*pmax(a,B.;
C.(*p)(a,B.;
D.*p(a,B.;
16、以下程序的运行结果是()。

#include <stdio.h>
int main()
{int m=5,n=10;
printf("%d,%d\n",m++,--n):
return 0;
}
A.5,9
B.6,9
C.5,10
D.6,10
17、以下不是无限循环的语句为()。

A.for(y=0,x=1;x>++y;x=i++)i=x;
B.for(;;x++=i):
C.while(1){x++;}
D.for(i=10;;i-一)sum+=i;
18、以下程序有语法性错误,有关错误原因的正确说法是()。

#include <stdio.h>
int main()
{int G=5,k;
void prt_char();
-----
k=prt_char(G);
---
}
A.语句void prt_char();有错,它是函数调用语句,不能用void说明
B.变量名不能使用大写字母
C.函数说明和函数调用语句之间有矛盾
D.函数名不能使用下划线
19、下面程序段的运行结果是()。

charc[]=\t\\\\owil\n";
printf("%d",strlen(C.);
A.14
B.3
C.9
D.字符串中有非法字符,输出值不确定
20、若有说明:int a[][4]={0,0};,则下面不正确的叙述是()。

A.数组a的每个元素都可得到初值0
B.二维数组a的第一维大小为1
C.因为二维数组a中第二维大小的值除以初值个数的商为1,故数组a的行数为1
D.只有元素a[o][o]和a[o][1]可得到初值0,其余元素均得不到初值0
21、以下程序的输出是()。

#include <stdio.h>
int main()
{int x=1;
if(x=2)
printf("OK");
else if(x<2)printf("%d\n",x);
else printf("Quit");
return 0;
}
A.OK
B.Quit
C.1
D.无输出结果
22、对两个数组a和b进行如下初始化:
char a[]="ABCDEF";charb[]={'A','B','C','D','E','F'};则以下叙述正确的是()。

A.a与b数组完全相同
B.a与b长度相同
C.a和b中都存放字符串
D.a的长度比b长
23、下面程序的运行结果是()。

#include<stdio.h>
int main()
{chara[]="morming",t;int i,j=0;
for(i=1;i<7;i++)
if(a[j]<a[ ]) j=i;
t=a[j];a[j]=a[7];
a[7]=a[j]; puts(a);
return 0;
}
A)mogninr B)mo C)morning D)mornin
24、折半查找法的思路是:先确定待查元素的范围,将其分成两半,然后测试位
于中间点元素的值。

如果该待查元素的值大于中间点元素,就缩小待查范围,只测试中点之后的元素;反之,测试中点之前的元素,测试方法同前。

函数binary的作用是应用折半查找法从存有10个有序整数的a数组中对关键字m进行查找,若找到,返回其下标值;反之,返回-1。

请选择填空。

int binary(int a[10],int m)
{int low=0,high=9,mid;
while(low<=high)
{mid=(low+high)/2;
if(m<a[mid])high=mid-1;
else if(m>a[mid])【】;
else return(miD.;
return(一1);
}
A.high=mid-1
B.low=mid+1
C.high=mid+1
D.low=mid-1
25、下面程序的运行结果是( )。

#include<stdio.h>
int main()
{int y=10;
do{y--;}
while(--y);
printf("%d\n",y--);
return 0;
}
A)-1 B)1 C)8 D)0
三、读程序填空
26、已有定义int d=-2;执行以下语句后的输出结果是_______。

printf("*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);
27、以下程序的输出结果为_______.
#include <stdio.h>
int main()
{printf("*%f,%4.3f*\n",3.14,3.1415);
return0;
}
28、将以下两条if语句合并成一条if语句为_______。

语句1:if(a>b)scanf("%d",8&a);
else scanf("%d",&b);
语句2:if(a<=b)m++;
else n++;
29、以下程序的功能是_______。

#include<stdio.h>
int main()
{int x,y,sum,product;
printf("Enterxand y:");
scanf("%d,%d",&x,&y);
sum=x+y;
product=x*y;
if(sum>product)
printf("(x+y)>(x*y)");
else
printf("(x*y)>=(x+y)");
return 0;
}
30、下面程序的功能是_______,运行结果是_______。

#include<stdio.h>
long fib(int g)
{switch(g)
{case 0:return 0;
case 1:case 2:return1;
}
return(fib(g-1)+fib(g-2));
int main()
{long k;
k=fib(7);
printf("k=%d\n",k);
return(0);
}
31、下面程序的运行结果是_______。

#include <stdio.h>
int main()
int i,j,row,col,min;
{int a[3][4]={{1,2,3,4},{9,8,7,6},{一1,一2,0,5}};
min=a[0][ 0];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
if(a[l[j]<min)
{min=a[i][j];row=i;col=j;}
printf("min=%d,row=%d,col=%d\n",min,row,col);
return 0;
}
32、下面程序的功能是用do-while语句求1~1000之间满足“用3除余2,用5除余3,用7除余2”的数,且一行只打印5个数。

请填空。

#include<stdio.h>
int main()
{inti=1,j=0;do
{if(_______)
{printf("%4d",i);
j=j+1;
if(_______)printf(\n");
}
i=i+1;
}while(i<1000);
return 0;
}
33、下面程序的运行结果是_______。

#include <stdio.h>
#define SIZE12
void sub(char*a,int tl,int t2);
int main()
{char s[SIZE];
int i;
for(i=0;i<SIZE;i++)s[i]='A'+i+32;
sub(s,7,SIZE-1);
for(i=0;i<SIZE;i++)
printf("%c",s[i]);
printf("\n");
return(0);
}
void sub(char*a,int tl,int t2)
{char ch;while(t1<t2)
{ch=*(a+tl);
*(a+t1)=*(a+t2);
*(a+t2)=ch;
t1++;t2--;
}
}
四、编程题
34、从键盘输入一个字符串a,并在a串中的最大元素后边插入字符串b(b[]= "ab")。

试编程。

35、试利用结构体类型编制一个程序,实现输入一个学生的数学期中和期末成绩,然后计算并输出其平均成绩。

参考答案
一、填空题
1、【1】b【2】b【3】b
2、【1】a[0]=2a[1]=1
【2】因实参是地址,已对指定地址中的内容进行了交换。

3、【1】void add(float a,float b)【2】float add(float a,float b)
4、8.000000
5、【1】按位与【2】地址与
6、9
7、10000010
8、函数
9、【1】.c【2】.obj【3】.exe
10、*(q+k)或q[k]
二、选择题
11、B
12、C
13、D
14、A
15、C
16、A
17、A
18、C
19、B
20、D
21、A
22、D
23、B
24、C
25、D
三、读程序填空
26、*d(1)=-2*d(2)=囗-2*d(3)=-2囗**d(4)=177776*d(5)=囗177776*d(6)=177776囗*
(注:答案中的囗代表空格)
27、*3.140000,3.142*
28、if(a>b){scanf("%d",&a);n++;}
else{scanf("%d",&b);m++;}
29、输入两个数x、y,比较x+y和x*y哪个大。

30、【1】计算斐波拉契级数第7项的值。

【2】k=13
31、min=-2,row=2,col=1
32、【1】i%3==2&&i%5==3&&i%7==2【2】j%5==0
33、abcdefglkjih
四、编程题
34、#include <stdio.h>
#include<string.h>
int main()
{char a[80],b[]="ab",max;
int i=1,j;
printf("Input a string\n");
gets(a);
puts(a);
max=a[0];while(a[i]!='\o')
{if(a[i]>max)
{max=a[];j=i;}
i++;
}
for(i=strlen(a)+2;i>j;i--)
a[i]=a[i-2];
a[i+1]='a';
a[i+2]='b';
puts(a);
return 0;
}
35、#include<stdio.h>
int main()
{struct study int mid;
int end;
int average;
}math;
scanf("%d%d",&math.mid,&.math.end);
math.average=(math.mid+math.end)/2;
printf("average=%d\n",math.average);
return 0;
}。

相关文档
最新文档