2022年广东轻工职业技术学院公共课《C语言》科目期末试卷A(有答案)

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

2022年广东轻工职业技术学院公共课《C语言》科目期末试卷A(有
答案)
一、填空题
1、C语言源程序文件的后缀是;经过编译后,生成文件的后缀是;经过连接后,生成文件的后缀是
2、下面程序段是找出整数的所有因子。

请填空。

scanf("%d",&x);
i=1;for(;_______;)
{if(x%i==0)printf("%3d",i);
i++;
}
3、下面程序段的运行结果是_______。

x=2;
do{printf("*");x--;)while(!x==0);
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、设有一输入函数scanf("%d”,k);它不能使float类型变量k得到正确数值
的原因是_______未指明变量k的地址和_______格式控制符与变量类型不匹配。

6、若x和y都是double型变量,且x的初值为3.0,y的初值为2.0,则表达式.pow (y,fabs(x))的值为_______
7、下面程序段的运行结果是_______。

int i=5;char c[6]="abcd";
do{c[i]=c[i-1];}while(--i>0);
puts(c);
8、下面程序段的运行结果是_______。

char s[80],*sp="HELLO!";
sp=strcpy(s,sp);
s[0]='h';puts(sp);
9、以下程序段通过指针变量q,但不移动q,将如图所示连续动态存储单元的值,从第一个元素起依次输出到终端屏幕。

请填空。

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


for(k=0;k<10;k++) printf("%d,",_______); printf("\n");
10、设x的二进制数是11001101,若想通过x&y运算使x中的低4位不变,高4位清零,则y的二进制数是_______。

二、选择题
11、在C语言中,char型数据在内存中的存储形式是()。

A.补码
B.反码
C.原码
D.ASCII码
12、假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是( )
A.7
B.8
C.6
D.2
13、以下叙述正确的是
A.在C程序中,main函数必须位于程序的最前面
B.C程序的每行中只能写一条语句
C.C语言本身没有输入输出语句
D.在对一个C程序进行编译的过程中,可以发现注释中的拼写错误
14、一个C程序的执行是从()
A.本程序的main函数开始,到main函数结束
B.本程序的第一个函数开始,到本程序文件的最后一个函数结束
C.本程序的main函数开始,到本程序文件的最后一个函数结束
D.本程序的第一个函数开始,到本程序main函数结束
15、若用数组名作为函数调用的实参,则传递给形参的是()
A.数组的首地址
B.数组第一个元素的值
C.数组中全部元素的值
D.数组元素的个数
16、设有以下程序:
#include<stdio.h>
int main()
{char cl,c2,c3,c4,c5,c6;
scanf("%c%c%c%c",&c1,&c2,&c3,&c4);
c5=getchar();
c6=getchar();
putchar(c1);。

putchar(c2);
printf("%c%c\n",c5,c6);
return0;
}
若运行时从键盘输入数据:
abc<回车>
defg<回车>,则输出结果是()。

A.abcd
B.abde
C.abef
D.abfg
17、下面有关for循环的正确描述是()。

A.for循环只能用于循环次数已经确定的情况
B.for循环是先执行循环体语句,后判断表达式
C.在for循环中,不能用break 语句跳出循环体
D.for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来
18、以下不能对二维数组a进行正确初始化的语句是()。

A.int a[2][3]={0};
B.int a[][3]={{1,2},{0}};
C.int a[2][3]={{1,2},{3,4},{5,6}};
D.int a[][3]={1,2,3,4,5,6);
19、下面程序段的运行结果是()。

char s[6];s="abcd',printf("\"%s\"\n",s);
A."abcd"
B."abcd"
C.\Wabcd\"
D.编译出错
20、下面程序段的运行结果是()。

char*s="abcde";
s+=2;printf("%d',s);
A.cde
B.字符c
C.字符c的地址
D.无确定的输出结果
21、以下程序的运行结果是( )。

#include <stdio.h>
int main()
{int a,b,d=241;
a=d/100%9;
b=(-1)8&.8&(-1);
printf("%d,%d",a,B.;
return0;
}
A.6,1
B.2,1
C.6,0
D.2,0
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、下面程序段的运行结果是()。

charc[5]={'a',b',\o','c','\o');
printf("%s",C.;
A.'a''b'
B.ab
C.ab口c
D.ab口(其中口表示1个空格)
24、下面程序的功能是从键盘输入若干学号,然后输出学号中百位数字是3的学号(输入0时结束循环),请选择填空( ) 。

#include<stdio.h>
int main()
{ long int num;
scanf("%1d",&.num);
do
{if(【1】)printf("%1d",num);
scanf("% ld",8. num);
} while(! num==0);
return 0;
}
A) num%100/10==3 B) num/100%10==3
C) num%10/10==3 D) num/10%10==3
25、以下是有关汉诺塔问题的程序段,若在main函数中有调用语句hanoi(3,'A',B’,C.;则符合程序段运行结果的选项是()。

void move(char getone,char putone)
{printf("%c——>%c\n",getone,putone);
void hanoi(int n,char one,char two,char three)
{if(n==1)move(one,three);
else
{hanoi(n-1,one,three,two);
move(one,three);
hanoi(n-1,two,one,three);
}
}
A)A-->C B)A-->C C)A-->C D)A-->C
A-->B A-->B A-->B A-->B
C-->B C-->A C-->B C-->B
B-->A A-->B A-->C A-->C
C-->B B-->C B-->A A—->B
A-->C A-->C B-->C B-->C
A-->B A-->B A-->C A-->C
三、读程序填空
26、以下程序的运行结果是_______。

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

#include <stdio.h>
int main()
{inti=1;printf("##%*d\n",i,i);
i++;
printf("##%*d\n",i,i);
i++;
printf("##%*d\n",i,i);
return 0;
}
28、以下程序的运行结果是_______。

#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));
}
29、以下程序是应用递归算法求某数a 的平方根,请填空。

求平方根的迭代公式如下:
x1=12(x0+a x0)
#include<stdio.h>
#include <math.h>
double mysqrt (double a ,double xo )
{double x1,y ;x1=_______;
if (fabs (x1-x0)>0.00001)
y=mysqrt (_______);
else y=x1;
return y ;
int main()
{double x;
printf("Enter x:");
scanf("%If",8.x);
printf("The sqrt of %f=%f\n",x,mysqrt(x,1.0));
return(0);
}
30、若运行以下程序时输入: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;
}
31、当运行以下程序时,从键盘输入
girl<回车>
boy<回车>
则下面程序的运行结果是_______。

#include <stdio.h>
#include<string.h>
int main()
{char a[2][80],t;int i,j,m,n,l,max;for(i=0;i<=1;i++)
gets(a[i]);
t=a[0][0];
for(i=0;i<=1;i++)
{1=strlen(a[i]);
for(j=0;j<=1;j++)
if(a[i][j]>t)
{max=a[i][j];m=i;n=j;
}
printf("%c%d%d\n",max,m,n);
return 0;
}
32、当运行以下程序时,从键盘输入“一10<回车>”,则下面程序的运行结果是_______。

#include<stdio.h>
int main()
{int a,b,m=1,n=1;
scanf("%d%d”,&a,&b);
do
{if(a>0){m=2*n;b++;}
else{n=m+n;a+=2;b++;}
}while(a==b);
printf("m=%d n=%d",m,n);
return 0;
}
33、以下程序的运行结果是_______。

#include<stdio.h>
int main()
{int a[10]={19,23,44,17,37,28,49,36},*p;
p=a;
p+=3;
printf("%d\n",*p+3);
return(0);
}
四、编程题
34、用switch语句编程实现以下函数关系:
y={−1 (x<0)
0 (x=0)
1 (x>0)
35、已有变量定义语句doublea=5.0,p;int n=5;和函数调用语句p=mypow (a,n);用以求a的n次方。

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

double mypow(double x,int y)
{
}
参考答案
一、填空题
1、【1】.c【2】.obj【3】.exe
2、i<=x
3、**
4、a=3囗b=7x=8.5囗y=71.82c1=ADc2=a<回车>(注:答案中的囗代表空格)
5、【1】格式控制符与变量类型不匹配。

scanf 语句的正确形式应该是:scanf("%f",8.k);【2】未指明变量k的地址。

6、8.000000
7、aabcd
8、hELLO!
9、*(q+k)或q[k]
10、00001111
二、选择题
11、D
12、B
13、C
14、A
16、B
17、D
18、C
19、D
20、C
21、B
22、D
23、B
24、B
25、C
三、读程序填空
26、20
27、【1】可以使同一输出语句中的输出宽度得以改变。

【2】##1
##囗2
##囗囗3
28、FACT(5):120
FACT(1):1
FACT(-1):Error!
29、【1】(x0+a/x0)/2.0【2】a,x1
31、y12
32、m=4 n=2
33、20
四、编程题
34、#include <stdio.h>
int main()
{float x;int y;
printf(\n input x:");scanf("%f",8.x);switch(x<0)
{case 1:y=-1;break;
case 0:switch(x==0)
{case 1:y=0;
break;
default:y=1;
}
}
printf(\n y=%d',y);
return 0;
}
35、double mypow(double x,int y){int i;double p;
p=1.0;
for(i=1;i<=y;++i)p=p*x;return p;
}。

相关文档
最新文档