2022年西南财经大学公共课《C语言》科目期末试卷B(有答案)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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、C语言中的标识符只能由3种字符组成,它们是_______、_______和_______
5、若有定义语句: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的值是_______。

6、设x为无符号整数。

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

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

__________________________________
7、鸡兔共有30只,脚共有90只,下面程序段是计算鸡兔各有多少只。

请填空。

for(x=0;x<=30;x++)
{y=30一x;
if(_______)printf("%d,%d\n",x,y);
}
8、在C语言中,二维数组元素在内存中的存放顺序是_______。

9、设有如下定义:
#define SWAP(T,X,Y){T=X;X=Y;Y=T;}
以下程序段将通过调用宏实现变量x和y内容的交换,请填空。

Double x=2.5,y=6.4,z;SWAP(_______);
10、以下程序段通过移动指针变量m,给如图9-7所示连续动态存储单元赋值。

请填空。

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


for(k=0;k<10;k++,m++)scanf("%d",_______);
二、选择题
11、设有说明语句:int k=7,x=12;则以下能使值为3的表达式是( )。

A..x%=(k%=5)
B..x%=(k-k%5)
C..x%=k-k%5
D..(x%=k)-(k%=5)
12、以下表达式值为3的是( )
A.16-13%10
B.2+3/2
C.14/3-2
D.(2+6)/(12-9)
13、一个C程序的执行是从()
A.本程序的main函数开始,到main函数结束
B.本程序的第一个函数开始,到本程序文件的最后一个函数结束
C.本程序的main函数开始,到本程序文件的最后一个函数结束
D.本程序的第一个函数开始,到本程序main函数结束
14、以下叙述不正确的是( )
A.一个C源程序可由一个或多个函数组成
B.一个C源程序必须包含一个main函数
C.C程序的基本组成单位是函数
D.在C程序中,注释说明只能位于一条语句的后面
15、下面程序段中有错误的行号是(每行代码前面的数字表示行号)。

1 int a[3]={1};
2 int i;
3 scanf("%d".8a);
4 for(i=1;i<3;i++) a[0]=a[0]+a[i]:
5 printf("a[0]=%d\n",a[0]);
A)1 B)4 C)5 D)3
16、设有以下程序:
#include<stdio.h>
int main()
{int a=201,b=012;
printf("%2d,%2d\n",a,B.;
return 0;
.}
程序执行后的输出结果是()。

A.01,12
B.201,10
C.01,10
D.20,01
17、若有以下定义和语句,则对a数组元素地址的正确引用为()。

int a[2][3],(*p)[3];
p=a;
A.*(p+2)
B.p[2]
C.p[1]+1
D.(p+1)+2
18、C语言规定,简单变量作为实参时,它和对应形参之间的数据传递方式是()
A.地址传递
B.单向值传递
C.由实参传给形参,再由形参传回给实参
D.由用户指定传递方式
19、设有程序段:
t=0;while(printf("*"))
{t++;if(t<3)break;
}
下面描述正确的是()。

A.其中循环控制表达式与0等价
B.其中循环控制表达式与'0'等价
C.其中循环控制表达式是不合法的
D.以上说法都不对
20、语句while(!E);中的表达式!E等价于()。

A.E==0
B.E!=1
C.E!=0
D.E==1
21、若w、x、y、z、m均为int型变量,则执行下面语句后的m值是( )。

w=1;x=2;y=3;z=4:
m=(w<x)?w:x;
m=(m<y)?m:y;
m=(m<z)?m:z;
A.1
B.2
C.3
D.4
22、有已排好序的字符串a,下面的程序是将字符串s中的每个字符按a中元素的规律插入到a中。

请选择填空。

#include<stdio.h>
int main()
{char a[20]="cehikngtw",
s[]="fbla";
inti,k,j;
for(k=0;s[k]!=\0';k++)
{ j=0;
while(s[k]>=a[j]& &a[]!=\0)j++;
for(i=strlen(a);i>=j;i--)[2];
a[j]=s[k];
puts(a);
return 0;
}
A)a[i]=a[i+1] B)a[i+1]=a[i] C)a[i]=a[i-1] D)a[i-1]=a[i]
23、下面程序段的运行结果是()。

int a[6],i;
for(i=1;i<6;i++)
{a[i]=9*(i-2+4*(i>3))%5;
printf("%3d",a[i]) ;
}
A)-4 0 4 0 4 B)-4 0 4 0 3 C)-4 0 4 4 3 D)-4 0 4 4 0
24、以下程序的运行结果是()。

#include <stdio.h>
int f(int x,int y)
{return(y-x)*x;}
int main()
{int a=3,b=4,c=5,d;
d=f(f(a,C.,f(a,B.+f(c,B.);
printf("%d\n",D.;
return(0);
}
A.-48
B.58
C.-58
D.47
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、以下printf语句中的负号的作用是_______,该程序的输出结果是_______。

#include<stdio.h>
int main()
{int x=12;
double a=3.1415926;
printf("%6d##\n",x);
printf("%一6d##\n",x);
printf("%14.101f##\n",a);
printf("%-14.101f##\n",a);
return 0;
}
28、以下程序的运行结果是_______,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);
}
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、下面程序的功能是计算1-3+5-7+…-99+101的值。

请填空。

#include<stdio.h>
int main()
{ int i,t=1,s=0;
for(i=1;i<=101;i+=2)
{[_______];s=s+t;_______;}
printf("%d\n",s);
return 0;
}
31、运行程序时若输入“32 25 20 23 35 52 87 22 48 30 0<回车>”,则下面程序的运行结果是_______。

#include<stdio.h>
int main()
{int a[4]={0},x,i;
scanf("%d”,8.x);
while(x!=0)
{if(x%5==0)a[1]+=2;
else if(x/10==2)a[2]+=x;
else a[3]+=1;
scanf("%d',8.x);
}
for(i=1;i<=3;i++)printf("%4d",a[i]);
return 0;
}
32、若运行以下程序时输入:1605<回车>,则程序的运行结果是_______。

#include <stdio.h>
int main()
{int t,h,m;
scanf("%d”,8&t);
h=(t/100)%12;
if(h==0)h=12;
printf("%d:",h); m=t%100;
if(m<10)printf("o);
printf("%d',m);
if(t<1200||t==2400)
printf("AM");
else printf("PM");
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、已知head指向双向链表的第一个结点。

链表中每个结点包含数据域(info)、后继元素指针域(next)和前趋元素指针域(pre)。

请编写函数print1用来从
头至尾输出这一双向链表。

35、设有一个unsignedlong型整数,现要分别将其前2个字节和后2个字节作为2
个unsigned int型整数输出(设一个int型数据占2个字节),试编一函数partition 实现上述要求。

要求在主函数中输入该long型整数,在函数partition中输出结果。

参考答案
一、填空题
1、a=3囗b=7x=8.5囗y=71.82c1=ADc2=a<回车>
(注:答案中的囗代表空格)
2、【1】编译【2】连接
3、【1】.c【2】.obj【3】.exe
4、【1】字母【2】数字【3】下划线
5、13.700000
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中的指定位数用异或求反
7、2*x+4*y==90
8、按行主顺序存放
9、z,x,y或z,y,x
10、m
二、选择题
11、D
12、B
13、A
14、D
15、D
16、B
17、C
18、B
19、B
20、A
21、A
22、B
23、C
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、【1】输出数据左对齐
【2】囗囗囗012##
12口囗囗囗##
囗囗3.141592600##
3.141592600囗囗##
(注:答案中的囗代表空格)
28、【1】4
【2】计算两个数之差的绝对值,并将差值返回调用函数。

29、-125=-5*5*5
30、【1】t=t*i【2】t=-t/i
31、8 45 4
32、4:05PM
33、20
四、编程题
34、#include<stdio.h>
#include <stdlib.h>
struct student
{int info;
struct student*pre;
struct student*next;
};
void print1(struct student*head)
{struct student*p;
printf("\n the linklist is:");
p=head;
if(head!=NULL)
do
{printf("%d",p->info);
p=p->next;
while(p!=NULL);
printf("\n");
}
35、void partition(unsigned long int num){union a
{unsigned int part[2];
unsigned long int w;
}n,*p;
p=&n;n.w=num;
printf("long int=%lx\n",num);
printf("low-part num=%0x,high-part num=%0x\n",p->part[0],p->part[1]);
int main(){unsigned long intx;x=0×23456789;partition(x);return 0;
}。

相关文档
最新文档