2022年合肥工业大学公共课《C语言》科目期末试卷B(有答案)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2022年合肥工业大学公共课《C语言》科目期末试卷B(有答案)
一、填空题
1、执行以下程序时,若从第一列开始输入数据,为使变量a=3、b=7、x=8.5、y=71.8
2、c1='A'、c2='a',正确的数据输入形式是_______。
#include <stdio.h>
int main()
{int a,b;
float x,y;
char cl,c2;
scanf("a=%d b=%d",&.a,&.b);
scanf("x=%f y=%",8.x,8.y);
scanf("c1=%cc2=%c”,8.cl,8.c2);
printf("a=%d,b=%d,x=%f,y=%f,cl=%c,c2=%c",a,b,x,y,cl,c2);
return0;
}
2、C语言源程序的基本单位是________
3、在C语言中,输入操作是由库函数________完成的,输出操作是由库函数
________完成的。
4、若a是int型变量,则执行表达式a=25/3%3后a的值为_______
5、若a是int型变量,则表达式(a=4*5,a*2),a+6的值为_______。
6、设x的二进制数是11001101,若想通过x&y运算使x中的低4位不变,高4位清零,则y的二进制数是_______。
7、下面add函数的功能是求两个参数的和,并将和值返回调用函数。
函数中错误的部分是_______,改正后为_______。
void add(float a,float b)
{float c;
c=a+b;
return c;
}
8、设有以下宏定义:
#define WIDTH80
#define LENGTH(WIDTH+40)
则执行赋值语句:k=LENGTH*20;(k为int型变量)后,k的值是_______。
9、下面程序wdm的运行结果是_______。
int i,x[10]={2,3,0,3,0,2,3,2,1,3},y[4]={0};
for(i=0;i<10;i++)y[x[i]]++;
printf("%d\n",y[3]);
10、下面程序段的运行结果是_______。
chara[]="12345",*p;
int s=0;
for(p=a;*p!=\0';p++)
s=10*s+*p-'o';
printf("%d\n",s);
二、选择题
11、对应以下各代数式中,若变量a和x均为double类型,则不正确的C语言表达式是( )
12、下面4个选项中,是不合法的用户标识符的选项是( )。
A.A
B.float
C.b-a
D._123
P_01 a0 goto temp
Do A int INT
13、以下叙述正确的是
A.在C程序中,main函数必须位于程序的最前面
B.C程序的每行中只能写一条语句
C.C语言本身没有输入输出语句
D.在对一个C程序进行编译的过程中,可以发现注释中的拼写错误
14、一个C语言程序由( )。
A.一个主程序和若干子程序组成
B.函数组成
C.若干过程组成
D.若干子程序组成
15、有下面的程序段:
char a[3],b[]="China”;a=b;printf("%s",A.;则()。
A.运行后将输出China
B.运行后将输出Ch
C.运行后将输出Chi
D.编译出错
16、已有定义intx;floaty;且执行scanf("%3d%f”,&x,&y);语句,若从第一列开始输入数据12345口678<回车>,则 y的值为( )。
(注:口表示空格)
A.无定值
B.45.000000
C.678.000000
D.123.000000
17、下面程序段的运行结果是()。
char pl[]="abcdefgh",*p=pl;
p+=3;
printf("%d\n",strlen(strcpy(p,"ABCD")));
A.8
B.12
C.4
D.7
18、若用数组名作为函数调用的实参,则传递给形参的是()
A.数组的首地址
B.数组第一个元素的值
C.数组中全部元素的值
D.数组元素的个数
19、设有程序段:
int k=10;while(k=0)k=k-1;
则下面描述中正确的是()。
A.while循环执行10次
B.循环是无限循环
C.循环体语句一次也不执行
D.循环体语句执行一次
20、下列程序段不是死循环的是()。
A)i nti=100;
while(1)
{i=i%100+1;if(i>100)break;
B.for(;;);
C.int k=0;do{++k;}while(k>=0);
D.int s=36;while(s);--s;
21、若变量都已正确定义,则以下程序段的输出是()。
a=10;b=50;c=30;
if(a>B.a=b,b=c;
c=a;
printf("a=%db=%dc=%d\n".a,b,C.;
A.a=10 b=30 c=10
B.a=10 b=50 c=10
C.a=50 b=30 c=10
D.a=50 b=30 c=50
22、下面程序的功能是将已按升序排好序的两个字符串a和b中的字符按升序归并到字符串c中。
请选择填空。
#include<stdio.h>
#include<string.h>
int main()
{char a[]="acegikm",b[]="bdfhjlnpq";
charc[80],*p;
int i=0,j=0,k=0;
while(a[i]!=\o'&&b[j]!='\o')
{if(a[i]<b[j]){ c[k]=a[i];i++}
else{【】}
k++;
}
c[k]='\o';
if(a[i]== '\0')p=b+j;
else p=a+i;
strcat(c,p);
puts(C.;
return 0;
}
A.c[k]=a[i];i++;
B.c[k]=a[j];i++;
C.c[k]=a[i];j++;
D.c[k]=a[j];j++;
23、当运行以下程序时,从键盘输入:
aa bb<回车>
ccdd<回车>
则下面程序的运行结果是()。
#include<stdio.h>
int main()
{char al[5],a2[5],a3[5],a4[5];
scanf("%s%s",al,a2);
gets(a3);gets(a4);
puts(a1);puts(a2);
puts(a3);puts(a4);
return 0;
}
A)aa B)aa C)aa D)aa bb
bb bb bb cc
cc cc dd dd
cc dd dd ee
24、以下程序的运行结果是()。
#include<stdio.h>
void fun(int x)
{if(x/2>0)fun(x/2-2);
printf("%d”,x);
}
int main()
{ fun(20);
printf("\n");
return(0);
}
A.2082-1
B.2820
C.8
D.-12820
25、下面程序的功能是在输入的一系列正整数中求出最大者,输入0结束循环,请选择填空()。
#include <stdio.h>
{int a,max=0;
scanf("%d”,8.A.;
while(【】)
{ if(max<A.max=a;
scanf("%d”,&-A.;
printf("%d”,max);
return0;
}
A.a==0
B.a
C.!a==1
D.!a
三、读程序填空
26、以下程序的输出结果为_______。
#include<stdio.h>
int main()
{short i;
i=一4;
printf("\ni:dec=%d,oct=%o,hex=%x,unsigned=%u\n",i,i,i,i);return 0;
}
27、以下printf语句中*号的作用是_______,输出结果是_______。
#include <stdio.h>
{inti=1;printf("##%*d\n",i,i);
i++;
printf("##%*d\n",i,i);
i++;
printf("##%*d\n",i,i);
return 0;
}
28、下面函数pi的功能是:根据以下公式,返回满足精度(0.0005)要求的x的值。
请填空。
π2=1+
1
3
+
1
3
∗
2
5
+
1
3
∗
2
5
∗
3
7
+⋯
# include<conio.h>
# include<math.h>
# include<stdio.h> double pi(double eps) { double s=0.0,t=1.0; int n; for(_______;t>eps;n++)
{s+=t;
t=n*t/(2*n+1);
}
return(_______);
}
int main()
{ double x=0.0005;
printf("\ neps=% lf, π =% If",x, pi(x));
return(0);
}
29、若输入的值是-125,则以下程序的运行结果是_______。
#include<stdio.h>
#include<math.h>
void fun(int n)
int main()
{int n;
scanf("%d",8.n);
printf("%d=",n);
if(n<0)printf("-");
n=abs(n);
fun(n):
return(0);
}
void fun(int n)
{int k,r;
for(k=2;k<=sqrt(n);k++)
{r=n%k; while(r==0)
{printf("%d",k);
n=n/k;
if(n>1) printf("*");
r=n%k;
}
if(n!=1)printf("%d\n",n);
}
30、用0~9之间不同的3个数构成一个3位数,下面程序将统计出共有多少种方法。
请填空。
#include<stdio.h>
int main()
{int i,j,k,count=0;
for(i=1;i<=9;i++)
for(j=0;j<=9;j++)
if(_______)continue;
else
for(k=0;k<=9;k++)
if(_______) count++;
printf("%d",count);
return 0;
}
31、下面程序的功能是输入5个整数,找出最大数和最小数所在的位置,并把二者对调,然后输出调整后的5个数。
请填空。
#include<stdio.h>
int main()
{int a[5],max,min,i,j=0,k=0;
for(i=0;i<5;i++)
scanf("%d",&a[i]);
min=a[o];
for(i=1;i<5;i++)
if(a[i]<min){min=a[i];_______;}
max=a[0];
for(i=1;i<5;i++)
if(a[i]>max){max=a[i];_______;}
_______
printf("\nThe position of min is:%3d\n",k);
printf("The position of max is:%3d\n",j);
for(i=0;i<5;i++)
printf("%5d",a[i]);
return 0;
}
32、若运行以下程序时输入:35/<回车>,则程序的运行结果是_______。
#include <stdio.h>
int main()
{float x,y;
char o;
double r;
scanf("%f%f%c",&x,&y,&o);
switch(o)
{case'+':r=x+y;break;
case'-':r=x-y;break;
case'*':r=x*y;break;
case'/':r=x/y;break;
printf("%f",r);
return 0;
}
33、以下程序的运行结果是_______。
#include <stdio.h>
void fun(int*n)
{while((*n)--);
printf("\n%d",*n);
int main()
{int a=10;
fun(&a);
return(0);
}
四、编程题
34、已知计算三角形面积的公式为:area=√s(s−a)(s−b)(s−c),其中s=1
(a
2
+b+c),这里a、b、c分别为三角形的三条边。
请编写程序:定义两个带参的宏,分别实现上述两个公式,并引用所定义的宏计算三角形面积。
35、通过循环按行顺序为一个5×5的二维数组a赋1~25的自然数,然后输出该数组的左下三角。
试编程。
参考答案
一、填空题
1、a=3囗b=7x=8.5囗y=71.82c1=ADc2=a<回车>
(注:答案中的囗代表空格)
2、函数
3、【1】scanf【2】printf
4、2
5、26
6、00001111
7、【1】void add(float a,float b)【2】float add(float a,float b)
8、2400
9、4
10、12345
二、选择题
11、C
12、C
13、C
14、B
15、D
16、B
17、C
18、A
19、C
20、C
21、B
22、D
23、A
24、D
25、B
三、读程序填空
26、i:dec=-4,oct=177774,hex=fffc,unsigned=65532
27、【1】可以使同一输出语句中的输出宽度得以改变。
【2】##1
##囗2
##囗囗3
28、【1】n=1【2】2.0*s
29、-125=-5*5*5
30、【1】i==j【2】k!=i&&k!=j
31、【1】i=j=k【2】k=i【3】a[j]=max;a[k]=min;
32、8.#
33、-1
四、编程题
34、/*计算三角形面积*#include<stdio.h>
#include<math.h>
#define S(a,b,c)((a+b+c)/2)
#define AREA(a,b,c)sqrt(S(a,b,c)*(S(a,b,c)-a)*(S(a,b,c)-b)*(S(a,b,c)-c))
int main()
{int a=3,b=4,c=5;
printf("%f\n",AREA(a,b,c));
return 0;
}
35、#include <stdio.h>
int main()
{int a[5][5],i,j,n=1;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
a[i][j]=n++;
printf("The result is:\n");
for(i=0;i<5;i++)
{for(j=0;j<=i;j++)
printf("%4d",a[i][j]);
printf("\n");
return 0; }。