2022年浙江师范大学公共课《C语言》科目期末试卷B(有答案)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2022年浙江师范大学公共课《C语言》科目期末试卷B(有答案)
一、填空题
1、若有以下定义和语句,为使变量c1得到字符’A',变量c2得到字符’B’,正确的输入形式是_______。
char cl,c2;
scanf("%4c%4c",&cl,8&c2);
2、C语言的源程序必须通过【】和【】后,才能被计算机执行。
3、在C语言源程序中,一个变量代表【】。
4、若有定义语句:inte=1,f=4,g=2;float m=10.5,n=4.0,k;,则执行表达式k=(e+f)/g+sqrt((double)n)*1.2/g+m后k的值是_______。
5、若a是int型变量,则执行表达式a=25/3%3后a的值为_______
6、设x为无符号整数。
表达式x^(~(~0<<n)<<(p+1-n)))的作用是将x 中从第p位开始的n位求反(1变0,0变1),其他位不变。
请按表达式的求值顺序写出分解步骤,并解释含义。
__________________________________
7、函数swap(int x,inty)可完成对x和y值的交换。
在运行调用函数中的如下语句后,a[0]和a[1]的值分别为_______,原因是_______。
a[o]=1;a[1]=2;
swap(a[o],a[1]);
8、若有定义floata[3][5];则a数组所含数组元素个数是_______,a数组所占的字节数是_______。
9、若有定义:inta[3][4]={{1,2},{0},{4,6,8,10}};,则初始化后,a[1][2]得到的初值是_______,a[2][1]得到的初值是_______。
10、以下程序段通过指针变量q,但不移动q,将如图所示连续动态存储单元的值,从第一个元素起依次输出到终端屏幕。
请填空。
(假设程序段中的所有变量均已正确说明。
)
for(k=0;k<10;k++) printf("%d,",_______); printf("\n");
二、选择题
11、下面4个选项中,是合法转义字符的选项是( )。
A.’\"
B. '\ '
C. ' \018'
D. '\\o'
'\\ ' ' \017' '\f' '\10l'
'\n' '\ " ' xab' ' xlf'
12、下面4个选项中,是合法整型常量的选项是( )。
A.160
B.-0xcdf
C.-01
D.-0x48a
-0xffff 01a 986 0122e5
011 0xe 066 80x
13、以下叙述正确的是
A.在C程序中,main函数必须位于程序的最前面
B.C程序的每行中只能写一条语句
C.C语言本身没有输入输出语句
D.在对一个C程序进行编译的过程中,可以发现注释中的拼写错误
14、以下叙述不正确的是( )
A.一个C源程序可由一个或多个函数组成
B.一个C源程序必须包含一个main函数
C.C程序的基本组成单位是函数
D.在C程序中,注释说明只能位于一条语句的后面
15、若有定义float x[4]={1.3,2.4,5.6},y=6;,则错误的语句是()。
A.y=x[3];
B.y=x+1;
C.y=x[2]+1;
D.x[0]=y;
16、以下C程序的运行结果是。
(注:口表示空格)
#include<stdio.h>
int main()
{int y=2456;
printf("y=%3o\n",y);
printf("y=%8o\n",y);
printf("y=%#8o\n",y);
return 0;
}
A.y=口口口2456
B.y=囗口□4630
y=口口口口口口口口2456 y=口口口口口口口04630
y= ########2456 y= ########4630
C.y=2456
D.y=4630
y=口口口口2456 y=口口口口4630
y=口口口02456 y=口口口04630
17、若有说明:char*language[]={"FORTRAN","BASIC","PASCAL",JAVA","C"};则以下不正确的叙述是()
nguage+2表示字符串”PASCAL”的首地址
B.*language[2]的值是字母P
nguage是一个字符型指针数组,它包含5个元素,每个元素都是一个指向字符串变量的指针
nguage是一个字符型指针数组,它包含5个元素,其初值分别是:"FORTRAN","BASIC","PASCAL","JAVA","C"
18、若用数组名作为函数调用的实参,则传递给形参的是()
A.数组的首地址
B.数组第一个元素的值
C.数组中全部元素的值
D.数组元素的个数
19、语句while(!E);中的表达式!E等价于()。
A.E==0
B.E!=1
C.E!=0
D.E==1
20、若i为整型变量,则以下循环执行次数是()。
for(i=2;i==0;)printf("%d",i--);
A.无限次
B.0次
C.1次
D.2次
21、以下程序的输出是()。
#include<stdio.h>
int main()
{int x=2,y=-1,z=2;
if(x<y)
if(y<0)z=0;
else z+=1;
printf("%d\n",z);
return 0;
A)3 B.2 C.1 D.0
22、下面程序的运行结果是()。
#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
23、定义如下变量和数组:
int k;int a[3][3]={1,2,3,4,5,6,7,8,9};则下面语句的输出结果是()。
for(k=0;k<3;k++)printf("%d",a[k][2-k]);
A)3 5 7 B)3 6 9 C)1 5 9 D)1 4 7
24、以下程序的正确运行结果是()。
#include <stdio.h>
#define MAX10
void sub2(),sub1(),sub3(int*A.;int a[MAX],i;
int main()
{printf("\n");subl();sub3(a);sub2();sub3(a); return(O);
void sub2( )
{int a[MAX],i,max;
max=5;
for(i=0;i<max;i++)
a[i]=i;
}
void subl()
{for(i=0;i<MAX;i++) a[i]=i+i;
void sub3(int a[])
{int i; for(i=0;i<MAX;i++)
printf("%d",a[i]);
printf("\n");
}
A)0 2 4 6 8 10 12 14 16 18
0 1 2 3 4
B)0 1 2 3 4
0 2 4 6 8 10 12 1416 18
C)0 1 2 3 4 5 6 7 8 9
0 1 2 3 4
D)0 2 4 6 8 10 12 14 16 18
0 2 4 6 8 10 12 14 16 18
25、若运行以下程序时,从键盘输入3.62.4<回车>,则下面程序的运行结果是()
# include<stdio.h>
# include<math.h>
int main()
{ float x,y,z;
scanf("%f%f",&x,&y);
z=x/y;
while(1)
if(fabs(z)>1.0){x=y;y=z;z=x/y;}
else break;
printf("%f\n",y);
return 0;
}
A)1.500000 B)1.600000 C)2.000000 D)2.400000
三、读程序填空
26、以下程序的输出结果为_______.
#include <stdio.h>
int main()
{printf("*%f,%4.3f*\n",3.14,3.1415);
return0;
}
27、以下程序的输出结果是_______。
#include <stdio.h>
int main()
{int a=325;
double x=3.1415926;
printf("a=%+06dx=%+e\n",a,x);
return 0;
}
28、以下程序的运行结果是_______。
#include<stdio.h>
int max(int x,int y);
int main()
{int a=1,b=2,c;
c=max(a,b);
printf("max is%d\n",c);
}
int max(int x,int y)
{int z;
z=(x>y)? x:y;
return(z);
}
29、以下函数fun的功能是:将输入的大写字母,先转换为与其对应的小写字母,然后再转换成该小写字母后的第3个字母,返回后输出。
例如,若输入的字母为E,输出的字母则为h;若输入的字母为Y,输出的字母则为b。
请填空。
#include<stdio.h>
#include <string.h>
char fun(charc)
{!c=_______:
if(c>=1a1&&c<='w')c=c+3;
else if(c>='x'/&&c<='z')_______:
return c;
}
int main()
{char c;
c=getchar();
c=fun(e);
return(0);
}
30、若从键盘输入65 14<回车>,则下面程序的运行结果是_______。
#include <stdio.h>
int main()
{int m,n;
printf("Enter m,n:");
scanf("%d%d”,&m,&n);
while(m!=n)
{while(m>n)m一=n;
while(n>m)n-=m;
printf("m=%d\n",m);
return 0;
}
31、下面程序的功能是在一个字符数组中查找一个指定的字符,若数组中含有该字符,则输出该字符在数组中第一次出现的位置(下标值);否则输出一1。
请填空。
#include <stdio.h>
#include<string.h>
int main()
{charc='a',t[50];int n,k,j;
gets(t);
n=_______;
for(k=0;k<n;k++)
if(_______){j=k;break;}
else j=-1;
printf("%d",j);
return 0;
}
32、以下程序的功能是判断输入的某个年份是否是闰年。
请填空。
#include <stdio.h>
int main()
{int y,f;
scanf("%d",&y);
if(y%400==0)f=1;
else if(_______)f=1;
else_______;
if(f)printf("%d is",y);
else printf("%d is not",y);
printf("a leap year\n");
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、试编程序,找出1~99之间的全部同构数。
同构数是这样一组数:它出现在平方数的右边。
例如:5是25右边的数,25是625右边的数,5和25都是同构数。
35、通过指针数组p和一维数组a构成一个3×2的二维数组,并为a数组赋初值2、4、6、8…。
要求先按行的顺序输出此二维数组,然后再按列的顺序输出它。
试编程。
参考答案
一、填空题
1、A囗囗囗B囗囗囗<回车>
2、【1】编译【2】连接
3、内存中的一个存储单元
4、13.700000
5、2
6、【1】~0得到一个全1的数
【2】(~0<<n)得到一个左端几个1,右端全0的数
【3】~(~0<<n)得到一个左端为0,右端几个1的数
【4】~(~0<<n)<<(p+1-n)将几个1移到以p为起点的位置【5】x^(~(~0<<n)<<(p+1-n))对x中的指定位数用异或求反【1】7、a[0]=1 a[1]=2
【2】单向值传递,不能返回交换后的值。
8、【1】15【2】60
9、【1】0【2】6
10、*(q+k)或q[k]
二、选择题
11、A
12、A
13、C
14、D
15、B
16、D
17、D
18、A
19、A
20、B
21、B
22、B
23、A
24、D
25、B
三、读程序填空
26、*3.140000,3.142*
27、a=+00325囗囗囗x=+3.14159e+00
(注:答案中的囗代表空格)
28、max is 2
29、【1】tolower(c)或c=c+32【2】c=c-23
30、m=1
31、【1】strlen(t)【2】t[k]==c
32、【1】y%4==0&&y%100!=0【2】f=0
33、abcdefglkjih
四、编程题
34、#include <stdio.h>
int main()
{int i;
for(i=1;i<100;i++)
if(i*i%10==ill i*i%100==i)printf("%3d",i);return 0;
}
35、#include <stdio.h>
int main()
{inti,j,a[6]={2,4,6,8,10,12},*p[3];
for(i=0;i<3;i++)p[i]=&a[2*i];
for(i=0;i<3;i++)
{for(j=0;j<2;j++)printf("%4d",p[i][j]);
printf("\n");
}
for(i=0;i<2;i++)
{for(j=0;j<3;j++)printf("%4d",p[j][i]);printf("\n");
}
return(0);
}。