2022年烟台职业学院公共课《C语言》科目期末试卷A(有答案)

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

2022年烟台职业学院公共课《C语言》科目期末试卷A(有答案)
一、填空题
1、一个C语言源程序由若干函数组成,其中至少应含有一个________
2、执行下面程序段后,k的值是_______。

k=1;n=263;
do{k*=n%10;n/=10;} while(n);
3、下面add函数的功能是求两个参数的和,并将和值返回调用函数。

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

void add(float a,float b)
{float c;
c=a+b;
return c;
}
4、执行以下程序时,若从第一列开始输入数据,为使变量a=3、b=7、x=8.
5、y=71.82、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;
}
5、假设变量a和b均为整型,以下语句可以不借助任何变量把a、b中的值进行交换。

请填空。

a+=_______;b=a-_______;a-=_______;
6、C语言中的标识符可分为关键字、_______和_______3类。

7、设有宏定义如下:
#define MIN(x,y)(x)>(y)?(x):(y)
#define T(x,y,r)x*r*y/4则执行以下语句后,s1的值为_______,s2的值
为_______。

int a=1,b=3,c=5,s1,s2;
s1=MIN(a=b,b-a);
s2=T(a++,a*++b,a+b+c);
8、下面程序段的运行结果是_______。

chara[]="12345",*p;
int s=0;
for(p=a;*p!=\0';p++)
s=10*s+*p-'o';
printf("%d\n",s);
9、若有以下定义和语句,在程序中可通过指针数组p,用*(p[i]+j)等4种形式引用数组元素s[i][j],另3种形式分别是:_______、_______和_______。

(假设i、j已正确说明并赋值。


int s[10][6],*p[10];
for(i=0;i<10;i++)p[i]=s[i];
10、设x为无符号整数。

表达式x^(~(~0<<n)<<(p+1-n)))的作用是将x中从第p位开始的n位求反(1变0,0变1),其他位不变。

请按表达式的求值顺序写出分解步骤,并解释含义。

__________________________________
二、选择题
11、以下表达式值为3的是( )
A.16-13%10
B.2+3/2
C.14/3-2
D.(2+6)/(12-9)
12、已知字母A的ASCII码为十进制数65,且定义c2为字符型变量,则执行语句c2='A'+'6'-'3';后,c2中的值为( )。

A.D
B.68
C.不确定的值
D.C
13、C语言规定:在一个源程序中,main函数的位置( )
A.必须在最开始
B.必须在系统调用的库函数的后面
C.可以任意
D.必须在最后
14、以下叙述正确的是
A.在C程序中,main函数必须位于程序的最前面
B.C程序的每行中只能写一条语句
C.C语言本身没有输入输出语句
D.在对一个C程序进行编译的过程中,可以发现注释中的拼写错误
15、若用数组名作为函数调用的实参,则传递给形参的是()
A.数组的首地址
B.数组第一个元素的值
C.数组中全部元素的值
D.数组元素的个数
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、下列程序段不是死循环的是()。

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;
18、下面程序段的运行结果是()。

charc[]=\t\\\\owil\n";
printf("%d",strlen(C.);
A.14
B.3
C.9
D.字符串中有非法字符,输出值不确定
19、已有变量定义和函数调用语句:int a=25;print_value(&A.;下面函数的正确输出结果是。

void print_value(int*x)
{printf("%d\n",++*x);
}
A.23
B.24
C.25
D.26
20、下面程序段的运行结果是()
char str[]="ABC",*p=str;
printf("%d\n",*(p+3));
A.67
B.0
C.字符C的地址
D.字符C
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、下面程序段的功能是输出两个字符串中对应相等的字符,请选择填空()。

charx[]="programming";
char y[]="Fortran";
int i=0;
while(x[i]!='\o'&&.y[i]!='\o')
if(x[i]==y[i])printf("%c",【】);
else i++;
A.x[i++]
B.y[++i]
C.x[i]
D.y[i]
23、对两个数组a和b进行如下初始化:
char a[]="ABCDEF";charb[]={'A','B','C','D','E','F'};则以下叙述正确的是()。

A.a与b数组完全相同
B.a与b长度相同
C.a和b中都存放字符串
D.a的长度比b长
24、下面程序的功能是在输入的一系列正整数中求出最大者,输入0结束循环,请选择填空()。

#include <stdio.h>
int main()
{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
25、以下程序的运行结果是()。

#include <stdio.h>
int fun(int a,int B.
{if(a>B.return(a+B.;
else return(a-B.;
int main()
{int x=3,y=8,z=6,r;
r=fun(fun(x,y),2*z);
printf("%d\n",r);
return(0);
}
A.-16
B.-17
C.17
D.16
三、读程序填空
26、以下程序的运行结果是_______。

#include<stdio.h>
int main()
{int n=0;
n+=(n=10);
printf("%d\n",n);
return 0;
}
27、以下程序的输出结果是_______。

#include <stdio.h>
int main()
{int x=10;float pi=3.1416;
printf("(1)%d\n",x);
printf("(2)%6d\n",x);
printf("(3)%f\n",56.1);
printf("(4)%14fNn", pi);
printf("(5)%e\n",568.1);
printf("(6)%14e\n", pi);
printf("(7)%g\n", pi);
printf("(8)%12g\n", pi):
return 0;
}
28、函数yanghui能够按以下形式构成一个杨辉三角形。

请填空。

1
11
1 2 1
1 3
2 1
1 4 3
2 1
# include <stdio.h>
# define N 1
void yanghui(int a[] [N])
{ int i,j;
for(i=0;i<N;i++){a[i][1]=1;a[i][i]=1;}
for(_______;i<N;i++)
for(j=2;_______;j++) a[i][j]=_______+a[i-1][j];
}
29、函数f中的形参a为一个10×10的二维数组,n的值为5,以下程序的运行结果为_______。

void f(int a[10][10],int n)
{inti,j,k;
j=n/2+1;a[1][j]=1;i=1;
for(k=2;k<=n*n;k++)
{i=i-1;j=j+1;
if((i<1)&&(j>n))
{i=i+2;j=j-1;}
else
{if(i<1)i=n;
if(j>n)j=1;i
}
f(a[i][j]==0)a[i][j]=k;
else{i=i+2;j=j-1;a[i][j]=k;}
}
}
30、以下程序的功能是:输出x、y、z三个数中的最大者。

请填空。

#include<stdio.h>
int main()
{int x=4,y=6,z=7;
int_______;
if(_______)u=x:
else u=y;
if(_______)v=u;
else v=z;
printf("v=%d",v);
return 0;
}
31、下面程序用“顺序查找法”查找数组a中与x相等的第一个数。

请填空。

#include <stdio.h>
int main()
{int a[8]={25,57,48,37,12,92,86,33},i,x;
scanf("%d”,x);
for(i=0;i<8;i++)
if(x==a[i])
·{printf("Found!The index is:%d\n",--i);_______;}
if(_______)
printf("Can't found!");
return 0;
}
32、下面程序的运行结果是_______。

#include<stdio.h>
int main()
{int i,j;
for(i=4;i>=1;i--)
{for(j=1;j<=i;j++)putchar('#’);
for(j=1;j<=4-i;j++)putchar('*');
putchar(\n’);
}
return 0;
}
33、设有5个学生,每个学生考4门课,以下程序能检查这些学生有无考试不及格的课程。

若某一学生有一门或一门以上课程不及格,就输出该学生的序号(序号从0开始)和其全部课程成绩。

请填空。

#include <stdio.h>
int main()
{int score[5][4]={{62,87,67,95},{95,85,98,73},{66,92,81,69},
{78,56,90,99},{60,79,82,89}};
int(*p)[4],j,k,flag;
p=score;
for(j=0;j<5;j++)
{flag=0;
for(k=0;k<4;k++)
if(_______)flag=1;
if(flag==1)
{printf("No.%d is fail,scores are:\n",j);
for(k=0;k<4;k++)
printf("%5d",_______);
printf(\n");
}
return(0);
}
四、编程题
34、已有变量定义语句doublea=5.0,p;int n=5;和函数调用语句p=mypow (a,n);用以求a的n次方。

请编写double mypow(double x,inty)函数。

double mypow(double x,int y)
{
}
35、编写程序实现功能:读入两个运算数(datal和data2)及一个运算符(op),计算表达式datal op data2的值,其中op可以为十、一、*、/四个符号中的任一
种(用switch语句实现)。

参考答案
一、填空题
1、主函数(或main函数)
2、36
3、【1】void add(float a,float b)【2】float add(float a,float b)
4、a=3囗b=7x=8.5囗y=71.82c1=ADc2=a<回车>
(注:答案中的囗代表空格)
5、【1】b【2】b【3】b
6、【1】用户标识符【2】预定义标识符
7、【1】3【2】28
8、12345
9、【1】p[i][j]【2】(*(p+i))[j]【3】*(*(p+i)+j)
10、【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中的指定位数用异或求反
二、选择题
11、B
12、A
13、C
14、C
15、A
16、A
17、C
18、B
19、D
20、B
21、A
22、A
23、D
24、B
25、B
三、读程序填空
26、20
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、【1】i=1【2】j<=i-1【3】a[i-1][j-1]
29、打印5阶幻方:
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 31
11 18 25 2 9
30、【1】u,v【2】x>y【3】u>z
31、【1】break【2】i==8
32、####
###*
##**
#***
33、【1】*(*(p+j)+k)<60【2】*(*(p+j)+k)
四、编程题
34、double mypow(double x,int y)
{int i;double p;
p=1.0;
for(i=1;i<=y;++i)p=p*x;
return p;
}
35、#include <stdio.h>
#include<stdlib.h>
int main()
{float datal,data2,data3;
char op;
printf("\ nType in your expression:");
scanf("%f%c%f",8. datal,8. op,&. data2); switch(op) { case'+': data3=datal+data2;
break;
case'-': data3=datal-data2;
break;
case'*': data3=datal* data2;
break;
case'/': i
f(data2==0)
{printf("\ nDivision by zero!");
exit(1);}
data3=datal/data2;
break;
printf("This is %6.2f%c%6.2f=%6.2f\n", datal, op, data2, data3); return 0;
}。

相关文档
最新文档