2022年长春电子科技学院公共课《C语言》科目期末试卷B(有答案)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2022年长春电子科技学院公共课《C语言》科目期末试卷B(有答案)
一、填空题
1、假设变量a和b均为整型,以下语句可以不借助任何变量把a、b中的值进行交换。
请填空。
a+=_______;b=a-_______;a-=_______;
2、C语言源程序的基本单位是________
3、一个C语言源程序由若干函数组成,其中至少应含有一个________
4、表达式x=6应当读做_______
5、若采用十进制数的表示形式,则077为_______,0111为_______,0xab为
_______。
6、设x的二进制数是11001101,若想通过x&y运算使x中的低4位不变,高4位清零,则y的二进制数是_______。
7、函数swap(int x,inty)可完成对x和y值的交换。
在运行调用函数中的如下语句后,a[0]和a[1]的值分别为_______,原因是_______。
a[o]=1;a[1]=2;
swap(a[o],a[1]);
8、若有定义:inta[3][4]={{1,2},{0},{4,6,8,10}};,则初始化后,a[1][2]得到的初值是_______,a[2][1]得到的初值是_______。
9、设有以下宏定义:
#define WIDTH 80
#define LENGTH WIDTH+40
则执行赋值语句:v=LENGTH*20;(v为int型变量)后,v的值是_______。
10、若有以下定义和语句:
int*p[3],a[6],i;
for(i=0;i<3;i++)
p[i]=8&a[2*i];
则*p[0]引用的是a数组元素_______,*(p[1]+1)引用的是a数组元素_______。
二、选择题
11、下面4个选项中,是正确的数值常量或字符常量的选项是( )
12、对应以下各代数式中,若变量a和x均为double类型,则不正确的C语言表达式是( )
13、一个C程序的执行是从()
A.本程序的main函数开始,到main函数结束
B.本程序的第一个函数开始,到本程序文件的最后一个函数结束
C.本程序的main函数开始,到本程序文件的最后一个函数结束
D.本程序的第一个函数开始,到本程序main函数结束
14、C语言规定:在一个源程序中,main函数的位置( )
A.必须在最开始
B.必须在系统调用的库函数的后面
C.可以任意
D.必须在最后
15、若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为。
(假设
a[0][0]位于数组的第一个位置上)()
A.i*m+j
B.j*m+i
C.i*m+j-1
D.i*m+j+1
16、以下针对scanf函数的叙述中,正确的是()。
A.输入项可以为一实型常量,如scanf("%f",3.5);
B.只有格式控制,没有输入项,也能进行正确输入,如scanf("a=%d,b=%d");
C.当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf
("%4.2f",&f);
D.当输入数据时,必须指明变量的地址,如scanf("%f",&f);
17、若有以下定义和语句,则对a数组元素的正确引用为()。
int a[2][3],(*p)[3];
p=a;
A.(p+1)[0]
B.*(*(p+2)+1)
C.*(p[1]+1)
D.p[1]+2
18、C语言规定,简单变量作为实参时,它和对应形参之间的数据传递方式是()
A.地址传递
B.单向值传递
C.由实参传给形参,再由形参传回给实参
D.由用户指定传递方式
19、以下正确的描述是()。
A.continue语句的作用是结束整个循环的执行
B.只能在循环体内和switch语句体内使用break语句
C.在循环体内使用break 语句或continue语句的作用相同
D.从多层循环嵌套中退出时,只能使用goto语句
20、执行语句for(i=1;i++<4;);后变量i的值是()。
A.3
B.4
C.5
D.不定
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、下面程序的功能是从键盘输入一行字符,统计其中有多少个单词,单词之间用空格分隔。
请选择填空。
( )
#include<stdio.h>
int main()
{char s[80],c1,c2='';int i=0,num=0;
gets(s);
while(s[i]!='\o')
{ c1=s[i];
if(i==0)c2='';
else c2=s[i-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、当运行以下程序时,从键盘输入:
ab<回车>
C<回车>
def<回车>
则下面程序的运行结果是()。
#include <stdio.h>
#defineN6
int main()
{charc[N];
int i=0;
for(;i<N;c[i]=getchar(),i++);
for(i=0;i<N;i++)
putchar(c[i]);
return 0;
}
A.abcdef
B.a
C.b
D.ab
b c c
c d d
e
f
24、以下程序的正确运行结果是()。
#include <stdio.h>
void num()
{extern int x,y;int a=15,b=10;
x=a-b;y=a+b;
int x,y;
int main()
{int a=7,b=5;
x=a+b;y=a-b;
num();
printf("%d,%d\n",x,y);
return(0);
}
A.12,2
B.不确定
C.5,25
D.1,12
25、下面程序段的运行结果是()。
for(y=1;y<10;)y=((x=3*y,x+1),x-1);
printf("x=%d,y=%d",x,y);
A.x=27,y=27
B.x=12,y=13
C.x=15,y=14
D.x=y=27
三、读程序填空
26、以下程序的输出结果是_______。
#include<stdio.h>
int main()
{int a=252;
printf("a=%oa=%#o\n",a,a);
printf("a=%xa=%#x\n",a,a);
return 0;
}
27、以下printf语句中的负号的作用是_______,该程序的输出结果是_______。
#include<stdio.h>
int main()
{int x=12;
double a=3.1415926;
printf("%6d##\n",x);
printf("%一6d##\n",x);
printf("%14.101f##\n",a);
printf("%-14.101f##\n",a);
return 0;
}
28、以下程序的运行结果是_______。
#include<stdio.h>
void sub(int x,int y);
int x1=30,x2=40;
int main()
{int x3=10,x4=20;s
ub(×3,×4);
sub(x2,x1);
printf("%d,%d,%d,%d\n",x3,x4,x1,x2);
return(0);
void sub(int x,int y)
{x1=x;
x=y;
y=x1;
}
29、以下程序的运行结果是_______。
#include<stdio.h>
int fact(int value);
int main()
{printf("FACT(5):%d\n",fact(5));
printf("FACT(1):%d\n",fact(1));
fact(-5);
return(0);
}
int fact(int value)
{if(value<0)
{printf("FACT(-1):Error!\n");
return(-1);}
else if(value==1llvalue==0)return(1);
else return(value*fact(value-1));
}
30、下面程序的功能是计算100~1000之间有多少个数其各位数字之和是5。
请填空。
#include<stdio.h>
int main()
{int i,s,k,count=0;
for(i=100;i<=1000;i++)
{s=0;k=i;
while(_______){s=s+k%10;k=_______;}
if(s!=5)_______;
else count++;
}
printf("%d",count);
return0;
}
31、以下程序是将矩阵a、b的和存入矩阵c中并按矩阵形式输出。
请填空。
#include<stdio.h>
int main()
{int a[3][4]={{3,一2,7,5},{1,0,4,一3},{6,8,0,2}};
int b[3][4]={{-2,0,1,4},{5,一1,7,6},{6,8,0,2}};
int i,j,c[3][4];
for(i=0;i<3;i++)
for(j=0;j<4;j++)c[i][j]=_______;
for(i=0;i<3;i++)
{for(j=0;j<4;j++)printf("%3d",c[i][j]);
_______;
}
return 0;
}
32、以下程序的输出结果是_______。
#include<stdio.h>
int main()
{intx,y;x=5;switch(x)
{case1:
case2:
case3:
case 4:printf("x<5\n");
case 5:printf("x=5\n",x);
default:printf("The value of x is unknown.\n");
}
return0;
}
33、设有以下main函数,它所在的文件名为filel。
#include<stdio.h>
#include <ctype.h>
int main(int argc,char*argv[])
{char*str;
int num=0;
if(argc<2)return(0);
str=argv[1];
while(*str)
if(isalpha(*str++))num++;
printf("\nThe count is:%d.\n",num);
return(0);若输入的命令行参数为: file1 1234abc<回车>
则执行以上命令行后得到的输出结果是_______。
四、编程题
34、请编写程序实现文件的复制。
即将源文件复制到目的文件,两个文件名均由
命令行给出,源文件名在前。
35、设有一个unsignedlong型整数,现要分别将其前2个字节和后2个字节作为2
个unsigned int型整数输出(设一个int型数据占2个字节),试编一函数partition 实现上述要求。
要求在主函数中输入该long型整数,在函数partition中输出结果。
参考答案
一、填空题
1、【1】b【2】b【3】b
2、函数
3、主函数(或main函数)
4、将常量6赋给变量x
5、【1】63【2】73【3】171
6、00001111
【1】7、a[0]=1 a[1]=2
【2】单向值传递,不能返回交换后的值。
8、【1】0【2】6
9、880
10、【1】a[0]【2】a[3]
二、选择题
11、D
12、C
13、A
14、C
15、D
16、D
17、C
18、B
19、B
20、C
21、A
22、B
23、D
24、D
25、C
三、读程序填空
26、a=374囗囗a=0374
a=fc囗囗a=0xfc
(注:答案中的囗代表空格)27、【1】输出数据左对齐
【2】囗囗囗012##
12口囗囗囗##
囗囗3.141592600##
3.141592600囗囗##
(注:答案中的囗代表空格)
28、10,20,40,40
29、FACT(5):120
FACT(1):1
FACT(-1):Error!
30、【1】k【2】k/10【3】continue
31、【1】a[i][j]+b[i][i]【2】printf("\n")
32、x=5
The value of x is unknown.
33、The count is:3.
四、编程题
34、#include <stdio.h>
FILE*source,*target;
int main(int argc,char*argv[])
{char c;
if(argc!=3)
printf("Error!\n");
else
{source=fopen(argv[1],"rb");
target=fopen(argv[2],"wb");
while(!feof(source))
{c=getc(source);
putc(c,target);
fclose(source);
fclose(target);
}
return 0;
}
35、void partition(unsigned long int num){union a
{unsigned int part[2];
unsigned long int w;
}n,*p;
p=&n;n.w=num;
printf("long int=%lx\n",num);
printf("low-part num=%0x,high-part num=%0x\n",p->part[0],p->part[1]);
int main()
{unsigned long intx;
x=0×23456789;
partition(x);
return 0;
}。