2022年安徽工业大学公共课《C语言》科目期末试卷A(有答案)

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

2022年安徽工业大学公共课《C语言》科目期末试卷A(有答案)
一、填空题
1、把int类型变量low中的低字节及变量high中的高字节放入变量s中的表达式是_______。

2、C语言源程序的基本单位是________
3、在C语言中,输入操作是由库函数________完成的,输出操作是由库函数
________完成的。

4、若有定义语句:int b=7;float a=2.5,c=4.7;则表达式a+(int)(b/3*(int)(a+c)/2)%4的值为_______
5、若有定义语句:int a=2,b=3;float x=3.5,y=2.5;则表达式(float)
(a+b)/2+(int)x%(int)y的值为_______
6、设main函数的说明为:int main(int argc,char*argv[]),且有命令行为:FILE1123<回车>,则argc的值是_______,argv[1]的值是_______。

7、函数swap(int x,inty)可完成对x和y值的交换。

在运行调用函数中的如下语句后,a[0]和a[1]的值分别为_______,原因是_______。

a[o]=1;a[1]=2;
swap(a[o],a[1]);
8、为建立如图10-5所示的存储结构(即每个结点两个域,data是数据域,next是指向结点的指针域),请将定义补充完整。

struct s{char data;
_______
}node;
9、设有以下定义和语句,请在printf语句的_______中填上能够正确输出的变量及相应的格式说明。

union
{int n;doublex;}num;
num.n=10;
num.x=10.5;
printf("_______",_______);
10、设有以下宏定义:
#define WIDTH 80
#define LENGTH WIDTH+40
则执行赋值语句:v=LENGTH*20;(v为int型变量)后,v的值是_______。

二、选择题
11、以下不正确的叙述是( )。

A.在C程序中,逗号运算符的优先级最低
B.在C程序中,APH和aph是两个不同的变量
C.若a和b类型相同,在执行了赋值表达式a=b后b中的值将放入a中,而b中的值不变
D.当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值
12、下面4个选项中,是C语言关键字的选项是( )。

A.auto
B. switch
C. signed
D. if
Enum typedef union struct
include continue scanf type
13、以下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
14、已有如下定义和输入语句,若要求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<回车>
15、以下不正确的定义语句是()。

A.double x[5]={2.0,4.0,6.0,8.0,10.0};
B.int y[5]={0,1,3,5,7,9};
C.char cl[]={'1','2','3','4','5'};
D.charc2[]={'\x10','\xa','\x8'};
16、C语言规定:在一个源程序中,main函数的位置( )
A.必须在最开始
B.必须在系统调用的库函数的后面
C.可以任意
D.必须在最后
17、以下for循环的执行次数是()。

for(x=0,y=0;(y=123)&&(x<4);x++);
A.是无限循环
B.循环次数不定
C.执行4次
D.执行3次
18、在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是()
A.extern
B.register
C.auto
D.static
19、若有定义:inta[]={2,4,6,8,10,12,14,16,18,20,22,24},*q[4],k;则下面程序段的输出结果是()。

for(k=0;k<4;k++)
q[k]=&a[k*3];
printf("%d\n",q[3][0]);
A.8
B.16
C.20
D.输出项不合法,结果不确定
20、下面程序段的运行结果是()。

char pl[]="abcdefgh",*p=pl;
p+=3;
printf("%d\n",strlen(strcpy(p,"ABCD")));
A.8
B.12
C.4
D.7
21、以下程序的正确运行结果是()。

#include<stdio.h>
int f(int A.;
int main()
{int a=2,i;for(i=0;i<3;i++)
printf("%4d",f(A.);
return(0);
}
int f(int A.
{int b=0;static intc=3;
b++;c++;
return(a+b+C.;
}
A.7 7 7
B.7 10 13
C.7 9 11
D.7 8 9
22、下面程序的运行结果是()。

#include<stdio.h>
int main()
{char ch[7]={"12ab56"}; int i,s=0;
for(i=0;ch[i]>= '0'&&ch[i]<='9';i+=2)
s=10*s+ch[i]-'o';
printf("%d\n",s);
return0;
}
A.1
B.1256
C.12ab56
D.15
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>
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.无输出结果
25、下面程序的运行结果是()。

#include<stdio.h>
int main()
{int i,j,a=0;
for(i=0;i<2;i++)
{for(j=0;j<4;j++)
{if(j%2)break;
a++;
}
a++;
}
printf("%d\n",A.:
return 0;
}
A.4
B.5
C.6
D.7
三、读程序填空
26、以下程序的输出结果是_______。

#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;
}
27、已有定义int d=-2;执行以下语句后的输出结果是_______。

printf("*d(1)=%d*d(2)=%3d*d(3)=%-3d*\n",d,d,d);printf("*d(4)=%o*d(5)=%7o*d(6)=% 7o*\n",d,d,d);28、将以下含有switch语句的程序段改写成对应的含有非嵌套if语句的程序段。

请填空。

含有switch语句的程序段:
Int x,y,m;
y=(int)(x/10);
switch(y)
{case10:m=5;break;
case 9:m=4;break;
case 8:m=3;break;
case 7:m=2;break;
case 6;m=1;break;
default:m=0;
}
含有非嵌套if语句的程序段:
int x,m;
if(_______)m=5;
if(x<100)&&(x=90))m=4;
if(x<90)&&(x>=80))m=3;
if(×<80)&&(x>=70))m=2;
if(x<70)&&(x=60))m=1;
if(_______)_______;
29、以下程序可用来实现电路学中状态图的功能:若开关为开(用1表示)的状态,则应该将现有的状态取非(0→1、1→0);若开关为关的状态,则现有的状态保
持不变(状态值由用户输入)。

请填空。

#include<stdio.h>
int main()
{int flag,state;
printf("Enter a value of switch:");
scanf("%d",&flag);
printf("Enter a value for new state:");
scanf("%d",&state);
if(flag==1)
state=_______;
printf("Now value of state is:%d\n",state);
return 0;
}
30、下面程序的运行结果是_______。

#include<stdio.h>
int main()
{int y=2,a=1;
while(y--!=-1)
{do{a*=y;a++;}while(y-一);}
printf("%d,%d",a,y);
return 0;
}
31、以下程序的运行结果是_______,fun函数的作用是_______。

#include <stdio.h>
#include<math.h>
int fun(int y,int x)
{int z;
z=abs(x-y);
return(z);
}
int main()
{int a=-1,b=-5,c;
c=fun(a,b);
printf("%d',c);
return(0);
}
32、下面程序的运行结果是_______。

#include <stdio.h>
int main()
{int i=0;char a[]="abm",b[]="aqid",c[10];
while(a[i]!='\o'&&b[i]!='\o')
{if(a[i]>=b[i])c[i]=a[i]-32;
else c[i]=b[i]-32;
++i;
}
c[i]= '\o';
puts(c);
return 0;
}
33、若有以下输入(口表示空格),则下面程序的运行结果是_______。

15口12口4口8口20口9口2口6口5口12<回车>
#include <stdio.h>
int main()
{int a[10],i,j,k,t;
printf("Enter 10 integers:\n");
for(i=0;i< 10;i++)scanf("%d",a+i);
for(j=0;j<9;j++)
{k=j;
for(i=j+1;i<10;i++)if(*(a+i)>*(a+k))k=i;
t=a[j];*(a+j)=*(a+k);*(a+k)=t;
}
for(i=0;i<10;i++)printf((i%5)?"%4d":"\n%4d",*(a+i));
printf("\n");
return(0);
}
四、编程题
34、编写程序,从键盘输入6名学生的5门成绩,分别统计出每个学生的平均成绩。

35、编写程序,统计d输入的命令行中第二个参数所包含的英文字符个数。

参考答案
一、填空题
1、s=high& 0xff00| low&0x00ff
或s=high&.0177400|low&0377
或s=high&65280| low&255
2、函数
3、【1】scanf【2】printf
4、5.500000
5、3.500000
6、【1】4【2】1
【1】7、a[0]=1 a[1]=2
【2】单向值传递,不能返回交换后的值。

8、structs*next;
9、【1】%If【2】num.x
10、880
二、选择题
11、D
12、B
13、D
14、A
15、B
16、C
17、C
18、D
19、C
20、C
21、B
22、A
23、D
24、A
25、A
三、读程序填空
26、(1)10
(2)口口口囗10
(3)56.100000
(4)口口口口口口3.141600(5)5.68100e+02
(6)口口口3.14160e+00(7)3.1416
(8)口口口口囗囗3.1416(注:答案中的囗代表空格)
27、*d(1)=-2*d(2)=囗-2*d(3)=-2囗**d(4)=177776*d(5)=囗177776*d(6)=177776囗*
(注:答案中的囗代表空格)
28、【1】1【2】2【3】2
29、!state
30、m=1
31、【1】4
【2】计算两个数之差的绝对值,并将差值返回调用函数。

32、#&*8&%
33、20 15 12 12 9
8 6 5 4 2
四、编程题
34、#include<stdio.h>
int main()
{int i,j;
float g,sum,ave;
for(i=1;i<=6;i++)
{sum=0;for(j=1;j<=5;j++)
{scanf("%f",&g);
Sum+=g;
ave=sum/5;
printf("No.%d ave=%5.2f\n",i,ave);return 0;
}
35、#include <stdio.h>
#include <ctype.h>
int main(int argc,char*argv[])
{char*str;
int num=0;
if(argc==2)
{str=argv[1];
while(*str)
if(isalpha(*str++))num++;
printf("\nThe count is:%d.\n",num); }
return 0;
}。

相关文档
最新文档